2015-07-30 15:50:40 +02:00
|
|
|
package de.marcelkapfer.c.morseconverter;
|
|
|
|
|
|
|
|
/*
|
|
|
|
This is a Java application for converting writtenMorse and normal morse code.
|
|
|
|
Copyright (C) 2014-2015 Marcel Michael Kapfer
|
|
|
|
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
Marcel Michael Kapfer
|
|
|
|
marcelmichaelkapfer@yahoo.co.nz
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
import de.marcelkapfer.c.morseconverter.engine.DecodeNormalMorseManager;
|
|
|
|
import de.marcelkapfer.c.morseconverter.engine.DecodeWrittenMorseManager;
|
|
|
|
import de.marcelkapfer.c.morseconverter.engine.EncodeNormalMorseManager;
|
|
|
|
import de.marcelkapfer.c.morseconverter.engine.EncodeWrittenMorseManager;
|
|
|
|
import de.marcelkapfer.c.morseconverter.intelligentCodeRecognization.NormalMorseCodeRecognization;
|
|
|
|
import de.marcelkapfer.c.morseconverter.intelligentCodeRecognization.WrittenMorseCodeRecognization;
|
|
|
|
import de.marcelkapfer.c.morseconverter.update.Update;
|
|
|
|
import de.marcelkapfer.c.morseconverter.update.UpdateDialog;
|
|
|
|
|
|
|
|
import javax.swing.*;
|
|
|
|
import javax.swing.text.BadLocationException;
|
|
|
|
import javax.swing.text.Element;
|
|
|
|
import javax.swing.text.html.HTMLDocument;
|
|
|
|
import javax.swing.text.html.HTMLEditorKit;
|
|
|
|
import java.awt.*;
|
|
|
|
import java.awt.event.ActionEvent;
|
|
|
|
import java.awt.event.ActionListener;
|
|
|
|
import java.awt.event.KeyAdapter;
|
|
|
|
import java.awt.event.KeyEvent;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.util.ResourceBundle;
|
|
|
|
|
|
|
|
public class Main extends JFrame {
|
|
|
|
|
|
|
|
// Version numbers for update check
|
|
|
|
public static final int currentVersion = 193;
|
|
|
|
public static int latestVersion = currentVersion;
|
|
|
|
|
|
|
|
public static ResourceBundle resourceBundle = ResourceBundle.getBundle("de.marcelkapfer.c.morseconverter.text");
|
|
|
|
public JTabbedPane morseConverterPane;
|
|
|
|
private JPanel panel1;
|
|
|
|
private JTextArea inputAreaWrittenMorse;
|
|
|
|
private JTextArea outputAreaWrittenMorse;
|
|
|
|
private JTextArea inputAreaNormalMorse;
|
|
|
|
private JTextArea outputAreaNormalMorse;
|
|
|
|
private JButton updateDialogButton;
|
|
|
|
private JLabel updateAvailable;
|
|
|
|
private JTextPane aboutText;
|
|
|
|
|
|
|
|
// Contains mainly listeners
|
|
|
|
public Main() {
|
|
|
|
HTMLEditorKit htmlEditorKit = new HTMLEditorKit();
|
|
|
|
HTMLDocument htmlDocument = (HTMLDocument) htmlEditorKit.createDefaultDocument();
|
|
|
|
Element element = htmlDocument.getDefaultRootElement();
|
|
|
|
try {
|
|
|
|
htmlDocument.setInnerHTML(element, resourceBundle.getString("about"));
|
|
|
|
} catch (BadLocationException | IOException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
aboutText.setDocument(htmlDocument);
|
|
|
|
// Listener for the writtenMorse input field
|
|
|
|
inputAreaWrittenMorse.addKeyListener(new KeyAdapter() {
|
|
|
|
@Override
|
|
|
|
public void keyReleased(KeyEvent e) {
|
|
|
|
instantWrittenMorseConvert();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
// Listener for the normal Morse input field
|
|
|
|
inputAreaNormalMorse.addKeyListener(new KeyAdapter() {
|
|
|
|
@Override
|
|
|
|
public void keyReleased(KeyEvent e) {
|
|
|
|
instantNormalMorseConvert();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// Trying to read a file from a server
|
|
|
|
latestVersion = Update.getLatestVersion("http://lab.marcel-kapfer.de/writtenmorse/desktop/version.txt", currentVersion);
|
|
|
|
|
|
|
|
if (currentVersion < latestVersion){
|
|
|
|
JOptionPane.showMessageDialog(null, resourceBundle.getString("updateAvailable"));
|
|
|
|
updateAvailable.setVisible(true);
|
|
|
|
updateDialogButton.setText(resourceBundle.getString("aboutUpdateAvailableButton"));
|
|
|
|
}
|
|
|
|
|
|
|
|
updateDialogButton.addActionListener(new ActionListener() {
|
|
|
|
@Override
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
updateDialog();
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
}
|
|
|
|
// The holy main method
|
|
|
|
public static void main(String[] args){
|
|
|
|
// Tries to present the app in an native look
|
|
|
|
try{
|
|
|
|
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
|
|
|
} catch (Exception e){
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
// Starting the application
|
|
|
|
JFrame main = new JFrame("Main");
|
|
|
|
main.setContentPane(new Main().morseConverterPane);
|
|
|
|
main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
|
|
// Title
|
|
|
|
main.setTitle(resourceBundle.getString("title"));
|
|
|
|
main.pack();
|
|
|
|
// Window position and Size
|
|
|
|
main.setBounds(100, 100, 800, 400);
|
|
|
|
main.setIconImage(Toolkit.getDefaultToolkit().getImage(Main.class.getResource("/res/icon-xxxhdpi.png")));
|
|
|
|
// MAKE IT HAPPEN :D
|
|
|
|
main.setVisible(true);
|
|
|
|
System.out.print(System.lineSeparator());
|
|
|
|
}
|
|
|
|
|
|
|
|
// Method for converting writtenMorse
|
|
|
|
private void instantWrittenMorseConvert(){
|
|
|
|
// Gets the text from the input field
|
|
|
|
String input = inputAreaWrittenMorse.getText();
|
|
|
|
// checks if the code is a writtenMorse code
|
|
|
|
if(WrittenMorseCodeRecognization.isCode(input)) {
|
|
|
|
// converts the code into normal letters
|
|
|
|
outputAreaWrittenMorse.setText(EncodeWrittenMorseManager.getEncodedString(input));
|
|
|
|
} else {
|
|
|
|
// converts the code into writtenMorse
|
|
|
|
outputAreaWrittenMorse.setText(DecodeWrittenMorseManager.getDecodedString(input));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Method for converting normal Morse
|
|
|
|
private void instantNormalMorseConvert(){
|
|
|
|
// Gets the text from the input field
|
|
|
|
String input = inputAreaNormalMorse.getText();
|
|
|
|
// checks if the code is a normal Morse code
|
|
|
|
if(NormalMorseCodeRecognization.isCode(input)){
|
|
|
|
// converts the code into normal letters
|
|
|
|
outputAreaNormalMorse.setText(EncodeNormalMorseManager.getEncodedString(input));
|
|
|
|
} else {
|
|
|
|
// converts the code into writtenMorse
|
|
|
|
outputAreaNormalMorse.setText(DecodeNormalMorseManager.getDecodedString(input));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private void updateDialog() {
|
|
|
|
UpdateDialog.main(null);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|