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 . 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 = 191; 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 e) { e.printStackTrace(); } catch (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); } }