|
|
|
@ -27,12 +27,14 @@
|
|
|
|
|
*/
|
|
|
|
|
package net.apocalypselabs.symat;
|
|
|
|
|
|
|
|
|
|
import java.awt.Rectangle;
|
|
|
|
|
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.JDesktopPane;
|
|
|
|
|
import javax.swing.JInternalFrame;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -63,7 +65,7 @@ public class MainGUI extends javax.swing.JFrame {
|
|
|
|
|
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.");
|
|
|
|
|
System.out.println("An update was found, but has been ignored by the user.");
|
|
|
|
|
} else {
|
|
|
|
|
loadFrame(new Update(version));
|
|
|
|
|
}
|
|
|
|
@ -107,8 +109,8 @@ public class MainGUI extends javax.swing.JFrame {
|
|
|
|
|
private void initComponents() {
|
|
|
|
|
java.awt.GridBagConstraints gridBagConstraints;
|
|
|
|
|
|
|
|
|
|
mainPane = new javax.swing.JDesktopPane();
|
|
|
|
|
tabs = new javax.swing.JTabbedPane();
|
|
|
|
|
jPanel4 = new javax.swing.JPanel();
|
|
|
|
|
jPanel1 = new javax.swing.JPanel();
|
|
|
|
|
shellBtn = new javax.swing.JButton();
|
|
|
|
|
editorBtn = new javax.swing.JButton();
|
|
|
|
@ -117,28 +119,24 @@ public class MainGUI extends javax.swing.JFrame {
|
|
|
|
|
jPanel2 = new javax.swing.JPanel();
|
|
|
|
|
helpBtn = new javax.swing.JButton();
|
|
|
|
|
jLabel3 = new javax.swing.JLabel();
|
|
|
|
|
jLabel2 = new javax.swing.JLabel();
|
|
|
|
|
arrangeWindowsBtn = new javax.swing.JButton();
|
|
|
|
|
jPanel3 = new javax.swing.JPanel();
|
|
|
|
|
jLabel4 = new javax.swing.JLabel();
|
|
|
|
|
mainPane = new javax.swing.JDesktopPane();
|
|
|
|
|
|
|
|
|
|
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
|
|
|
|
|
setTitle(APP_NAME);
|
|
|
|
|
setMinimumSize(new java.awt.Dimension(600, 500));
|
|
|
|
|
setPreferredSize(new java.awt.Dimension(700, 500));
|
|
|
|
|
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, 0, Short.MAX_VALUE)
|
|
|
|
|
);
|
|
|
|
|
mainPaneLayout.setVerticalGroup(
|
|
|
|
|
mainPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
|
|
|
.addGap(0, 407, Short.MAX_VALUE)
|
|
|
|
|
);
|
|
|
|
|
jPanel4.setEnabled(false);
|
|
|
|
|
jPanel4.setLayout(null);
|
|
|
|
|
tabs.addTab("", jPanel4);
|
|
|
|
|
|
|
|
|
|
shellBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/net/apocalypselabs/symat/shell.png"))); // NOI18N
|
|
|
|
|
shellBtn.setText("Shell");
|
|
|
|
@ -188,25 +186,24 @@ public class MainGUI extends javax.swing.JFrame {
|
|
|
|
|
jPanel1Layout.setHorizontalGroup(
|
|
|
|
|
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
|
|
|
.addGroup(jPanel1Layout.createSequentialGroup()
|
|
|
|
|
.addContainerGap()
|
|
|
|
|
.addComponent(shellBtn)
|
|
|
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
|
|
|
.addComponent(editorBtn)
|
|
|
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
|
|
|
.addComponent(graphBtn)
|
|
|
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
|
|
|
|
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 498, Short.MAX_VALUE))
|
|
|
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
|
|
|
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 494, Short.MAX_VALUE))
|
|
|
|
|
);
|
|
|
|
|
jPanel1Layout.setVerticalGroup(
|
|
|
|
|
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
|
|
|
.addGroup(jPanel1Layout.createSequentialGroup()
|
|
|
|
|
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
|
|
|
.addComponent(shellBtn)
|
|
|
|
|
.addComponent(editorBtn))
|
|
|
|
|
.addGap(0, 0, Short.MAX_VALUE))
|
|
|
|
|
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
|
|
|
.addGroup(jPanel1Layout.createSequentialGroup()
|
|
|
|
|
.addGap(0, 0, Short.MAX_VALUE)
|
|
|
|
|
.addComponent(graphBtn))
|
|
|
|
|
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
|
|
|
|
|
.addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
|
|
|
.addComponent(shellBtn, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
|
|
|
.addComponent(editorBtn, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
|
|
|
.addComponent(graphBtn, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
|
|
|
|
.addGap(0, 0, 0))
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
tabs.addTab("Apps", jPanel1);
|
|
|
|
@ -228,30 +225,77 @@ public class MainGUI extends javax.swing.JFrame {
|
|
|
|
|
jLabel3.setText(namemark());
|
|
|
|
|
jLabel3.setFocusable(false);
|
|
|
|
|
|
|
|
|
|
arrangeWindowsBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/net/apocalypselabs/symat/help.png"))); // NOI18N
|
|
|
|
|
arrangeWindowsBtn.setText("Arrange");
|
|
|
|
|
arrangeWindowsBtn.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
|
|
|
|
|
arrangeWindowsBtn.setFocusable(false);
|
|
|
|
|
arrangeWindowsBtn.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
|
|
|
|
|
arrangeWindowsBtn.setOpaque(false);
|
|
|
|
|
arrangeWindowsBtn.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
|
|
|
|
|
arrangeWindowsBtn.addActionListener(new java.awt.event.ActionListener() {
|
|
|
|
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
|
|
|
arrangeWindowsBtnActionPerformed(evt);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
|
|
|
|
|
jPanel2.setLayout(jPanel2Layout);
|
|
|
|
|
jPanel2Layout.setHorizontalGroup(
|
|
|
|
|
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
|
|
|
.addGroup(jPanel2Layout.createSequentialGroup()
|
|
|
|
|
.addContainerGap()
|
|
|
|
|
.addComponent(helpBtn)
|
|
|
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
|
|
|
.addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, 630, Short.MAX_VALUE))
|
|
|
|
|
.addComponent(arrangeWindowsBtn)
|
|
|
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
|
|
|
|
.addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, 551, Short.MAX_VALUE))
|
|
|
|
|
);
|
|
|
|
|
jPanel2Layout.setVerticalGroup(
|
|
|
|
|
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
|
|
|
.addGroup(jPanel2Layout.createSequentialGroup()
|
|
|
|
|
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
|
|
|
.addComponent(helpBtn)
|
|
|
|
|
.addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE))
|
|
|
|
|
.addGap(0, 0, Short.MAX_VALUE))
|
|
|
|
|
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
|
|
|
.addComponent(helpBtn)
|
|
|
|
|
.addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE))
|
|
|
|
|
.addComponent(arrangeWindowsBtn)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
tabs.addTab("Tools", jPanel2);
|
|
|
|
|
|
|
|
|
|
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
|
|
|
|
|
jLabel2.setText(namemark());
|
|
|
|
|
jLabel2.setFocusable(false);
|
|
|
|
|
tabs.addTab("Settings", jLabel2);
|
|
|
|
|
jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
|
|
|
|
|
jLabel4.setText(namemark());
|
|
|
|
|
jLabel4.setFocusable(false);
|
|
|
|
|
|
|
|
|
|
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
|
|
|
|
|
jPanel3.setLayout(jPanel3Layout);
|
|
|
|
|
jPanel3Layout.setHorizontalGroup(
|
|
|
|
|
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
|
|
|
.addComponent(jLabel4, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 691, Short.MAX_VALUE)
|
|
|
|
|
);
|
|
|
|
|
jPanel3Layout.setVerticalGroup(
|
|
|
|
|
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
|
|
|
.addGroup(jPanel3Layout.createSequentialGroup()
|
|
|
|
|
.addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
|
|
|
.addGap(0, 0, 0))
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
tabs.addTab("Settings", jPanel3);
|
|
|
|
|
|
|
|
|
|
tabs.setSelectedIndex(1);
|
|
|
|
|
|
|
|
|
|
mainPane.setBackground(new java.awt.Color(204, 204, 204));
|
|
|
|
|
mainPane.setAutoscrolls(true);
|
|
|
|
|
mainPane.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
|
|
|
|
|
mainPane.setOpaque(false);
|
|
|
|
|
|
|
|
|
|
javax.swing.GroupLayout mainPaneLayout = new javax.swing.GroupLayout(mainPane);
|
|
|
|
|
mainPane.setLayout(mainPaneLayout);
|
|
|
|
|
mainPaneLayout.setHorizontalGroup(
|
|
|
|
|
mainPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
|
|
|
.addGap(0, 0, Short.MAX_VALUE)
|
|
|
|
|
);
|
|
|
|
|
mainPaneLayout.setVerticalGroup(
|
|
|
|
|
mainPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
|
|
|
.addGap(0, 400, Short.MAX_VALUE)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
|
|
|
|
getContentPane().setLayout(layout);
|
|
|
|
@ -263,11 +307,13 @@ public class MainGUI extends javax.swing.JFrame {
|
|
|
|
|
layout.setVerticalGroup(
|
|
|
|
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
|
|
|
.addGroup(layout.createSequentialGroup()
|
|
|
|
|
.addComponent(tabs, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
|
|
|
.addComponent(tabs, javax.swing.GroupLayout.PREFERRED_SIZE, 94, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
|
|
|
.addGap(0, 0, 0)
|
|
|
|
|
.addComponent(mainPane))
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
tabs.setEnabledAt(0, false);
|
|
|
|
|
|
|
|
|
|
pack();
|
|
|
|
|
}// </editor-fold>//GEN-END:initComponents
|
|
|
|
|
|
|
|
|
@ -295,14 +341,54 @@ public class MainGUI extends javax.swing.JFrame {
|
|
|
|
|
loadFrame(h);
|
|
|
|
|
}//GEN-LAST:event_helpBtnActionPerformed
|
|
|
|
|
|
|
|
|
|
private void arrangeWindowsBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_arrangeWindowsBtnActionPerformed
|
|
|
|
|
cascade();
|
|
|
|
|
}//GEN-LAST:event_arrangeWindowsBtnActionPerformed
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Adds the given JInternalFrame to the mainPane. Automatically does layout
|
|
|
|
|
* and sets visible as well.
|
|
|
|
|
*
|
|
|
|
|
* @param frame
|
|
|
|
|
*/
|
|
|
|
|
public static void loadFrame(JInternalFrame frame) {
|
|
|
|
|
int w = frame.getWidth();
|
|
|
|
|
int h = frame.getHeight();
|
|
|
|
|
int pw = mainPane.getWidth();
|
|
|
|
|
int ph = mainPane.getHeight();
|
|
|
|
|
if (frame.isResizable()) {
|
|
|
|
|
if (h > ph) {
|
|
|
|
|
h = ph;
|
|
|
|
|
}
|
|
|
|
|
if (w > pw) {
|
|
|
|
|
w = pw;
|
|
|
|
|
}
|
|
|
|
|
frame.setSize(w, h);
|
|
|
|
|
}
|
|
|
|
|
mainPane.add(frame);
|
|
|
|
|
frame.setLocation(
|
|
|
|
|
(mainPane.getWidth() / 2) - (frame.getWidth() / 2),
|
|
|
|
|
(mainPane.getHeight() / 2) - (frame.getHeight() / 2));
|
|
|
|
|
(pw / 2) - (w / 2),
|
|
|
|
|
(ph / 2) - (h / 2));
|
|
|
|
|
if (frame.getLocation().y < 0) {
|
|
|
|
|
frame.setLocation(frame.getLocation().x, 0);
|
|
|
|
|
}
|
|
|
|
|
frame.setVisible(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void cascade() {
|
|
|
|
|
JInternalFrame[] frames = mainPane.getAllFrames();
|
|
|
|
|
int x = 12;
|
|
|
|
|
int y = 24;
|
|
|
|
|
Debug.println("Cascading "+frames.length+" frames...");
|
|
|
|
|
for (int i = 0; i < frames.length; i++) {
|
|
|
|
|
if (frames[i].isVisible()) {
|
|
|
|
|
Debug.println("Frame: " + frames[i].getTitle() + ", Times: " + i + ", Xpos: " + x * i + ", Ypos: " + y * i);
|
|
|
|
|
frames[i].setBounds(x * i, y * i, frames[i].getWidth(), frames[i].getHeight());
|
|
|
|
|
frames[i].toFront();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param args the command line arguments
|
|
|
|
|
*/
|
|
|
|
@ -341,14 +427,17 @@ public class MainGUI extends javax.swing.JFrame {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
|
|
|
|
private javax.swing.JButton arrangeWindowsBtn;
|
|
|
|
|
private javax.swing.JButton editorBtn;
|
|
|
|
|
private javax.swing.JButton graphBtn;
|
|
|
|
|
private javax.swing.JButton helpBtn;
|
|
|
|
|
private javax.swing.JLabel jLabel1;
|
|
|
|
|
private javax.swing.JLabel jLabel2;
|
|
|
|
|
private javax.swing.JLabel jLabel3;
|
|
|
|
|
private javax.swing.JLabel jLabel4;
|
|
|
|
|
private javax.swing.JPanel jPanel1;
|
|
|
|
|
private javax.swing.JPanel jPanel2;
|
|
|
|
|
private javax.swing.JPanel jPanel3;
|
|
|
|
|
private javax.swing.JPanel jPanel4;
|
|
|
|
|
public static javax.swing.JDesktopPane mainPane;
|
|
|
|
|
private javax.swing.JButton shellBtn;
|
|
|
|
|
private javax.swing.JTabbedPane tabs;
|
|
|
|
|