/* * Copyright (C) 2014 Apocalypse Laboratories. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ package net.apocalypselabs.symat; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import javax.swing.ImageIcon; import javax.swing.JInternalFrame; /** * * @author Skylar */ public class MainGUI extends javax.swing.JFrame { public static final String APP_NAME = "SyMAT 0.5"; public static final double APP_CODE = 0.5; /** * Creates new form MainGUI */ public MainGUI() { initComponents(); setIconImage((new ImageIcon(getClass().getResource("icon.png"))).getImage()); setLocationRelativeTo(null); try { URL url = new URL("http://symat.aplabs.us/version.txt"); InputStream is = url.openStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line = br.readLine(); br.close(); is.close(); double version = Double.parseDouble(line); if (version > APP_CODE) { if (PrefStorage.getSetting("update-ignore").equals(APP_CODE+"|"+version)) { System.err.println("An update was found, but has been ignored by the user."); } else { loadFrame(new Update(version)); } } } catch (IOException | NumberFormatException e) { System.err.println("Fail: Cannot check update server. \n" + " Assuming local copy up-to-date."); } Interpreter sh = new Interpreter(); loadFrame(sh); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { mainPane = new javax.swing.JDesktopPane(); jToolBar1 = new javax.swing.JToolBar(); shellBtn = new javax.swing.JButton(); editorBtn = new javax.swing.JButton(); graphBtn = new javax.swing.JButton(); helpBtn = new javax.swing.JButton(); jLabel1 = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle(APP_NAME); addComponentListener(new java.awt.event.ComponentAdapter() { public void componentShown(java.awt.event.ComponentEvent evt) { formComponentShown(evt); } }); mainPane.setBackground(new java.awt.Color(204, 204, 204)); javax.swing.GroupLayout mainPaneLayout = new javax.swing.GroupLayout(mainPane); mainPane.setLayout(mainPaneLayout); mainPaneLayout.setHorizontalGroup( mainPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 690, Short.MAX_VALUE) ); mainPaneLayout.setVerticalGroup( mainPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 416, Short.MAX_VALUE) ); jToolBar1.setFloatable(false); jToolBar1.setRollover(true); shellBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/net/apocalypselabs/symat/shell.png"))); // NOI18N shellBtn.setText("Shell"); shellBtn.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED)); shellBtn.setFocusable(false); shellBtn.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); shellBtn.setOpaque(false); shellBtn.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); shellBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { shellBtnActionPerformed(evt); } }); jToolBar1.add(shellBtn); editorBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/net/apocalypselabs/symat/editor.png"))); // NOI18N editorBtn.setText("Editor"); editorBtn.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED)); editorBtn.setFocusable(false); editorBtn.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); editorBtn.setOpaque(false); editorBtn.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); editorBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { editorBtnActionPerformed(evt); } }); jToolBar1.add(editorBtn); graphBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/net/apocalypselabs/symat/graph.png"))); // NOI18N graphBtn.setText("Graph"); graphBtn.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED)); graphBtn.setFocusable(false); graphBtn.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); graphBtn.setOpaque(false); graphBtn.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); graphBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { graphBtnActionPerformed(evt); } }); jToolBar1.add(graphBtn); helpBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/net/apocalypselabs/symat/help.png"))); // NOI18N helpBtn.setText("Help"); helpBtn.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED)); helpBtn.setFocusable(false); helpBtn.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); helpBtn.setOpaque(false); helpBtn.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); helpBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { helpBtnActionPerformed(evt); } }); jToolBar1.add(helpBtn); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel1.setText("        "+APP_NAME+""); jToolBar1.add(jLabel1); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(mainPane) .addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 63, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(mainPane)) ); pack(); }// //GEN-END:initComponents private void shellBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_shellBtnActionPerformed Interpreter i = new Interpreter(); loadFrame(i); }//GEN-LAST:event_shellBtnActionPerformed private void editorBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editorBtnActionPerformed CodeEditor e = new CodeEditor(); loadFrame(e); }//GEN-LAST:event_editorBtnActionPerformed private void graphBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_graphBtnActionPerformed Graph g = new Graph(); loadFrame(g); }//GEN-LAST:event_graphBtnActionPerformed private void helpBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_helpBtnActionPerformed Help h = new Help(); loadFrame(h); }//GEN-LAST:event_helpBtnActionPerformed private void formComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentShown setLocationRelativeTo(null); }//GEN-LAST:event_formComponentShown public static void loadFrame(JInternalFrame frame) { mainPane.add(frame); frame.setLocation( (mainPane.getWidth() / 2) - (frame.getWidth() / 2), (mainPane.getHeight() / 2) - (frame.getHeight() / 2)); frame.setVisible(true); } /** * @param args the command line arguments */ public static void main(String args[]) { /* Set the Nimbus look and feel */ // /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(MainGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } // // /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { @Override public void run() { new MainGUI().setVisible(true); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton editorBtn; private javax.swing.JButton graphBtn; private javax.swing.JButton helpBtn; private javax.swing.JLabel jLabel1; private javax.swing.JToolBar jToolBar1; public static javax.swing.JDesktopPane mainPane; private javax.swing.JButton shellBtn; // End of variables declaration//GEN-END:variables }