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/.metadata/.plugins/org.eclipse.core.resources/.history/74/10310ad1f74600141fd6f4940a7...

557 lines
16 KiB
Plaintext

/*
* This is a programm to translate latin letters to morse or written morse or backwards.
*
* Marcel Michael Kapfer
*
* GPL v3.0
*
* 2014
*
* Version: 0.99 beta
*
*/
package morse;
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, 420);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
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.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
About.main(null);
}
});
mnMain.add(mntmAbout);
JMenuItem mntmBug = new JMenuItem("Bug");
mnMain.add(mntmBug);
//TODO add jDialog and event listner
JMenuItem mntmHowTo = new JMenuItem("How to");
mnMain.add(mntmHowTo);
//TODO add jDialog and event listner
JMenuItem mntmMissingCode = new JMenuItem("Missing Code");
mnMain.add(mntmMissingCode);
//TODO add jDialog and event listner
JMenu mnClipboard = new JMenu("Clipboard");
menuBar.add(mnClipboard);
JMenuItem mntnPaste = new JMenuItem("Paste from Clipboard");
mnClipboard.add(mntnPaste);
//TODO add jDialog and event listner
JMenuItem mntmCopy = new JMenuItem("Copy into Clipboard");
mnClipboard.add(mntmCopy);
//TODO add jDialog and event listner
chckbxmntmClipboardAutomatic = new JCheckBoxMenuItem(
"Copy automatically into Clipboard");
mnClipboard.add(chckbxmntmClipboardAutomatic);
JScrollPane scrollPaneInput = new JScrollPane();
scrollPaneInput.setBounds(12, 60, 758, 140);
contentPane.add(scrollPaneInput);
tfInput = new JTextArea();
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.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
onPaste(tfInput);
}
});
popupMenuIp.add(mntmIpPaste);
JMenuItem mntnIpSelect = new JMenuItem("Select text");
mntnIpSelect.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
tfInput.selectAll();
}
});
popupMenuIp.add(mntnIpSelect);
JMenuItem mntmIpDelete = new JMenuItem("Delete 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");
buttonGroup.add(rdbtnwmll);
rdbtnwmll.setBounds(12, 208, 250, 23);
contentPane.add(rdbtnwmll);
rdbtnllwm = new JRadioButton("Latin Letters to writtenMorse");
buttonGroup.add(rdbtnllwm);
rdbtnllwm.setBounds(266, 208, 250, 23);
contentPane.add(rdbtnllwm);
rdbtnmll = new JRadioButton("Morse to Latin Letters");
buttonGroup.add(rdbtnmll);
rdbtnmll.setBounds(12, 235, 250, 23);
contentPane.add(rdbtnmll);
rdbtnllm = new JRadioButton("Latin Letters to Morse");
buttonGroup.add(rdbtnllm);
rdbtnllm.setBounds(266, 235, 250, 23);
contentPane.add(rdbtnllm);
btnConvert = new JButton("Convert");
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();
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.selectAll();
}
});
popupMenuOp.add(mntmOpSelect);
//TODO add right click popup menu
btnSelectInput = new JButton("Select Input Text");
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");
// TODO Add function
} else if (rdbtnllwm.isSelected()) {
LlWm();
} else if (rdbtnmll.isSelected()) {
tfOutput.setText("Process not available");
// TODO Add function
} else if (rdbtnllm.isSelected()) {
tfOutput.setText("Process not available");
// TODO Add function
} else {
tfOutput.setText("Please select a convert process");
rdbtnwmll.requestFocus();
}
}
/*
* Tasks to do after the converting process
*/
private void After() {
tfOutput.selectAll();
btnSelectInput.setVisible(true);
if (chckbxmntmClipboardAutomatic.isSelected()) {
onCopy(tfOutput);
}
}
/*
* Code for converting latin letters into written morse
*/
private void LlWm() {
// 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("\n")) {
output.append("\n");
} 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.");
}
}
tfOutput.setText(output.delete(output.length() - 1, output.length())
.toString());
After();
}
}
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());
}
});
}
private void onPaste(JTextArea tf){
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
}//onPaste
private void onCopy(JTextArea tf){
StringSelection selection = new StringSelection(tf.getText());
Clipboard clipboard = Toolkit.getDefaultToolkit()
.getSystemClipboard();
clipboard.setContents(selection, selection);
}
}