/* * This is a programm to translate latin letters, words, sentences, books and so on, to morse or written morse or backwards. * * Marcel Michael Kapfer * * GPL v3.0 * * 2014 * * Version: 1.0.0 * */ package de.marcel_kapfer.c.morseconverter; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JTextArea; import javax.swing.JLabel; import javax.swing.JRadioButton; import javax.swing.JButton; import javax.swing.JMenu; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.ButtonGroup; import javax.swing.JCheckBoxMenuItem; import java.awt.*; import java.awt.datatransfer.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing.JScrollPane; import javax.swing.JPopupMenu; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class Morse extends JFrame { /** * */ private static final long serialVersionUID = -4342211364299252760L; private JPanel contentPane; private JTextArea tfOutput; private JTextArea tfInput; private JRadioButton rdbtnwmll; private JRadioButton rdbtnllwm; private JRadioButton rdbtnmll; private JRadioButton rdbtnllm; private JButton btnConvert; private JButton btnSelectInput; private final ButtonGroup buttonGroup = new ButtonGroup(); private JCheckBoxMenuItem chckbxmntmClipboardAutomatic; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Morse frame = new Morse(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public Morse() { setResizable(false); setTitle("Morse Converter"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 792, 443); contentPane = new JPanel(); contentPane.setBackground(new Color(255, 255, 255)); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JMenuBar menuBar = new JMenuBar(); menuBar.setBackground(new Color(51, 102, 255)); menuBar.setBorderPainted(false); menuBar.setBounds(0, 0, 820, 21); contentPane.add(menuBar); JMenu mnMain = new JMenu("Main Menu"); mnMain.setBackground(new Color(255, 255, 255)); menuBar.add(mnMain); JMenuItem mntmAbout = new JMenuItem("About"); mntmAbout.setBackground(new Color(255, 255, 255)); mntmAbout.setToolTipText("Information about the Software"); mntmAbout.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { About.main(null); } }); mnMain.add(mntmAbout); JMenuItem mntmBug = new JMenuItem("Bug"); mntmBug.setBackground(new Color(255, 255, 255)); mntmBug.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Bug.main(null); } }); mntmBug.setToolTipText("Information about handling a bug"); mnMain.add(mntmBug); JMenuItem mntmHowTo = new JMenuItem("How to"); mntmHowTo.setBackground(new Color(255, 255, 255)); mntmHowTo.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { HowTo.main(null); } }); mntmHowTo.setToolTipText("Information about how to use the software"); mnMain.add(mntmHowTo); JMenuItem mntmMissingCode = new JMenuItem("Missing Code"); mntmMissingCode.setBackground(new Color(255, 255, 255)); mntmMissingCode .setToolTipText("Information about handling a missing code"); mnMain.add(mntmMissingCode); JMenuItem mntmExit = new JMenuItem("Exit"); mntmExit.setBackground(new Color(255, 255, 255)); mntmExit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setVisible(false); dispose(); } }); mnMain.add(mntmExit); mntmMissingCode.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { MissingCode.main(null); } }); JMenu mnClipboard = new JMenu("Clipboard"); mnClipboard.setBackground(new Color(255, 255, 255)); menuBar.add(mnClipboard); JMenuItem mntnPaste = new JMenuItem("Paste from Clipboard"); mntnPaste.setBackground(new Color(255, 255, 255)); mntnPaste .setToolTipText("Paste the text from your Clipboard into the input field"); mntnPaste.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { onPaste(tfInput); } }); mnClipboard.add(mntnPaste); JMenuItem mntmCopy = new JMenuItem("Copy into Clipboard"); mntmCopy.setBackground(new Color(255, 255, 255)); mntmCopy.setToolTipText("Copy the text from the output field into your clipboard"); mntmCopy.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { onCopy(tfOutput); } }); mnClipboard.add(mntmCopy); chckbxmntmClipboardAutomatic = new JCheckBoxMenuItem( "Copy automatically into Clipboard"); chckbxmntmClipboardAutomatic.setBackground(new Color(255, 255, 255)); chckbxmntmClipboardAutomatic .setToolTipText("Copy the text form the output field automatically into your clipboard"); mnClipboard.add(chckbxmntmClipboardAutomatic); JScrollPane scrollPaneInput = new JScrollPane(); scrollPaneInput.setBounds(12, 60, 758, 140); contentPane.add(scrollPaneInput); tfInput = new JTextArea(); tfInput.setToolTipText("Enter here your text"); scrollPaneInput.setViewportView(tfInput); tfInput.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { } @Override public void keyReleased(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { ChooseProcess(); } } @Override public void keyTyped(KeyEvent e) { } }); tfInput.setLineWrap(true); JPopupMenu popupMenuIp = new JPopupMenu(); addPopup(tfInput, popupMenuIp); JMenuItem mntmIpPaste = new JMenuItem("Paste from Clipboard"); mntmIpPaste .setToolTipText("Paste the text from your Clipboard into the input field"); mntmIpPaste.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { onPaste(tfInput); } }); popupMenuIp.add(mntmIpPaste); JMenuItem mntnIpSelect = new JMenuItem("Select text"); mntnIpSelect.setToolTipText("Select the whole text"); mntnIpSelect.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tfInput.requestFocus(); tfInput.selectAll(); } }); popupMenuIp.add(mntnIpSelect); JMenuItem mntmIpDelete = new JMenuItem("Delete text"); mntmIpDelete.setToolTipText("Delete the whole text"); mntmIpDelete.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tfInput.setText(null); } }); popupMenuIp.add(mntmIpDelete); JLabel lblEnterYourText = new JLabel("Enter your text:"); lblEnterYourText.setBackground(new Color(255, 255, 255)); lblEnterYourText.setBounds(10, 33, 111, 15); contentPane.add(lblEnterYourText); rdbtnwmll = new JRadioButton("writtenMorse to Latin Letters"); rdbtnwmll.setBackground(new Color(255, 255, 255)); rdbtnwmll .setToolTipText("Convert writtenMorse into normal latin letters"); buttonGroup.add(rdbtnwmll); rdbtnwmll.setBounds(12, 208, 250, 23); contentPane.add(rdbtnwmll); rdbtnllwm = new JRadioButton("Latin Letters to writtenMorse"); rdbtnllwm.setBackground(new Color(255, 255, 255)); rdbtnllwm .setToolTipText("Convert normal latin letters into writtenMorse"); buttonGroup.add(rdbtnllwm); rdbtnllwm.setBounds(266, 208, 250, 23); contentPane.add(rdbtnllwm); rdbtnmll = new JRadioButton("Morse to Latin Letters"); rdbtnmll.setBackground(new Color(255, 255, 255)); rdbtnmll.setToolTipText("Convert normal morse code into normal latin letters"); buttonGroup.add(rdbtnmll); rdbtnmll.setBounds(12, 235, 250, 23); contentPane.add(rdbtnmll); rdbtnllm = new JRadioButton("Latin Letters to Morse"); rdbtnllm.setBackground(new Color(255, 255, 255)); rdbtnllm.setToolTipText("convert normal latin letters into normal morse code"); buttonGroup.add(rdbtnllm); rdbtnllm.setBounds(266, 235, 250, 23); contentPane.add(rdbtnllm); btnConvert = new JButton("Convert"); btnConvert.setForeground(new Color(255, 255, 255)); btnConvert.setBackground(new Color(51, 102, 255)); btnConvert .setToolTipText("Convert the insert text to the choosen code"); btnConvert.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ChooseProcess(); } }); btnConvert.setBounds(612, 218, 160, 25); contentPane.add(btnConvert); JScrollPane scrollPaneOutput = new JScrollPane(); scrollPaneOutput.setBounds(12, 266, 758, 140); contentPane.add(scrollPaneOutput); tfOutput = new JTextArea(); tfOutput.setToolTipText("This is the output text field"); scrollPaneOutput.setViewportView(tfOutput); tfOutput.setEditable(false); tfOutput.setLineWrap(true); JPopupMenu popupMenuOp = new JPopupMenu(); addPopup(tfOutput, popupMenuOp); JMenuItem mntmOpClipboardCopy = new JMenuItem("Copy into Clipboard"); mntmOpClipboardCopy.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { onCopy(tfOutput); } }); popupMenuOp.add(mntmOpClipboardCopy); JMenuItem mntmOpSelect = new JMenuItem("Select Text"); mntmOpSelect.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tfOutput.requestFocus(); tfOutput.selectAll(); } }); popupMenuOp.add(mntmOpSelect); btnSelectInput = new JButton("Select Input Text"); btnSelectInput.setForeground(new Color(255, 255, 255)); btnSelectInput.setBackground(new Color(51, 102, 255)); btnSelectInput.setToolTipText("Select the whole text of the input box"); btnSelectInput.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tfInput.requestFocus(); tfInput.selectAll(); btnSelectInput.setVisible(false); } }); btnSelectInput.setBounds(612, 28, 158, 25); btnSelectInput.setVisible(false); contentPane.add(btnSelectInput); } /* * Choose the convert process */ private void ChooseProcess() { if (rdbtnwmll.isSelected()) { tfOutput.setText("Process not available"); WmLl(); } else if (rdbtnllwm.isSelected()) { LlWm(); } else if (rdbtnmll.isSelected()) { MLl(); } else if (rdbtnllm.isSelected()) { LlM(); } else { tfOutput.setText("Please select a convert process"); rdbtnwmll.requestFocus(); } } /* * Tasks to do after the converting process */ private void After() { tfOutput.requestFocus(); tfOutput.selectAll(); btnSelectInput.setVisible(true); if (chckbxmntmClipboardAutomatic.isSelected()) { onCopy(tfOutput); } } /* * Code for converting latin letters into written morse */ private void LlWm() { try { // Variables StringBuffer input = new StringBuffer(); input = input.replace(0, input.length(), tfInput.getText() .toUpperCase()); StringBuffer output = new StringBuffer(); if (input.toString().equals("")) { tfOutput.setText("Please enter at least one character"); After(); } else if (input.toString().equals("LETTERSPACE")) { tfOutput.setText("#"); After(); } else if (input.toString().equals("END OF WORK")) { tfOutput.setText("000101"); After(); } else if (input.toString().equals("ERROR")) { tfOutput.setText("00000000"); After(); } else if (input.toString().equals("STARTING SIGNAL")) { tfOutput.setText("10101"); After(); } else if (input.toString().equals("ENDING SIGNAL")) { tfOutput.setText("01010"); After(); } else if (input.toString().equals("UNDERSTOOD")) { tfOutput.setText("00010"); After(); } else if (input.toString().equals("WAIT")) { tfOutput.setText("01000"); After(); } else if (input.toString().equals("SOS")) { tfOutput.setText("000111000"); After(); } else if (input.toString().equals("LETTER SPACE")) { tfOutput.setText("#"); After(); } else if (input.toString().equals("WORD SPACE")) { tfOutput.setText("+"); After(); } else { for (int c = input.length(); c > 0; c--) { if (input.toString().startsWith(" ")) { output.append("+"); input.delete(0, 1); } else if (input.toString().startsWith("A")) { output.append("01#"); input.delete(0, 1); } else if (input.toString().startsWith("B")) { output.append("1000#"); input.delete(0, 1); } else if (input.toString().startsWith("C")) { output.append("1010#"); input.delete(0, 1); } else if (input.toString().startsWith("D")) { output.append("100#"); input.delete(0, 1); } else if (input.toString().startsWith("E")) { output.append("0#"); input.delete(0, 1); } else if (input.toString().startsWith("F")) { output.append("0010#"); input.delete(0, 1); } else if (input.toString().startsWith("G")) { output.append("110#"); input.delete(0, 1); } else if (input.toString().startsWith("H")) { output.append("0000#"); input.delete(0, 1); } else if (input.toString().startsWith("I")) { output.append("00#"); input.delete(0, 1); } else if (input.toString().startsWith("J")) { output.append("0111#"); input.delete(0, 1); } else if (input.toString().startsWith("K")) { output.append("101#"); input.delete(0, 1); } else if (input.toString().startsWith("L")) { output.append("0100#"); input.delete(0, 1); } else if (input.toString().startsWith("M")) { output.append("11#"); input.delete(0, 1); } else if (input.toString().startsWith("N")) { output.append("10#"); input.delete(0, 1); } else if (input.toString().startsWith("O")) { output.append("111#"); input.delete(0, 1); } else if (input.toString().startsWith("P")) { output.append("0110#"); input.delete(0, 1); } else if (input.toString().startsWith("Q")) { output.append("1101#"); input.delete(0, 1); } else if (input.toString().startsWith("R")) { output.append("010#"); input.delete(0, 1); } else if (input.toString().startsWith("S")) { output.append("000#"); input.delete(0, 1); } else if (input.toString().startsWith("T")) { output.append("1#"); input.delete(0, 1); } else if (input.toString().startsWith("U")) { output.append("001#"); input.delete(0, 1); } else if (input.toString().startsWith("V")) { output.append("0001#"); input.delete(0, 1); } else if (input.toString().startsWith("W")) { output.append("011#"); input.delete(0, 1); } else if (input.toString().startsWith("X")) { output.append("1001#"); input.delete(0, 1); } else if (input.toString().startsWith("Y")) { output.append("1011#"); input.delete(0, 1); } else if (input.toString().startsWith("Z")) { output.append("1100#"); input.delete(0, 1); } else if (input.toString().startsWith("0")) { output.append("11111#"); input.delete(0, 1); } else if (input.toString().startsWith("1")) { output.append("01111#"); input.delete(0, 1); } else if (input.toString().startsWith("2")) { output.append("00111#"); input.delete(0, 1); } else if (input.toString().startsWith("3")) { output.append("00011#"); input.delete(0, 1); } else if (input.toString().startsWith("4")) { output.append("00001#"); input.delete(0, 1); } else if (input.toString().startsWith("5")) { output.append("00000#"); input.delete(0, 1); } else if (input.toString().startsWith("6")) { output.append("10000#"); input.delete(0, 1); } else if (input.toString().startsWith("7")) { output.append("11000#"); input.delete(0, 1); } else if (input.toString().startsWith("8")) { output.append("11100#"); input.delete(0, 1); } else if (input.toString().startsWith("9")) { output.append("11110#"); input.delete(0, 1); } else if (input.toString().startsWith("Ä")) { output.append("0101#"); input.delete(0, 1); } else if (input.toString().startsWith("Ö")) { output.append("1110#"); input.delete(0, 1); } else if (input.toString().startsWith("Ü")) { output.append("0011#"); input.delete(0, 1); } else if (input.toString().startsWith("ß")) { output.append("00011000#"); input.delete(0, 1); } else if (input.toString().startsWith(".")) { output.append("010101#"); input.delete(0, 1); } else if (input.toString().startsWith(",")) { output.append("110011#"); input.delete(0, 1); } else if (input.toString().startsWith(":")) { output.append("111000#"); input.delete(0, 1); } else if (input.toString().startsWith(";")) { output.append("101010#"); input.delete(0, 1); } else if (input.toString().startsWith("?")) { output.append("001100#"); input.delete(0, 1); } else if (input.toString().startsWith("!")) { output.append("101011#"); input.delete(0, 1); } else if (input.toString().startsWith("-")) { output.append("100001#"); input.delete(0, 1); } else if (input.toString().startsWith("_")) { output.append("001101#"); input.delete(0, 1); } else if (input.toString().startsWith("(")) { output.append("10110#"); input.delete(0, 1); } else if (input.toString().startsWith(")")) { output.append("101101#"); input.delete(0, 1); } else if (input.toString().startsWith("=")) { output.append("10001#"); input.delete(0, 1); } else if (input.toString().startsWith("+")) { output.append("01010#"); input.delete(0, 1); } else if (input.toString().startsWith("/")) { output.append("10010#"); input.delete(0, 1); } else if (input.toString().startsWith("@")) { output.append("011010#"); input.delete(0, 1); } else if (input.toString().startsWith("'")) { output.append("011110#"); input.delete(0, 1); } else if (input.toString().startsWith("$")) { output.append("0001001#"); input.delete(0, 1); } else { tfOutput.setText("Code not listed or wrong."); } } if (output.toString().endsWith("#") && (output.toString().equals("#") == false)) { output.delete(output.length() - 1, output.length()); } tfOutput.setText(output.toString()); After(); } } catch (Exception e) { tfOutput.setText("Some error occured. I'm sorry!"); } } /* * Code for converting writtenMorse to latin letters */ private void WmLl() { try { // Variables String input; StringBuffer output = new StringBuffer(); input = tfInput.getText().toUpperCase() + "#"; StringBuffer inputToSign = new StringBuffer(input); while (inputToSign.toString().equals("#") == false) { int d = 0; boolean signFull = true; StringBuffer sign = new StringBuffer(); while (signFull) { if (inputToSign.toString().charAt(d) == '+' || inputToSign.toString().charAt(d) == '#') { if (d == 0) { if (inputToSign.toString().startsWith("+")) { output.append(" "); } inputToSign.deleteCharAt(0); } else { sign.replace(0, sign.length(), inputToSign .toString().substring(0, d)); inputToSign.delete(0, d); signFull = false; } } else { d++; } } if (input.equals("°")) { break; } else if (sign.toString().equals("01")) { output.append("A"); } else if (sign.toString().equals("1000")) { output.append("B"); } else if (sign.toString().equals("1010")) { output.append("C"); } else if (sign.toString().equals("100")) { output.append("D"); } else if (sign.toString().equals("0")) { output.append("E"); } else if (sign.toString().equals("0010")) { output.append("F"); } else if (sign.toString().equals("110")) { output.append("G"); } else if (sign.toString().equals("0000")) { output.append("H"); } else if (sign.toString().equals("00")) { output.append("I"); } else if (sign.toString().equals("0111")) { output.append("J"); } else if (sign.toString().equals("101")) { output.append("K"); } else if (sign.toString().equals("0100")) { output.append("L"); } else if (sign.toString().equals("11")) { output.append("M"); } else if (sign.toString().equals("10")) { output.append("N"); } else if (sign.toString().equals("111")) { output.append("O"); } else if (sign.toString().equals("0110")) { output.append("P"); } else if (sign.toString().equals("1101")) { output.append("Q"); } else if (sign.toString().equals("010")) { output.append("R"); } else if (sign.toString().equals("000")) { output.append("S"); } else if (sign.toString().equals("1")) { output.append("T"); } else if (sign.toString().equals("001")) { output.append("U"); } else if (sign.toString().equals("0001")) { output.append("V"); } else if (sign.toString().equals("011")) { output.append("W"); } else if (sign.toString().equals("1001")) { output.append("X"); } else if (sign.toString().equals("1011")) { output.append("Y"); } else if (sign.toString().equals("1100")) { output.append("Z"); } else if (sign.toString().equals("11111")) { output.append("0 (zero)"); } else if (sign.toString().equals("01111")) { output.append("1"); } else if (sign.toString().equals("00111")) { output.append("2"); } else if (sign.toString().equals("00011")) { output.append("3"); } else if (sign.toString().equals("00001")) { output.append("4"); } else if (sign.toString().equals("00000")) { output.append("5"); } else if (sign.toString().equals("10000")) { output.append("6"); } else if (sign.toString().equals("11000")) { output.append("7"); } else if (sign.toString().equals("11100")) { output.append("8"); } else if (sign.toString().equals("11110")) { output.append("9"); } else if (sign.toString().equals("0101")) { output.append("Ä"); } else if (sign.toString().equals("1110")) { output.append("Ö"); } else if (sign.toString().equals("0011")) { output.append("Ü"); } else if (sign.toString().equals("00011000")) { output.append("ß"); } else if (sign.toString().equals("1111")) { output.append("CH"); } else if (sign.toString().equals("010101")) { output.append("."); } else if (sign.toString().equals("110011")) { output.append(","); } else if (sign.toString().equals("111000")) { output.append(":"); } else if (sign.toString().equals("101010")) { output.append(";"); } else if (sign.toString().equals("001100")) { output.append("?"); } else if (sign.toString().equals("101011")) { output.append("!"); } else if (sign.toString().equals("100001")) { output.append("-"); } else if (sign.toString().equals("001101")) { output.append("_"); } else if (sign.toString().equals("10110")) { output.append("("); } else if (sign.toString().equals("101101")) { output.append(")"); } else if (sign.toString().equals("011110")) { output.append("'"); } else if (sign.toString().equals("10001")) { output.append("="); } else if (sign.toString().equals("01010")) { output.append("+ or End of the signal"); } else if (sign.toString().equals("10010")) { output.append("/"); } else if (sign.toString().equals("011010")) { output.append("@"); } else if (sign.toString().equals("10101")) { output.append("Begin of the signal"); } else if (sign.toString().equals("10001")) { output.append("Wait"); } else if (sign.toString().equals("00010")) { output.append("Understood"); } else if (sign.toString().equals("000101")) { output.append("End of work"); } else if (sign.toString().equals("000111000")) { output.append("SOS"); } else if (sign.toString().equals("00000000")) { output.append("Error"); } else { tfOutput.setText("Code not listed or wrong."); } } tfOutput.setText(output.toString()); After(); } catch (Exception e) { tfOutput.setText("Some error occured. I'm sorry!"); } } /* * Code for converting normal letters into morse code */ private void LlM() { try { // Variables StringBuffer input = new StringBuffer(); input = input.replace(0, input.length(), tfInput.getText() .toUpperCase()); StringBuffer output = new StringBuffer(); if (input.toString().equals("")) { tfOutput.setText("Please enter at least one character"); After(); } else if (input.toString().equals("LETTERSPACE")) { tfOutput.setText(" "); After(); } else if (input.toString().equals("END OF WORK")) { tfOutput.setText("...-.-"); After(); } else if (input.toString().equals("ERROR")) { tfOutput.setText("........"); After(); } else if (input.toString().equals("STARTING SIGNAL")) { tfOutput.setText("-.-.-"); After(); } else if (input.toString().equals("ENDING SIGNAL")) { tfOutput.setText(".-.-."); After(); } else if (input.toString().equals("UNDERSTOOD")) { tfOutput.setText("...-."); After(); } else if (input.toString().equals("WAIT")) { tfOutput.setText(".-..."); After(); } else if (input.toString().equals("SOS")) { tfOutput.setText("...---..."); After(); } else if (input.toString().equals("LETTER SPACE")) { tfOutput.setText(" "); After(); } else if (input.toString().equals("WORD SPACE")) { tfOutput.setText(" "); After(); } else { for (int c = input.length(); c > 0; c--) { if (input.toString().startsWith(" ")) { output.append(" "); input.delete(0, 1); } else if (input.toString().startsWith("A")) { output.append(".- "); input.delete(0, 1); } else if (input.toString().startsWith("B")) { output.append("-... "); input.delete(0, 1); } else if (input.toString().startsWith("C")) { output.append("-.-. "); input.delete(0, 1); } else if (input.toString().startsWith("D")) { output.append("-.. "); input.delete(0, 1); } else if (input.toString().startsWith("E")) { output.append(". "); input.delete(0, 1); } else if (input.toString().startsWith("F")) { output.append("..-. "); input.delete(0, 1); } else if (input.toString().startsWith("G")) { output.append("--. "); input.delete(0, 1); } else if (input.toString().startsWith("H")) { output.append(".... "); input.delete(0, 1); } else if (input.toString().startsWith("I")) { output.append(".. "); input.delete(0, 1); } else if (input.toString().startsWith("J")) { output.append(".--- "); input.delete(0, 1); } else if (input.toString().startsWith("K")) { output.append("-.- "); input.delete(0, 1); } else if (input.toString().startsWith("L")) { output.append(".-.. "); input.delete(0, 1); } else if (input.toString().startsWith("M")) { output.append("-- "); input.delete(0, 1); } else if (input.toString().startsWith("N")) { output.append("-. "); input.delete(0, 1); } else if (input.toString().startsWith("O")) { output.append("--- "); input.delete(0, 1); } else if (input.toString().startsWith("P")) { output.append(".--. "); input.delete(0, 1); } else if (input.toString().startsWith("Q")) { output.append("--.- "); input.delete(0, 1); } else if (input.toString().startsWith("R")) { output.append(".-. "); input.delete(0, 1); } else if (input.toString().startsWith("S")) { output.append("... "); input.delete(0, 1); } else if (input.toString().startsWith("T")) { output.append("- "); input.delete(0, 1); } else if (input.toString().startsWith("U")) { output.append("..- "); input.delete(0, 1); } else if (input.toString().startsWith("V")) { output.append("...- "); input.delete(0, 1); } else if (input.toString().startsWith("W")) { output.append(".-- "); input.delete(0, 1); } else if (input.toString().startsWith("X")) { output.append("-..- "); input.delete(0, 1); } else if (input.toString().startsWith("Y")) { output.append("-.-- "); input.delete(0, 1); } else if (input.toString().startsWith("Z")) { output.append("--.. "); input.delete(0, 1); } else if (input.toString().startsWith("0")) { output.append("----- "); input.delete(0, 1); } else if (input.toString().startsWith("1")) { output.append(".---- "); input.delete(0, 1); } else if (input.toString().startsWith("2")) { output.append("..--- "); input.delete(0, 1); } else if (input.toString().startsWith("3")) { output.append("...-- "); input.delete(0, 1); } else if (input.toString().startsWith("4")) { output.append("....- "); input.delete(0, 1); } else if (input.toString().startsWith("5")) { output.append("..... "); input.delete(0, 1); } else if (input.toString().startsWith("6")) { output.append("-.... "); input.delete(0, 1); } else if (input.toString().startsWith("7")) { output.append("--... "); input.delete(0, 1); } else if (input.toString().startsWith("8")) { output.append("---.. "); input.delete(0, 1); } else if (input.toString().startsWith("9")) { output.append("----. "); input.delete(0, 1); } else if (input.toString().startsWith("Ä")) { output.append(".-.- "); input.delete(0, 1); } else if (input.toString().startsWith("Ö")) { output.append("---. "); input.delete(0, 1); } else if (input.toString().startsWith("Ü")) { output.append("..-- "); input.delete(0, 1); } else if (input.toString().startsWith("ß")) { output.append("...--... "); input.delete(0, 1); } else if (input.toString().startsWith(".")) { output.append(".-.-.- "); input.delete(0, 1); } else if (input.toString().startsWith(",")) { output.append("--..-- "); input.delete(0, 1); } else if (input.toString().startsWith(":")) { output.append("---... "); input.delete(0, 1); } else if (input.toString().startsWith(";")) { output.append("-.-.-. "); input.delete(0, 1); } else if (input.toString().startsWith("?")) { output.append("..--.. "); input.delete(0, 1); } else if (input.toString().startsWith("!")) { output.append("-.-.-- "); input.delete(0, 1); } else if (input.toString().startsWith("-")) { output.append("-....- "); input.delete(0, 1); } else if (input.toString().startsWith("_")) { output.append("..--.- "); input.delete(0, 1); } else if (input.toString().startsWith("(")) { output.append("-.--. "); input.delete(0, 1); } else if (input.toString().startsWith(")")) { output.append("-.--.- "); input.delete(0, 1); } else if (input.toString().startsWith("=")) { output.append("-...- "); input.delete(0, 1); } else if (input.toString().startsWith("+")) { output.append(".-.-. "); input.delete(0, 1); } else if (input.toString().startsWith("/")) { output.append("-..-. "); input.delete(0, 1); } else if (input.toString().startsWith("@")) { output.append(".--.-. "); input.delete(0, 1); } else if (input.toString().startsWith("'")) { output.append(".----. "); input.delete(0, 1); } else if (input.toString().startsWith("$")) { output.append("...-..- "); input.delete(0, 1); } else { tfOutput.setText("Code not listed or wrong."); } } if (output.toString().endsWith(" ") && (output.toString().equals(" ") == false)) { output.delete(output.length() - 3, output.length()); } tfOutput.setText(output.toString()); After(); } } catch (Exception e) { tfOutput.setText("Some error occured. I'm sorry!"); } } /* * Code for converting morse code into latin letters */ private void MLl() { try { // Variables String input; StringBuffer output = new StringBuffer(); input = tfInput.getText() + " "; StringBuffer inputToSign = new StringBuffer(input); while (inputToSign.toString().equals(" ") == false) { int d = 0; boolean signFull = true; StringBuffer sign = new StringBuffer(); while (signFull) { if (inputToSign.toString().startsWith(" ")) { output.append(" "); inputToSign.delete(d, d + 9); } else if (inputToSign.toString().substring(d, d + 3) .equals(" ")) { if (d == 0) { inputToSign.delete(0, 3); } else { sign.replace(0, sign.length(), inputToSign .toString().substring(0, d)); inputToSign.delete(0, d); signFull = false; } } else { d++; } } if (sign.toString().equals(".-")) { output.append("A"); } else if (sign.toString().equals("-...")) { output.append("B"); } else if (sign.toString().equals("-.-.")) { output.append("C"); } else if (sign.toString().equals("-..")) { output.append("D"); } else if (sign.toString().equals(".")) { output.append("E"); } else if (sign.toString().equals("..-.")) { output.append("F"); } else if (sign.toString().equals("--.")) { output.append("G"); } else if (sign.toString().equals("....")) { output.append("H"); } else if (sign.toString().equals("..")) { output.append("I"); } else if (sign.toString().equals(".---")) { output.append("J"); } else if (sign.toString().equals("-.-")) { output.append("K"); } else if (sign.toString().equals(".-..")) { output.append("L"); } else if (sign.toString().equals("--")) { output.append("M"); } else if (sign.toString().equals("-.")) { output.append("N"); } else if (sign.toString().equals("---")) { output.append("O"); } else if (sign.toString().equals(".--.")) { output.append("P"); } else if (sign.toString().equals("--.-")) { output.append("Q"); } else if (sign.toString().equals(".-.")) { output.append("R"); } else if (sign.toString().equals("...")) { output.append("S"); } else if (sign.toString().equals("-")) { output.append("T"); } else if (sign.toString().equals("..-")) { output.append("U"); } else if (sign.toString().equals("...-")) { output.append("V"); } else if (sign.toString().equals(".--")) { output.append("W"); } else if (sign.toString().equals("-..-")) { output.append("X"); } else if (sign.toString().equals("-.--")) { output.append("Y"); } else if (sign.toString().equals("--..")) { output.append("Z"); } else if (sign.toString().equals("-----")) { output.append(". (zero)"); } else if (sign.toString().equals(".----")) { output.append("-"); } else if (sign.toString().equals("..---")) { output.append("2"); } else if (sign.toString().equals("...--")) { output.append("3"); } else if (sign.toString().equals("....-")) { output.append("4"); } else if (sign.toString().equals(".....")) { output.append("5"); } else if (sign.toString().equals("-....")) { output.append("6"); } else if (sign.toString().equals("--...")) { output.append("7"); } else if (sign.toString().equals("---..")) { output.append("8"); } else if (sign.toString().equals("----.")) { output.append("9"); } else if (sign.toString().equals(".-.-")) { output.append("Ä"); } else if (sign.toString().equals("---.")) { output.append("Ö"); } else if (sign.toString().equals("..--")) { output.append("Ü"); } else if (sign.toString().equals("...--...")) { output.append("ß"); } else if (sign.toString().equals("----")) { output.append("CH"); } else if (sign.toString().equals(".-.-.-")) { output.append("."); } else if (sign.toString().equals("--..--")) { output.append(","); } else if (sign.toString().equals("---...")) { output.append(":"); } else if (sign.toString().equals("-.-.-.")) { output.append(";"); } else if (sign.toString().equals("..--..")) { output.append("?"); } else if (sign.toString().equals("-.-.--")) { output.append("!"); } else if (sign.toString().equals("-....-")) { output.append("-"); } else if (sign.toString().equals("..--.-")) { output.append("_"); } else if (sign.toString().equals("-.--.")) { output.append("("); } else if (sign.toString().equals("-.--.-")) { output.append(")"); } else if (sign.toString().equals(".----.")) { output.append("'"); } else if (sign.toString().equals("-...-")) { output.append("="); } else if (sign.toString().equals(".-.-.")) { output.append("+ or End of the signal"); } else if (sign.toString().equals("-..-.")) { output.append("/"); } else if (sign.toString().equals(".--.-.")) { output.append("@"); } else if (sign.toString().equals("-.-.-")) { output.append("Begin of the signal"); } else if (sign.toString().equals("-...-")) { output.append("Wait"); } else if (sign.toString().equals("...-.")) { output.append("Understood"); } else if (sign.toString().equals("...-.-")) { output.append("End of work"); } else if (sign.toString().equals("...---...")) { output.append("SOS"); } else if (sign.toString().equals("........")) { output.append("Error"); } else { tfOutput.setText("Code not listed or wrong."); } } tfOutput.setText(output.toString()); After(); } catch (Exception e) { tfOutput.setText("Some error occured. I'm sorry!"); } } /* * popup menu */ private static void addPopup(Component component, final JPopupMenu popup) { component.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { if (e.isPopupTrigger()) { showMenu(e); } } public void mouseReleased(MouseEvent e) { if (e.isPopupTrigger()) { showMenu(e); } } private void showMenu(MouseEvent e) { popup.show(e.getComponent(), e.getX(), e.getY()); } }); } /* * Past function */ private void onPaste(JTextArea tf) { try{ Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard(); Transferable t = c.getContents(this); if (t == null) return; try { tf.setText((String) t.getTransferData(DataFlavor.stringFlavor)); } catch (Exception e) { e.printStackTrace(); }// try } catch (Exception e){ tfOutput.setText("Some error occured. I'm sorry! \n Are you sure that your clipboard isn't empty?"); } }// onPaste /* * Copy function */ private void onCopy(JTextArea tf) { StringSelection selection = new StringSelection(tf.getText()); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(selection, selection); } }