You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
262 lines
11 KiB
Java
262 lines
11 KiB
Java
10 years ago
|
/*
|
||
|
* 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")
|
||
|
// <editor-fold defaultstate="collapsed" desc="Generated Code">//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("<html> <span style=\"color: gray; font-size: 130%;\"><i>"+APP_NAME+"</i></span>");
|
||
|
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();
|
||
|
}// </editor-fold>//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 */
|
||
|
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
|
||
|
/* 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);
|
||
|
}
|
||
|
//</editor-fold>
|
||
|
|
||
|
//</editor-fold>
|
||
|
|
||
|
/* 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
|
||
|
}
|