This repository has been archived on 2022-02-10. You can view files and clone it, but cannot push or open issues or pull requests.
morse-converter/src/de/marcel_kapfer/c/morseconverter/Morse.java

1197 lines
38 KiB
Java

/*
* 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.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();
setContentPane(contentPane);
contentPane.setLayout(null);
JMenuBar menuBar = new JMenuBar();
menuBar.setBorderPainted(false);
menuBar.setBounds(0, 0, 820, 21);
contentPane.add(menuBar);
JMenu mnMain = new JMenu("Main Menu");
menuBar.add(mnMain);
JMenuItem mntmAbout = new JMenuItem("About");
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.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.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
.setToolTipText("Information about handling a missing code");
mnMain.add(mntmMissingCode);
JMenuItem mntmExit = new JMenuItem("Exit");
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");
menuBar.add(mnClipboard);
JMenuItem mntnPaste = new JMenuItem("Paste from Clipboard");
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.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
.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.setBounds(10, 33, 111, 15);
contentPane.add(lblEnterYourText);
rdbtnwmll = new JRadioButton("writtenMorse to Latin Letters");
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
.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.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.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
.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.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(" ")) {
if(output.toString().endsWith("#")){
output.delete(output.length() -1 , output.length());
}
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.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.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);
}
}