import java.awt.*;import java.awt.event.*;import java.io.*;/*JavaMorse 1.0b2Mathias Terreaux, 16/06/2000http://applescript.free.frmathias99@iname.comsi vous avez des commentaires sur JavaMorse n'hsitez pas..... */public class JavaMorse extends java.applet.Applet{	int[] listeRot = new int[26];	// liste rot	String ch;			// chaine d'entre	char[] chTabIn;		// chaine d'entre convertie en tableau	String chOut;		//chaine de sortie	String[] morseTab = new String [255];	// tableau de correspondance ascii/morse	int rotValue = 13;	// valeur par dfault du rot					// dclaration & init des lements de la fenetre	GridLayout mainGrid = new GridLayout (3, 1 , 5, 5);	TextArea texteEntree = new TextArea("",4,55);		// fenetre de saisie	TextArea texteSortie = new TextArea("",4,55);		// fenetre rsultat	Button demorser = new Button("Dmorser");  			// boutons de morsage	Button morser = new Button("Morser");  				// boutons de morsage	Button roter = new Button("Roter");  				// boutons de rotage	Choice choixRot = new Choice();  					// liste rot	Button valider = new Button("Valider");  			// validation du rsultat					public void init()	{		initMorseTab();	// appel de la mthode d'initialisation de tableau de correspondance morse						// affichage des differents elements dans la fenetre				add(texteEntree);											add(morser);												add(roter);				add(choixRot);				for (int i = 0 ; i < 26 ; i++)		// init du menu droulant des rotages (0 -> 25)			choixRot.addItem("" + i); 				choixRot.select(13);				add(demorser);				add(texteSortie);				add(valider);	}				public boolean action(Event evt, Object arg)  // saisie des actions (clic sur bouton...)	{		ch = (" " + texteEntree.getText()).toLowerCase();		// rcuperation fenetre saisie		chTabIn = ch.toCharArray();		chOut = "";		if (evt.target instanceof Button)  // si clic sur un bouton		{			if (arg == "Morser") morseText();			if (arg == "Roter") roteText(	);			if (arg == "Dmorser")			{				demorseText();			}			if (arg == "Valider") texteEntree.setText(texteSortie.getText());	// on passe la chaine rsultat dans la fenetre de saisie		}				if (evt.target instanceof Choice)	// selection d'un lement de la liste droulante			rotValue = choixRot.getSelectedIndex();				if (chOut != "") texteSortie.setText(chOut.trim());		return true; 			}			public void morseText() // mthode pour morser	{		chOut = ""; 		int pos ;				for (int i = 0 ; i < chTabIn.length ; i++) // on boucle dans la chaine  morser		{				pos = (int) chTabIn[i] ; 			chOut += morseTab[pos] + " " ;	// copie dans out du rsultat en morse		}	}			public void demorseText()	//mthode pour dmorser	{		int pos_space, old_pos_space = 0, j ;		/* 		[old_]pos_space : position des espaces dans la chaine.		 sera consider comme un seul charactere, l'ensemble des points/traits compris entre 2 espaces (entre old_pos_space et pos_space)		*/		String temp ;		boolean fini = false ;		ch += " ";		ch = ch.replace('','.');		chTabIn = ch.toCharArray();						while (old_pos_space <= chTabIn.length && old_pos_space != -1) 		{			pos_space = ch.indexOf (" ",old_pos_space+1) ;			if ((pos_space - old_pos_space) == 1)				chOut += " ";							temp = "" ;			for(int i = old_pos_space + 1 ; i < pos_space ; i++)				temp+=chTabIn[i] ; // temp quivaut  1 charactere ( "..-" par exemple)							j = 0;			fini = false ;			chOut += (char)morse(temp) ;			old_pos_space = pos_space ;		}	}			public int morse(String m)		// recherche d'un charactere morse dans morseTab, renvoie son equivalent ascii	{		for (int i = 254 ; i > 0 ; i--) 			if (m.equals(morseTab[i]))				return i;		return 0;	}			public void roteText()	//mthode pour roter	{		chOut = "";		int ascii ;		for (int i = 0 ; i < ch.length() ; i++)					{			// boucle de remplacement des charactres (en fonction de leur code ASCII)			ascii = (int) chTabIn[i];			if (((ascii >= (65 - 26 + rotValue)) && (ascii <= (90 - rotValue)))||((ascii >= (97 - 26 + rotValue)) && (ascii <= (122 - rotValue)))) 				chOut  += (char) (ascii + rotValue) ;			else if ((ascii >= 65 && ascii <= 90)||(ascii >= 97 && ascii <= 122))				chOut += (char) (ascii - 26 + rotValue) ;			else chOut += chTabIn[i];		}	}			public void initMorseTab()	{		for (int i = 0 ; i < 255 ; i++)			morseTab[i] = " ";					morseTab[97] = ".-";		morseTab[98] = "-...";		morseTab[99] = "-.-.";		morseTab[100] = "-..";		morseTab[101] = ".";		morseTab[102] = "..-.";		morseTab[103] = "--.";		morseTab[104] = "....";		morseTab[105] = "..";		morseTab[106] = ".---";		morseTab[107] = "-.-";		morseTab[108] = ".-..";		morseTab[109] = "--";		morseTab[110] = "-.";		morseTab[111] = "---";		morseTab[112] = ".--.";		morseTab[113] = "--.-";		morseTab[114] = ".-.";		morseTab[115] = "...";		morseTab[116] = "-";		morseTab[117] = "..-";		morseTab[118] = "...-";		morseTab[119] = ".--";		morseTab[120] = "-..-";		morseTab[121] = "-.--";		morseTab[122] = "--..";		morseTab[48] = "-----";		morseTab[49] = ".----";		morseTab[50] = "..---";		morseTab[51] = "...--";		morseTab[52] = "....-";		morseTab[53] = ".....";		morseTab[54] = "-....";		morseTab[55] = "--...";		morseTab[56] = "---..";		morseTab[57] = " ----.";		morseTab[44] = "--..--";		morseTab[45] = "..--.-";		morseTab[46] = ".-.-.-";		morseTab[59] = "-.-.-.";		morseTab[58] = "---...";		morseTab[34] = ".-..-.";		morseTab[40] = "-.--.";		morseTab[41] = "---.-";		morseTab[61] = "-...-";		morseTab[43] = ".-.-";		morseTab[42] = "-..-";		morseTab[47] = "-..-.";		morseTab[63] = "..--..";	}	}