diff options
| author | Joshua Rahm <joshua.rahm@colorado.edu> | 2015-01-30 17:11:48 -0700 |
|---|---|---|
| committer | Joshua Rahm <joshua.rahm@colorado.edu> | 2015-01-30 17:11:48 -0700 |
| commit | 1c5e38fe69ac8a6decbdd8abe93112f4e3369315 (patch) | |
| tree | 926cef8cb76d46862ed2c4ec7028720611e47476 /src/CalculatorGUI.java | |
| download | Modulus3D-1c5e38fe69ac8a6decbdd8abe93112f4e3369315.tar.gz Modulus3D-1c5e38fe69ac8a6decbdd8abe93112f4e3369315.tar.bz2 Modulus3D-1c5e38fe69ac8a6decbdd8abe93112f4e3369315.zip | |
added source
Diffstat (limited to 'src/CalculatorGUI.java')
| -rw-r--r-- | src/CalculatorGUI.java | 1024 |
1 files changed, 1024 insertions, 0 deletions
diff --git a/src/CalculatorGUI.java b/src/CalculatorGUI.java new file mode 100644 index 0000000..c96bfe8 --- /dev/null +++ b/src/CalculatorGUI.java @@ -0,0 +1,1024 @@ +/* */ import StandardIO.Approvable; +/* */ import StandardIO.MFileFilter; +/* */ import StandardIO.ModulusFileChooser; +/* */ import StandardIO.ModulusOutputStream; +/* */ import StandardIO.PropertiesReader; +/* */ import java.awt.BorderLayout; +/* */ import java.awt.Color; +/* */ import java.awt.Component; +/* */ import java.awt.Container; +/* */ import java.awt.Dimension; +/* */ import java.awt.FlowLayout; +/* */ import java.awt.Graphics; +/* */ import java.awt.Toolkit; +/* */ import java.awt.datatransfer.DataFlavor; +/* */ import java.awt.datatransfer.Transferable; +/* */ import java.awt.dnd.DropTarget; +/* */ import java.awt.dnd.DropTargetDragEvent; +/* */ import java.awt.dnd.DropTargetDropEvent; +/* */ import java.awt.dnd.DropTargetEvent; +/* */ import java.awt.dnd.DropTargetListener; +/* */ import java.awt.event.ActionEvent; +/* */ import java.awt.event.ActionListener; +/* */ import java.awt.event.KeyEvent; +/* */ import java.awt.event.KeyListener; +/* */ import java.awt.event.MouseEvent; +/* */ import java.awt.event.MouseListener; +/* */ import java.awt.image.BufferedImage; +/* */ import java.io.File; +/* */ import java.io.IOException; +/* */ import java.io.PrintStream; +/* */ import java.util.ArrayList; +/* */ import java.util.List; +/* */ import javax.imageio.ImageIO; +/* */ import javax.swing.AbstractButton; +/* */ import javax.swing.ButtonGroup; +/* */ import javax.swing.JButton; +/* */ import javax.swing.JCheckBox; +/* */ import javax.swing.JCheckBoxMenuItem; +/* */ import javax.swing.JColorChooser; +/* */ import javax.swing.JComboBox; +/* */ import javax.swing.JComponent; +/* */ import javax.swing.JFileChooser; +/* */ import javax.swing.JFrame; +/* */ import javax.swing.JLabel; +/* */ import javax.swing.JList; +/* */ import javax.swing.JMenu; +/* */ import javax.swing.JMenuBar; +/* */ import javax.swing.JMenuItem; +/* */ import javax.swing.JPanel; +/* */ import javax.swing.JRadioButton; +/* */ import javax.swing.JRadioButtonMenuItem; +/* */ import javax.swing.JScrollPane; +/* */ import javax.swing.JSeparator; +/* */ import javax.swing.JTextArea; +/* */ import javax.swing.JTextField; +/* */ import javax.swing.JToggleButton; +/* */ import javax.swing.JWindow; +/* */ import javax.swing.SwingUtilities; +/* */ import javax.swing.UIManager; +/* */ import utilities.BaseConverter; +/* */ import utilities.DecimalFormatter; +/* */ import utilities.NoFormatter; +/* */ +/* */ public class CalculatorGUI extends JFrame +/* */ implements ActionListener, DropTargetListener, KeyListener, MouseListener +/* */ { +/* */ private static final long serialVersionUID = -7536111096507880724L; +/* */ private static CalculatorGUI currentInstance; +/* 89 */ private String[] props = { "1234567890\\QWERTYUIOP\\ASDFGHJKL\\ZXCVBNM", "none", "none", "none", "full", "false" }; +/* 90 */ private static CalculatorGUI.SplashScreen splash = new CalculatorGUI.SplashScreen(); +/* 91 */ public static String CREDITS = "Modulus v2.0\nBy: Joshua Rahm\nSkyline High School\nLongmont, CO\nEmail: rahm_joshua@digitalagenation.com\nWebpage: http://www.digitalagenation/modulus.html"; +/* 92 */ private Keyboard[] keys = { +/* 93 */ new Keyboard("1234567890\\QWERTYUIOP\\ASDFGHJKL\\ZXCVBNM"), +/* 94 */ new Keyboard(new String[][] { { "7", "8", "9" }, { "4", "5", "6" }, { "1", "2", "3" }, { ".", "0", "Entr" } }, 25, 35, null), +/* 95 */ new Keyboard(new String[][] { { "acos(", "cos(" }, { "asin(", "sin(" }, { "atan(", "tan(" }, { "ln(", "log(" } }, 25, 45, null), +/* 96 */ new Keyboard(":£^%e"), +/* 97 */ new Keyboard("/\\*\\-\\+"), +/* 98 */ new Keyboard("~?|&"), +/* 99 */ new Keyboard("[(|!\\]),_"), +/* 100 */ new Keyboard(new String[][] { { ">=", "<=", ">", "<", "=", " else " }, { " and ", " or ", " xor ", "not(", " if ", " then " } }, 25, 45, null), +/* 101 */ new Keyboard(new String[][] { { "<html>x<sup>2</sup></html>", "√x", "<html>x<sup>3</sup></html>", "<html>x<sup>-1</sup></html>" } }, 25, 35, null), +/* 102 */ new Keyboard(new String[][] { { "Bkspc", "Clear" } }, 25, 45, null), +/* 103 */ new Keyboard(new String[][] { { "ClrHome" } }, 25, 55, null), +/* 104 */ new Keyboard(new String[][] { { "STO ", "STP ", "PUSH ", "POP " }, { "DISP ", "STACK ", "DEL ", "DEC " } }, 25, 55, null) }; +/* */ private DecimalFormatter formatter; +/* 108 */ private boolean controlHeld = false; +/* 109 */ private boolean shiftHeld = false; +/* 110 */ private ArrayList<String> last = new ArrayList(); +/* 111 */ private ArrayList<String> ans = new ArrayList(); +/* 112 */ private int lastIndex = 0; +/* 113 */ private String[] topOpsArr = { "^2", "sqrt(", "^3", "^-1" }; +/* */ +/* 115 */ private JPanel[] panels = { new JPanel(new FlowLayout()), new JPanel(new FlowLayout()), new JPanel(new BorderLayout()) }; +/* 116 */ private JPanel numberPanel = new JPanel(new BorderLayout()); +/* */ +/* 118 */ private JTextArea answerArea = new JTextArea(18, 17); +/* */ +/* 120 */ private JTextField answerField = new JTextField(35); +/* */ private JScrollPane scroll; +/* 123 */ private JMenuBar mainbar = new JMenuBar(); +/* */ +/* 126 */ private Object temp = null; +/* 127 */ private long sysTime = 0L; +/* */ +/* 129 */ private JButton terminate = new JButton("Terminate"); +/* 130 */ private ArrayList<Thread> exec = new ArrayList(); +/* 131 */ private File functions = new File("./functions"); +/* 132 */ private ButtonGroup layout = new ButtonGroup(); +/* */ +/* 134 */ private String[][] map = { +/* 135 */ { "Add", "Subtract", "Multiply", "Divide", "Power", "Shift", "Root", "Sine", "Cosine", "Tangent", "Arcsine", "Arccosine", "Arctangent", "Logarithm", "Greater Than", "Less Than", +/* 136 */ "Greater Than Equal To", "Less Than Equal To", "Equal To", "And", "Or", "Exclusive or", "Not", "if", "then", "else", "Bitwise And", "Bitwise or", "Bitwise Exclusive or", "Bitwise not", +/* 137 */ "x Squared", "x Cubed", "Square Root x", "Inverse of x" }, +/* 138 */ { "+", "-", "*", "/", "^", "e", "?", "sin(", "cos(", "tan(", "asin(", "acos(", "atan(", "log(", ">", "<", ">=", "<=", "=", " and ", " or ", " xor ", "not(", "if( ", " then( ", " else( ", "&", "\\", "?", "~(", +/* 139 */ "^2", "^3", "sqrt(", "^-1" } }; +/* */ +/* 145 */ private Menu[] menus = { +/* 146 */ new Menu("File", new AbstractButton[] { +/* 147 */ new JMenuItem("Close"), +/* 148 */ new JMenuItem("Save") }), +/* 150 */ new Menu("Edit", new AbstractButton[] { +/* 151 */ new JMenuItem("Change Base"), +/* 152 */ new JMenuItem("Convert Base"), +/* 153 */ new JMenuItem("Clear"), +/* 154 */ new JMenuItem("Manage Programs") }), +/* 157 */ new Menu("Calculate", new AbstractButton[] { +/* 158 */ new Menu("Basic Operators", new AbstractButton[] { +/* 159 */ new JMenuItem("Add"), +/* 160 */ new JMenuItem("Subtract"), +/* 161 */ new JMenuItem("Multiply"), +/* 162 */ new JMenuItem("Divide"), +/* 163 */ new JMenuItem("Power"), +/* 164 */ new JMenuItem("Shift"), +/* 165 */ new JMenuItem("Root") }), +/* 167 */ new Menu("Trigometic Operators", new AbstractButton[] { +/* 168 */ new JMenuItem("Sine"), +/* 169 */ new JMenuItem("Cosine"), +/* 170 */ new JMenuItem("Tangent"), +/* 171 */ new JMenuItem("Arccosine"), +/* 172 */ new JMenuItem("Arcsin"), +/* 173 */ new JMenuItem("Arctangent"), +/* 174 */ new JMenuItem("Loagrithm") }), +/* 176 */ new Menu("Boolean Operators", new AbstractButton[] { +/* 177 */ new Menu("Relational Operators", new JComponent[] { +/* 178 */ new JMenuItem("Greater Than"), +/* 179 */ new JMenuItem("Less Than"), +/* 180 */ new JMenuItem("Greater Than Equal To"), +/* 181 */ new JMenuItem("Less Than Equal To"), +/* 182 */ new JMenuItem("Equal To") }), +/* 184 */ new Menu("Logical Operators", new AbstractButton[] { +/* 185 */ new JMenuItem("And"), +/* 186 */ new JMenuItem("Or"), +/* 187 */ new JMenuItem("Exclusive or"), +/* 188 */ new JMenuItem("Not") }), +/* 190 */ new Menu("Flow Operators", new AbstractButton[] { +/* 191 */ new JMenuItem("if"), +/* 192 */ new JMenuItem("then"), +/* 193 */ new JMenuItem("else") }) }), +/* 196 */ new Menu("Bitwise Operators", new AbstractButton[] { +/* 197 */ new JMenuItem("Bitwise And"), +/* 198 */ new JMenuItem("Bitwise or"), +/* 199 */ new JMenuItem("Bitwise Exclusive or"), +/* 200 */ new JMenuItem("Bitwise not") }), +/* 202 */ new Menu("Other Operators", new AbstractButton[] { +/* 203 */ new JMenuItem("x Squared"), +/* 204 */ new JMenuItem("x Cubed"), +/* 205 */ new JMenuItem("Square Root x"), +/* 206 */ new JMenuItem("Inverse of x") }), +/* 208 */ new JCheckBoxMenuItem("Radians") }), +/* 210 */ new Menu("Programming", new JComponent[] { +/* 211 */ new JCheckBoxMenuItem("Toggle Shell Mode"), +/* 212 */ new JMenuItem("Run a Script..."), +/* 213 */ new JMenuItem("Function..."), +/* 214 */ new JMenuItem("Load Library"), +/* 215 */ new JMenuItem("Manage Startup Libraries"), +/* 216 */ new JSeparator(), +/* 217 */ new JSeparator(), +/* 218 */ new JMenuItem("View Stacks"), +/* 219 */ new JMenuItem("View Hold Variable"), +/* 220 */ new JSeparator(), +/* 221 */ new JSeparator(), +/* 222 */ new JMenuItem("Run in Terminal...") }), +/* 224 */ new Menu("Properties", new JComponent[] { +/* 225 */ new JMenuItem("Change Color"), +/* 226 */ new JMenuItem("Change Keyboard Style"), +/* 227 */ new JCheckBoxMenuItem("Always Show Commands", true), +/* 228 */ new JCheckBoxMenuItem("Auto Complete", true), +/* 229 */ new JSeparator(), +/* 230 */ new JSeparator(), +/* 231 */ new JMenuItem("Set Formatting") }), +/* 233 */ new Menu("View", new JComponent[] { +/* 234 */ new JCheckBox("Always On Top"), +/* 235 */ new JSeparator(), +/* 236 */ new JSeparator(), +/* 237 */ new JRadioButtonMenuItem("Standard"), +/* 238 */ new JRadioButtonMenuItem("Scientific"), +/* 239 */ new JRadioButtonMenuItem("Boolean"), +/* 240 */ new JRadioButtonMenuItem("Bitwise"), +/* 241 */ new JRadioButtonMenuItem("Full Calc", true), +/* 242 */ new JSeparator(), +/* 243 */ new JSeparator(), +/* 244 */ new JMenuItem("View Graph"), +/* 245 */ new JMenuItem("View 3D Graph") }) }; +/* */ +/* 248 */ private JPanel[] subPanels = { +/* 249 */ new JPanel(new FlowLayout()), new JPanel(new FlowLayout()), new JPanel(new FlowLayout()), new JPanel(new BorderLayout()) }; +/* */ +/* 251 */ private Approvable[] approvables = { +/* 252 */ new Approvable() { +/* */ public void onApprove(File file) { +/* 254 */ CalculatorGUI.silentPrint("------------------------------\n"); +/* 255 */ CalculatorGUI.silentPrint("Started Running File: " + file + " On new Thread\n"); +/* 256 */ CalculatorGUI.silentPrint("------------------------------\n"); +/* */ Thread run; +/* 258 */ CalculatorGUI.this.exec.add(run = new SilentThread(new CalculatorGUI.Run(CalculatorGUI.this, file), file.toString())); +/* 259 */ run.start(); +/* 260 */ CalculatorGUI.this.props[2] = file.getParent().toString(); +/* 261 */ CalculatorGUI.this.writeProperties(); +/* */ } +/* */ +/* */ public void onCancel() +/* */ { +/* */ } +/* */ } +/* */ , new Approvable() { +/* */ public void onApprove(File file) { +/* 267 */ CalculatorGUI.silentPrint("------------------------------\n"); +/* 268 */ CalculatorGUI.silentPrint("Loaded " + file); +/* 269 */ CalculatorGUI.silentPrint("------------------------------\n"); +/* */ try { +/* 271 */ ControlPanel.load(file.toString()); +/* */ } +/* */ catch (Exception e) { +/* 274 */ e.printStackTrace(); +/* */ } +/* 276 */ CalculatorGUI.this.props[3] = file.getParent().toString(); +/* 277 */ CalculatorGUI.this.writeProperties(); +/* */ } +/* */ +/* */ public void onCancel() +/* */ { +/* */ } +/* */ } +/* */ , new Approvable() { +/* */ public void onApprove(File file) { +/* 283 */ if ((System.out instanceof ModulusOutputStream)) +/* 284 */ ((ModulusOutputStream)System.out).flushTo(file); } +/* */ public void onCancel() { } } }; +/* */ +/* 449 */ private JButton[] hold = { new JButton("OK"), new JButton("OK"), new JButton("OK"), new JButton("OK") }; +/* 450 */ private Prompt[] prompt = { new Prompt(this, "Change Base", new JComboBox[] { new BaseComboBox(9) }, this, this.hold[0]), +/* 451 */ new Prompt(this, "Layouts", new JComponent[] { new JRadioButton("Qwerty"), +/* 452 */ new JRadioButton("Dvorak"), +/* 453 */ new JRadioButton("Alphabetical"), +/* 454 */ new JRadioButton("Other"), +/* 455 */ new JTextField("Enter other (\\ = new line)") }, this, this.hold[1]), +/* 456 */ new Prompt(this, "Functions", new JComponent[] { new ActionList(ControlPanel.getFunctions(), this), +/* 457 */ new JTextField("", 10) }, this, this.hold[2]), +/* 458 */ new Prompt(this, "Convert Bases", new JComponent[] { new BaseComboBox(9), new JTextField("", 7), new JLabel("To"), new BaseComboBox(9) }, this, this.hold[3]), +/* 459 */ new Prompt(this, "Hold Stack:", new JComponent[] { new JList() }, this, new JButton()) }; +/* */ private ButtonGroup keyboards; +/* */ +/* 294 */ public CalculatorGUI() { currentInstance = this; +/* 295 */ this.answerArea.setPreferredSize(new Dimension(100, 200)); +/* 296 */ this.formatter = new NoFormatter(5); +/* */ try { +/* 298 */ UIManager.setLookAndFeel( +/* 299 */ UIManager.getSystemLookAndFeelClassName()); +/* */ } +/* */ catch (Exception e) +/* */ { +/* 303 */ e.printStackTrace(); +/* */ } +/* 305 */ this.keys[5].get(2).setText("\\"); +/* */ +/* 307 */ this.exec.add(null); +/* 308 */ this.last.add(""); +/* 309 */ this.ans.add(""); +/* */ +/* 318 */ readProperties(); +/* */ try +/* */ { +/* 321 */ if (this.props[2].equals("none")) this.props[2] = (new File(".").getCanonicalPath().toString() + "/functions"); +/* 322 */ if (this.props[3].equals("none")) this.props[3] = (new File(".").getCanonicalPath().toString() + "/programs"); +/* */ } +/* */ catch (Exception e) +/* */ { +/* 325 */ e.printStackTrace(); +/* */ } +/* */ +/* 331 */ this.layout.add((AbstractButton)this.menus[5].get(3)); +/* 332 */ this.layout.add((AbstractButton)this.menus[5].get(4)); +/* 333 */ this.layout.add((AbstractButton)this.menus[5].get(5)); +/* 334 */ this.layout.add((AbstractButton)this.menus[5].get(6)); +/* 335 */ this.layout.add((AbstractButton)this.menus[5].get(7)); +/* */ try +/* */ { +/* 338 */ ScriptReader.runScript(this.functions.toString() + "/functionsLOD.prop"); +/* */ } catch (Exception e) { +/* 340 */ e.printStackTrace(); +/* */ } +/* 342 */ setTitle("Modulus v2.0"); +/* */ +/* 344 */ this.keyboards = new ButtonGroup(); +/* 345 */ this.keyboards.add((AbstractButton)this.prompt[1].get(0)); +/* 346 */ this.keyboards.add((AbstractButton)this.prompt[1].get(1)); +/* 347 */ this.keyboards.add((AbstractButton)this.prompt[1].get(2)); +/* 348 */ this.keyboards.add((AbstractButton)this.prompt[1].get(3)); +/* */ +/* 350 */ for (int i = 0; i < this.menus.length; i++) { +/* 351 */ this.mainbar.add(this.menus[i]); +/* 352 */ this.menus[i].addActionListener(this); +/* */ } +/* 354 */ for (int i = 0; i < this.keys.length; i++) this.keys[i].addActionListener(this); +/* */ +/* 356 */ setLayout(new BorderLayout()); +/* 357 */ add(this.panels[0], "Center"); +/* */ +/* 359 */ add(this.panels[2], "West"); +/* */ +/* 361 */ this.scroll = new JScrollPane(this.answerArea); +/* 362 */ this.scroll.setVerticalScrollBarPolicy(22); +/* 363 */ this.panels[2].add(this.scroll, "Center"); +/* 364 */ this.panels[2].add(this.terminate, "South"); +/* 365 */ this.terminate.addActionListener(this); +/* 366 */ this.panels[1].add(this.keys[10]); +/* 367 */ this.panels[1].add(this.answerField); +/* 368 */ this.panels[1].add(this.keys[9]); +/* 369 */ this.answerArea.setEditable(false); +/* */ +/* 371 */ ControlPanel.setComponent(this.answerArea); +/* */ +/* 373 */ this.numberPanel.add(this.keys[1], "Center"); +/* 374 */ this.numberPanel.add(this.keys[4], "East"); +/* */ +/* 376 */ this.panels[0].setLayout(new BorderLayout()); +/* 377 */ this.panels[0].add(this.subPanels[0], "Center"); +/* 378 */ this.panels[0].add(this.subPanels[3], "North"); +/* */ +/* 380 */ this.subPanels[3].add(this.subPanels[1], "Center"); +/* 381 */ this.subPanels[3].add(this.panels[1], "North"); +/* */ +/* 383 */ this.panels[0].add(this.subPanels[2], "South"); +/* */ +/* 385 */ this.subPanels[0].add(this.keys[2]); +/* 386 */ this.subPanels[0].add(this.numberPanel); +/* 387 */ this.subPanels[0].add(this.keys[0]); +/* */ +/* 389 */ this.subPanels[1].add(this.keys[3]); +/* 390 */ this.subPanels[1].add(this.keys[8]); +/* 391 */ this.subPanels[1].add(this.keys[5]); +/* */ +/* 394 */ this.subPanels[2].add(this.keys[6]); +/* 395 */ this.subPanels[2].add(this.keys[7]); +/* 396 */ this.subPanels[2].add(this.keys[11]); +/* */ +/* 399 */ setJMenuBar(this.mainbar); +/* 400 */ new DropTarget(this.answerArea, this); +/* 401 */ pack(); +/* 402 */ setMinimumSize(getSize()); +/* 403 */ setDefaultCloseOperation(3); +/* 404 */ this.answerField.addKeyListener(this); +/* */ +/* 407 */ SwingUtilities.updateComponentTreeUI(this); +/* */ +/* 409 */ applyProps(); +/* 410 */ Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); +/* 411 */ int x = (dim.width - getSize().width) / 2; +/* 412 */ int y = (dim.height - getSize().height) / 2; +/* 413 */ setLocation(x, y); +/* */ +/* 415 */ setVisible(true); +/* 416 */ setIconImage(Toolkit.getDefaultToolkit().getImage("modulus_symbol.png")); +/* */ +/* 418 */ System.setOut(new ModulusOutputStream(this.answerArea, System.out, true)); +/* 419 */ splash.setVisible(false); +/* 420 */ splash = null; } +/* */ +/* */ public void addListeners(Container x) +/* */ { +/* 424 */ Component[] arr = x.getComponents(); +/* 425 */ for (int i = 0; i < arr.length; i++) { +/* 426 */ if (((arr[i] instanceof Container)) || (arr[i].getClass() == JMenu.class)) addListeners((Container)arr[i]); +/* 427 */ if (AbstractButton.class.isInstance(arr[i])) +/* 428 */ ((AbstractButton)arr[i]).addActionListener(this); +/* */ } +/* */ } +/* */ +/* */ public static void main(String[] args) +/* */ { +/* 439 */ ModulusThreads.addThread("Splash Screen", new CalculatorGUI.SplashThread(null)); +/* */ try { +/* 441 */ Thread.sleep(1000L); +/* */ } +/* */ catch (InterruptedException e) { +/* 444 */ e.printStackTrace(); +/* */ } +/* 446 */ ModulusThreads.addThread("Modulus Calculator", getThread()); +/* */ } +/* */ +/* */ public void actionPerformed(ActionEvent e) +/* */ { +/* 463 */ if (Math.abs(System.currentTimeMillis() - this.sysTime) < 400L) return; +/* 464 */ this.sysTime = System.currentTimeMillis(); +/* 465 */ e.getSource(); +/* 466 */ this.keys[11].setVisible((((AbstractButton)this.menus[3].get(0)).isSelected()) || ( +/* 467 */ (((AbstractButton)this.menus[4].get(2)).isSelected()) && (((AbstractButton)this.menus[5].get(7)).isSelected()))); +/* 468 */ if (e.getSource() == this.menus[3].get(0)) { +/* 469 */ silentPrint("Shell Mode set to " + ((AbstractButton)this.menus[3].get(0)).isSelected() + "\n"); +/* 470 */ silentPrint("------------------------------\n"); +/* */ } +/* 472 */ if (e.getSource() == this.menus[0].get(0)) { +/* 473 */ System.exit(1); +/* */ } +/* 475 */ else if (e.getSource() == this.menus[0].get(1)) { +/* */ try { +/* 477 */ ModulusFileChooser fc = new ModulusFileChooser(this.approvables[2], "", new MFileFilter[] { +/* 478 */ new MFileFilter(new String[] { ".txt" }, "Text Files") }); +/* */ +/* 480 */ fc.promptDialog("Save"); +/* */ } +/* */ catch (Exception c) { +/* 483 */ c.printStackTrace(); +/* 484 */ this.answerArea.setText("Error while parsing file"); +/* */ } +/* */ } +/* */ +/* 488 */ if (e.getSource() == this.terminate) { +/* 489 */ for (Thread i : this.exec) if (i != null) i.interrupt(); +/* 490 */ this.exec = new ArrayList(); +/* 491 */ this.exec.add(null); +/* */ } +/* 493 */ else if (e.getSource() == this.menus[4].get(0)) { +/* 494 */ Color newColor = JColorChooser.showDialog(this, "Choose a button color: ", new Color(0, 0, 255)); +/* 495 */ changeColor(newColor); +/* */ } +/* 497 */ else if (e.getSource() == this.keys[1].get(11)) { +/* 498 */ if (this.answerField.getText().length() > 0) +/* */ { +/* 500 */ this.last.add(this.lastIndex + 1, this.answerField.getText()); +/* 501 */ if (this.last.size() >= 100) this.last.remove(100); +/* 502 */ if (((AbstractButton)this.menus[3].get(0)).isSelected()) { +/* */ try { +/* 504 */ silentPrint(">>>"); +/* 505 */ ControlPanel.parseLine(this.answerField.getText()); +/* 506 */ silentPrint(this.answerField.getText() + "\n"); +/* */ } catch (Exception localException1) { +/* */ } +/* 509 */ this.answerField.setText(""); +/* */ } +/* */ else { +/* 512 */ System.out.println(this.answerField.getText()); +/* 513 */ new AppendingThread(this.answerField.getText(), this.lastIndex, this.ans, this.formatter).start(); +/* 514 */ this.answerField.setText(""); +/* */ } +/* */ } +/* */ } +/* 518 */ else if (e.getSource() == this.menus[3].get(1)) { +/* 519 */ ModulusFileChooser fc = new ModulusFileChooser(this.approvables[0], this.props[2], new MFileFilter[] { +/* 520 */ new MFileFilter(new String[] { ".calc", ".marc" }, "All Accepted Scripts (.calc, .marc)"), +/* 521 */ new MFileFilter(new String[] { ".calc" }, "Modulus Calc Scripts (.calc)"), +/* 522 */ new MFileFilter(new String[] { ".marc" }, "Marc Bytecode (.marc)") }); +/* */ +/* 524 */ fc.promptDialog("Run"); +/* */ } +/* 526 */ else if (e.getSource() == this.menus[5].get(10)) { +/* 527 */ ModulusThreads.addThread("2DGraph", GraphFrame.getThread()); +/* */ } +/* 529 */ else if (e.getSource() == this.menus[5].get(11)) { +/* 530 */ ModulusThreads.addThread("3DGraph", M3DGraphWindow.getThread()); +/* */ } +/* 532 */ else if (e.getSource() == this.menus[3].get(3)) { +/* */ try { +/* 534 */ ModulusFileChooser fc = new ModulusFileChooser(this.approvables[1], this.props[2], new MFileFilter[] { +/* 535 */ new MFileFilter(new String[] { ".calc", ".marc", ".class" }, "All Accepted Libraries (.calc, .marc, .class)"), +/* 536 */ new MFileFilter(new String[] { ".calc" }, "Modulus Calc Scripts (.calc)"), +/* 537 */ new MFileFilter(new String[] { ".marc" }, "Marc Bytecode (.marc"), +/* 538 */ new MFileFilter(new String[] { ".class" }, "Java Class (.class)") }); +/* */ +/* 540 */ fc.promptDialog("Load"); +/* */ } +/* */ catch (Exception c) { +/* 543 */ c.printStackTrace(); +/* 544 */ this.answerArea.setText("Error while parsing file"); +/* */ } +/* */ +/* */ } +/* 548 */ else if (e.getSource() == this.keys[10].get(0)) { +/* 549 */ this.answerArea.setText(""); +/* */ } +/* 551 */ else if (e.getSource() == this.keys[10].get(0)) { +/* 552 */ this.answerArea.setText(""); +/* */ } +/* 554 */ else if (e.getSource() == this.keys[9].get(0)) { +/* 555 */ if (this.answerField.getText().length() > 0) +/* 556 */ this.answerField.setText(this.answerField.getText().substring(0, this.answerField.getText().length() - 1)); +/* */ } +/* 558 */ else if (e.getSource() == this.keys[9].get(1)) { +/* 559 */ this.answerField.setText(""); +/* */ } +/* 561 */ else if (e.getSource() == this.menus[1].get(0)) { +/* 562 */ this.hold[0] = new JButton("OK"); +/* 563 */ this.prompt[0] = new Prompt(this, "Change Base", new JComboBox[] { new BaseComboBox(9) }, this, this.hold[0]); +/* 564 */ this.prompt[0].setVisible(true); +/* */ } +/* 566 */ else if (e.getSource() == this.menus[4].get(1)) { +/* 567 */ this.prompt[1].setVisible(true); +/* */ } +/* 569 */ else if (e.getSource() == this.menus[1].get(1)) { +/* 570 */ this.hold[3] = new JButton("OK"); +/* 571 */ this.prompt[3] = new Prompt(this, "Convert Bases", new JComponent[] { new BaseComboBox(9), new JTextField("", 7), new JLabel("To"), new BaseComboBox(9) }, this, this.hold[3]); +/* 572 */ this.prompt[3].setVisible(true); +/* */ } +/* 574 */ else if (e.getSource() == this.menus[3].get(4)) { +/* 575 */ ControlPanel.reset(); +/* */ +/* 577 */ FileChanger x = new FileChanger(this.functions.toString()); +/* 578 */ x.setVisible(true); +/* */ } +/* 581 */ else if (e.getSource() == this.menus[3].get(2)) { +/* 582 */ this.temp = new ActionList(ControlPanel.getFunctions(), this); +/* 583 */ JScrollPane pane = new JScrollPane((JComponent)this.temp, 22, 30); +/* 584 */ JPanel layout = new JPanel(new BorderLayout()); +/* 585 */ pane.setPreferredSize(new Dimension(200, 100)); +/* 586 */ layout.add(pane, "Center"); +/* 587 */ this.prompt[2] = new Prompt(this, "Functions", new JComponent[] { layout, +/* 588 */ new JTextField("", 10) }, this, this.hold[2]); +/* 589 */ this.prompt[2].setVisible(true); +/* */ } +/* 591 */ else if (e.getSource() == this.menus[3].get(8)) { +/* 592 */ JScrollPane pane = new JScrollPane(new JList(ControlPanel.getCurrentHold().toArray()), 22, 30); +/* 593 */ JPanel layout = new JPanel(new BorderLayout()); +/* 594 */ pane.setPreferredSize(new Dimension(75, 100)); +/* 595 */ layout.add(pane, "Center"); +/* 596 */ JButton x = new JButton("OK"); +/* */ +/* 598 */ this.prompt[4] = new Prompt(this, "Hold Stack:", new JPanel[] { layout }, this, x); +/* 599 */ this.prompt[4].setVisible(true); +/* */ } +/* 601 */ else if (e.getSource() == this.menus[3].get(7)) { +/* 602 */ JScrollPane[] pane = new JScrollPane[26]; +/* 603 */ JPanel[] panes = new JPanel[26]; +/* 604 */ JPanel layout = new JPanel(new FlowLayout()); +/* */ +/* 606 */ for (int i = 0; i < pane.length; i++) { +/* 607 */ panes[i] = new JPanel(new BorderLayout()); +/* 608 */ pane[i] = new JScrollPane(new JList(ControlPanel.getStacks()[i].toArray())); +/* 609 */ pane[i].setPreferredSize(new Dimension(50, 75)); +/* 610 */ panes[i].add(new JLabel((char)(i + 65)), "North"); +/* 611 */ panes[i].add(pane[i], "South"); +/* 612 */ layout.add(panes[i]); +/* */ } +/* 614 */ JScrollPane finalPane = new JScrollPane(layout); +/* 615 */ finalPane.setPreferredSize(new Dimension(350, 100)); +/* 616 */ JButton x = new JButton("OK"); +/* */ +/* 618 */ Prompt prompt = new Prompt(this, "Variable Stacks:", new JScrollPane[] { finalPane }, this, x); +/* 619 */ prompt.setVisible(true); +/* */ } +/* 621 */ else if (e.getSource().equals(this.hold[0])) { +/* 622 */ Calculator.setBase(((JComboBox)this.prompt[0].get(0)).getSelectedIndex() + 1); +/* 623 */ if (Calculator.getBase() != 10) { +/* 624 */ this.menus[3].get(2).setEnabled(false); +/* 625 */ ((AbstractButton)this.menus[3].get(2)).setText("Function... ( Base needed to be 10)"); +/* */ } +/* */ else { +/* 628 */ this.menus[3].get(2).setEnabled(true); +/* 629 */ ((AbstractButton)this.menus[3].get(2)).setText("Function..."); +/* */ } +/* */ } +/* 632 */ else if (e.getSource().equals(this.hold[1])) { +/* 633 */ if (((AbstractButton)this.prompt[1].get(0)).isSelected()) +/* 634 */ this.keys[0].reset("1234567890\\QWERTYUIOP\\ASDFGHJKL\\ZXCVBNM"); +/* 635 */ else if (((AbstractButton)this.prompt[1].get(1)).isSelected()) +/* 636 */ this.keys[0].reset("1234567890\\PYFGCRL\\AOEUIDHTNS\\QJKXBMWVZ"); +/* 637 */ else if (((AbstractButton)this.prompt[1].get(2)).isSelected()) +/* 638 */ this.keys[0].reset("0123456789\\ABCDEFGHIJ\\KLMNOPQRST\\UVWXYZ"); +/* 639 */ else this.keys[0].reset(((JTextField)this.prompt[1].get(4)).getText()); +/* 640 */ this.keys[0].addActionListener(this); +/* 641 */ this.props[0] = this.keys[0].getString(); +/* 642 */ writeProperties(); +/* */ } +/* 644 */ else if (e.getSource().equals(this.menus[4].get(6))) { +/* 645 */ new FormatFrame(this, this.formatter).setVisible(true); +/* */ } +/* 647 */ else if (e.getSource() == this.temp) { +/* 648 */ String text = ((ActionList)this.temp).getSelected().getText(); +/* 649 */ if (!text.contains("(")) text = text + "("; +/* 650 */ ((JTextField)this.prompt[2].get(1)).setText(text); +/* */ } +/* 652 */ else if (e.getSource().equals(this.hold[2])) { +/* */ try { +/* 654 */ System.out.println(ScriptReader.preformFunction( +/* 655 */ ((JTextField)this.prompt[2].get(1)).getText(), +/* 656 */ ControlPanel.getFiles()[((ActionList)this.temp).getSelectedIndex()].toString(), +/* 657 */ new Object[] { ControlPanel.getClasses().get(((ActionList)this.temp).getSelectedIndex()) })); +/* */ } +/* */ catch (Exception c) +/* */ { +/* 661 */ System.err.println(c); +/* 662 */ c.printStackTrace(); +/* 663 */ if (!c.getMessage().equals("The Parameters do not match")) return; +/* 664 */ }new AlertBox("The parameters of " + ((JTextField)this.prompt[2].get(1)).getText() + " cannot be applied, the parameters must match", "Parameter Exception"); +/* */ } +/* 668 */ else if (e.getSource().equals(this.hold[3])) { +/* */ try { +/* 670 */ System.out.println(((JTextField)this.prompt[3].get(1)).getText() + " base " + (((JComboBox)this.prompt[3].get(0)).getSelectedIndex() + 1) + " to base " + (((JComboBox)this.prompt[3].get(3)).getSelectedIndex() + 1)); +/* 671 */ System.out.println(this.answerArea.getText() + BaseConverter.convertFromDecimal(BaseConverter.convertToDecimal(((JTextField)this.prompt[3].get(1)).getText(), ((JComboBox)this.prompt[3].get(0)).getSelectedIndex() + 1), ((JComboBox)this.prompt[3].get(3)).getSelectedIndex() + 1)); +/* */ } +/* */ catch (Exception c) { +/* 674 */ System.err.println(c); +/* 675 */ c.printStackTrace(); +/* */ } +/* */ } +/* 678 */ else if (this.keys[8].contains(e.getSource())) { +/* 679 */ this.answerField.setText(this.answerField.getText() + this.topOpsArr[this.keys[8].indexOf(e.getSource())]); +/* */ } +/* 681 */ else if (e.getSource() == this.menus[2].get(5)) { +/* 682 */ Calculator.setRadians(((AbstractButton)this.menus[2].get(5)).isSelected()); +/* */ } +/* 684 */ else if (e.getSource() == this.menus[5].get(3)) { +/* 685 */ changeSize("standard"); +/* */ } +/* 687 */ else if (e.getSource() == this.menus[5].get(4)) { +/* 688 */ changeSize("scientific"); +/* */ } +/* 690 */ else if (e.getSource() == this.menus[5].get(5)) { +/* 691 */ changeSize("boolean"); +/* */ } +/* 693 */ else if (e.getSource() == this.menus[5].get(6)) { +/* 694 */ changeSize("bitwise"); +/* */ } +/* 696 */ else if (e.getSource() == this.menus[5].get(7)) { +/* 697 */ changeSize("full"); +/* */ } +/* 699 */ else if (e.getSource() == this.menus[3].get(11)) { +/* 700 */ File file = null; +/* 701 */ JFileChooser fc = new JFileChooser(this.props[2]); +/* 702 */ int returnVal = fc.showOpenDialog(this); +/* */ +/* 704 */ if (returnVal == 0) { +/* 705 */ file = fc.getSelectedFile(); +/* */ +/* 707 */ this.props[2] = file.getParent().toString(); +/* 708 */ writeProperties(); +/* */ } +/* 710 */ ProcessBuilder run = new ProcessBuilder(new String[] { "calcp", file.toString() }); +/* */ try { +/* 712 */ run.start(); +/* */ } +/* */ catch (IOException c) { +/* 715 */ this.answerArea.setText("Process could not start"); +/* */ } +/* */ +/* */ } +/* 719 */ else if (e.getSource().getClass() == JMenuItem.class) { +/* 720 */ int i = indexOf(this.map[0], ((JMenuItem)e.getSource()).getText()); +/* 721 */ if (i < 0) return; +/* 722 */ String txt = this.map[1][i]; +/* 723 */ if (txt.endsWith("(")) this.answerField.setText(txt + this.answerField.getText() + ")"); +/* 724 */ else if (txt.startsWith(")")) this.answerField.setText("(" + this.answerField.getText() + txt); else +/* 725 */ this.answerField.setText("(" + this.answerField.getText() + ")" + txt); +/* */ } +/* 727 */ else if (e.getSource().getClass() == JButton.class) { +/* 728 */ this.answerField.setText(this.answerField.getText() + ((JButton)e.getSource()).getText()); +/* */ } +/* 730 */ else if (e.getSource() == this.menus[5].get(0)) { +/* 731 */ setAlwaysOnTop(((AbstractButton)this.menus[5].get(0)).isSelected()); +/* */ } +/* */ } +/* */ +/* */ public void changeSize(String size) { +/* 736 */ if (size.equals("standard")) { +/* 737 */ this.keys[0].setVisible(false); +/* 738 */ this.keys[1].setVisible(true); +/* 739 */ this.keys[2].setVisible(false); +/* 740 */ this.keys[3].setVisible(true); +/* 741 */ this.keys[4].setVisible(true); +/* 742 */ this.keys[5].setVisible(false); +/* 743 */ this.keys[6].setVisible(false); +/* 744 */ this.keys[7].setVisible(false); +/* 745 */ this.keys[8].setVisible(false); +/* 746 */ this.keys[9].setVisible(false); +/* 747 */ this.keys[10].setVisible(true); +/* 748 */ this.keys[11].setVisible(false); +/* 749 */ setMinimumSize(new Dimension(0, 0)); +/* 750 */ this.answerField.setColumns(17); +/* 751 */ this.answerArea.setRows(9); +/* 752 */ this.answerArea.setColumns(17); +/* 753 */ pack(); +/* 754 */ setMinimumSize(getSize()); +/* 755 */ ((AbstractButton)this.menus[5].get(3)).setSelected(true); +/* */ } +/* 757 */ else if (size.equals("scientific")) { +/* 758 */ this.keys[0].setVisible(false); +/* 759 */ this.keys[1].setVisible(true); +/* 760 */ this.keys[2].setVisible(true); +/* 761 */ this.keys[3].setVisible(true); +/* 762 */ this.keys[4].setVisible(true); +/* 763 */ this.keys[5].setVisible(false); +/* 764 */ this.keys[6].setVisible(false); +/* 765 */ this.keys[7].setVisible(false); +/* 766 */ this.keys[8].setVisible(true); +/* 767 */ this.keys[9].setVisible(false); +/* 768 */ this.keys[10].setVisible(true); +/* 769 */ this.keys[11].setVisible(false); +/* 770 */ setMinimumSize(new Dimension(0, 0)); +/* 771 */ this.answerField.setColumns(20); +/* 772 */ this.answerArea.setRows(9); +/* 773 */ this.answerArea.setColumns(20); +/* 774 */ pack(); +/* 775 */ setMinimumSize(getSize()); +/* 776 */ ((AbstractButton)this.menus[5].get(4)).setSelected(true); +/* */ } +/* 778 */ else if (size.equals("boolean")) { +/* 779 */ this.keys[0].setVisible(false); +/* 780 */ this.keys[1].setVisible(true); +/* 781 */ this.keys[2].setVisible(true); +/* 782 */ this.keys[3].setVisible(true); +/* 783 */ this.keys[4].setVisible(true); +/* 784 */ this.keys[5].setVisible(false); +/* 785 */ this.keys[6].setVisible(false); +/* 786 */ this.keys[7].setVisible(true); +/* 787 */ this.keys[8].setVisible(true); +/* 788 */ this.keys[9].setVisible(false); +/* 789 */ this.keys[10].setVisible(true); +/* 790 */ this.keys[11].setVisible(false); +/* 791 */ setMinimumSize(new Dimension(0, 0)); +/* 792 */ this.answerField.setColumns(20); +/* 793 */ this.answerArea.setRows(9); +/* 794 */ this.answerArea.setColumns(20); +/* 795 */ pack(); +/* 796 */ setMinimumSize(getSize()); +/* 797 */ ((AbstractButton)this.menus[5].get(5)).setSelected(true); +/* */ } +/* 799 */ else if (size.equals("bitwise")) { +/* 800 */ this.keys[0].setVisible(false); +/* 801 */ this.keys[1].setVisible(true); +/* 802 */ this.keys[2].setVisible(true); +/* 803 */ this.keys[3].setVisible(true); +/* 804 */ this.keys[4].setVisible(true); +/* 805 */ this.keys[5].setVisible(true); +/* 806 */ this.keys[6].setVisible(false); +/* 807 */ this.keys[7].setVisible(true); +/* 808 */ this.keys[8].setVisible(true); +/* 809 */ this.keys[9].setVisible(false); +/* 810 */ this.keys[10].setVisible(true); +/* 811 */ this.keys[11].setVisible(false); +/* 812 */ setMinimumSize(new Dimension(0, 0)); +/* 813 */ this.answerField.setColumns(20); +/* 814 */ this.answerArea.setRows(9); +/* 815 */ this.answerArea.setColumns(20); +/* 816 */ pack(); +/* 817 */ setMinimumSize(getSize()); +/* 818 */ ((AbstractButton)this.menus[5].get(6)).setSelected(true); +/* */ } +/* 820 */ else if (size.equals("full")) { +/* 821 */ this.keys[0].setVisible(true); +/* 822 */ this.keys[1].setVisible(true); +/* 823 */ this.keys[2].setVisible(true); +/* 824 */ this.keys[3].setVisible(true); +/* 825 */ this.keys[4].setVisible(true); +/* 826 */ this.keys[5].setVisible(true); +/* 827 */ this.keys[6].setVisible(true); +/* 828 */ this.keys[7].setVisible(true); +/* 829 */ this.keys[8].setVisible(true); +/* 830 */ this.keys[9].setVisible(true); +/* 831 */ this.keys[10].setVisible(true); +/* 832 */ this.keys[11].setVisible(true); +/* 833 */ setMinimumSize(new Dimension(0, 0)); +/* 834 */ this.answerField.setColumns(35); +/* 835 */ this.answerArea.setRows(16); +/* 836 */ this.answerArea.setColumns(25); +/* 837 */ pack(); +/* 838 */ setMinimumSize(getSize()); +/* 839 */ ((AbstractButton)this.menus[5].get(7)).setSelected(true); +/* */ } +/* */ +/* 842 */ this.props[4] = size; +/* */ } +/* */ public void changeColor(Color newColor) { +/* 845 */ this.props[1] = (BaseConverter.convertFromDecimal(newColor.getRed(), 16) + BaseConverter.convertFromDecimal(newColor.getGreen(), 16) + BaseConverter.convertFromDecimal(newColor.getBlue(), 16)); +/* 846 */ for (int i = 0; i < this.keys.length; i++) this.keys[i].setColor(newColor); +/* 847 */ writeProperties(); +/* */ } +/* */ public String fill(int x) { +/* 850 */ String ret = ""; +/* 851 */ for (int i = 0; i < x; i++) ret = ret + " "; +/* 852 */ return ret; +/* */ } +/* */ public boolean contains(Container x, Object o) { +/* 855 */ Component[] comps = x.getComponents(); +/* 856 */ for (Component i : comps) if (i == o) return true; +/* 857 */ return false; +/* */ } +/* */ public boolean keyboardsContains(Object o) { +/* 860 */ for (int i = 0; i < this.keys.length; i++) if (this.keys[i].contains(o)) return true; +/* 861 */ return false; +/* */ } +/* */ public void load() { +/* 864 */ for (File x : this.functions.listFiles()) +/* */ try { +/* 866 */ ControlPanel.load(x.toString()); +/* */ } catch (Exception localException) { +/* */ } +/* */ } +/* */ +/* */ private int indexOf(Object[] args, Object o) { +/* 872 */ for (int i = 0; i < args.length; i++) if (args[i].equals(o)) return i; +/* 873 */ return -1; +/* */ } +/* */ public void readProperties() { +/* 876 */ this.props = new PropertiesReader("./properties/properties.prop").readProperties(); +/* 877 */ applyProps(); +/* */ } +/* */ public void writeProperties() { +/* 880 */ new PropertiesReader("./properties/properties.prop").writeProperties(this.props); +/* */ } +/* */ public void applyProps() { +/* 883 */ if (!this.keys[0].getString().equals( +/* 884 */ this.props[0])) +/* */ { +/* 886 */ this.keys[0].reset(this.props[0]); +/* */ } +/* 888 */ changeSize(this.props[4]); +/* 889 */ changeColor(new Color((int)BaseConverter.convertToDecimal(this.props[1], 16))); +/* 890 */ setAlwaysOnTop(Boolean.parseBoolean(this.props[5])); +/* */ } +/* */ +/* */ public void dragEnter(DropTargetDragEvent dtde) +/* */ { +/* */ } +/* */ +/* */ public void dragExit(DropTargetEvent dte) +/* */ { +/* */ } +/* */ +/* */ public void dragOver(DropTargetDragEvent dtde) +/* */ { +/* */ } +/* */ +/* */ public void dropActionChanged(DropTargetDragEvent dtde) { +/* */ } +/* */ +/* */ public void drop(DropTargetDropEvent dtde) { +/* */ try { +/* 910 */ Transferable tr = dtde.getTransferable(); +/* 911 */ DataFlavor[] flavors = tr.getTransferDataFlavors(); +/* 912 */ for (int i = 0; i < flavors.length; i++) +/* 913 */ if (flavors[i].isFlavorJavaFileListType()) { +/* 914 */ dtde.acceptDrop(3); +/* */ +/* 916 */ List list = (List)tr.getTransferData(flavors[i]); +/* 917 */ for (int j = 0; j < list.size(); j++) { +/* 918 */ File file = new File(list.get(j).toString()); +/* */ Thread run; +/* 920 */ this.exec.set(0, run = new Thread(new CalculatorGUI.Run(file))); +/* 921 */ run.start(); +/* 922 */ this.props[2] = file.getParent().toString(); +/* 923 */ writeProperties(); +/* */ } +/* 925 */ dtde.dropComplete(true); +/* 926 */ return; +/* */ } +/* */ } catch (Exception e) { +/* 929 */ e.printStackTrace(); +/* */ } +/* */ } +/* */ +/* */ public void keyTyped(KeyEvent e) { +/* */ } +/* */ +/* */ public void keyPressed(KeyEvent e) { +/* 937 */ if (e.getKeyCode() == 17) this.controlHeld = true; +/* 938 */ if (e.getKeyCode() == 16) this.shiftHeld = true; +/* */ } +/* */ +/* */ public void keyReleased(KeyEvent e) +/* */ { +/* 944 */ if (e.getKeyCode() == 17) this.controlHeld = false; +/* 945 */ if (e.getKeyCode() == 16) this.shiftHeld = false; +/* 946 */ if (e.getSource() == this.answerField) { +/* 947 */ if ((((AbstractButton)this.menus[4].get(3)).isSelected()) && ( +/* 948 */ (contains((char)e.getKeyCode(), ",./\\[/*-+".toCharArray())) || ((this.shiftHeld) && (contains((char)e.getKeyCode(), "56789;,./\\=".toCharArray()))))) { +/* */ String app; +/* */ try { +/* 951 */ app = (String)this.ans.get(this.lastIndex + 1); +/* */ } +/* */ catch (IndexOutOfBoundsException c) +/* */ { +/* */ String app; +/* 954 */ app = (String)this.ans.get(this.lastIndex); +/* */ } +/* 956 */ this.answerField.setText(this.answerField.getText() + app); +/* 957 */ this.answerField.setCaretPosition(this.answerField.getText().length() - app.length()); +/* 958 */ this.answerField.moveCaretPosition(this.answerField.getText().length()); +/* */ } +/* */ +/* 961 */ if (e.getKeyCode() == 10) { +/* 962 */ actionPerformed(new ActionEvent(this.keys[1].get(11), 0, "")); +/* */ } +/* 964 */ if (e.getKeyCode() == 38) { +/* 965 */ if (this.controlHeld) { +/* 966 */ if (this.lastIndex < this.ans.size() - 1) { +/* 967 */ String temp = this.answerField.getText(); +/* 968 */ if (this.answerField.getSelectionStart() >= 0) +/* 969 */ temp = temp.substring(0, this.answerField.getSelectionStart()) + temp.substring(this.answerField.getSelectionEnd()); +/* 970 */ temp = temp.substring(0, this.answerField.getCaretPosition()) + (String)this.ans.get(++this.lastIndex) + temp.substring(this.answerField.getCaretPosition()); +/* 971 */ this.answerField.setText(temp); +/* */ } +/* 973 */ return; +/* */ } +/* */ +/* 977 */ if (this.lastIndex < this.last.size() - 1) +/* 978 */ this.answerField.setText((String)this.last.get(++this.lastIndex)); +/* */ } +/* 980 */ if (e.getKeyCode() == 40) { +/* 981 */ if (this.controlHeld) { +/* 982 */ if (this.lastIndex > 0) { +/* 983 */ String temp = this.answerField.getText(); +/* 984 */ if (this.answerField.getSelectionStart() >= 0) +/* 985 */ temp = temp.substring(0, this.answerField.getSelectionStart()) + temp.substring(this.answerField.getSelectionEnd()); +/* 986 */ temp = temp.substring(0, this.answerField.getCaretPosition()) + (String)this.ans.get(--this.lastIndex) + temp.substring(this.answerField.getCaretPosition()); +/* 987 */ this.answerField.setText(temp); +/* */ } +/* 989 */ return; +/* */ } +/* */ +/* 993 */ if (this.lastIndex > 0) +/* 994 */ this.answerField.setText((String)this.last.get(--this.lastIndex)); +/* */ } +/* */ } +/* */ } +/* */ +/* 999 */ public static void silentPrint(String prnt) { if ((System.out instanceof ModulusOutputStream)) ((ModulusOutputStream)System.out).silentPrint(prnt); } +/* */ public DecimalFormatter getFormatter() +/* */ { +/* 1002 */ return this.formatter; +/* */ } +/* */ public void setDecimalFormatter(DecimalFormatter set) { +/* 1005 */ this.formatter = set; +/* */ } +/* */ public static CalculatorGUI getCurrentInstance() { +/* 1008 */ return currentInstance; +/* */ } +/* */ private boolean contains(char x, char[] cs) { +/* 1011 */ for (char y : cs) if (y == x) return true; +/* 1012 */ return false; +/* */ } +/* */ +/* */ private void removeSelected() +/* */ { +/* 1027 */ for (Menu m : this.menus) m.setSelected(false); +/* */ } +/* 1029 */ public void mouseClicked(MouseEvent e) { removeSelected(); } +/* 1030 */ public void mousePressed(MouseEvent e) { removeSelected(); } +/* 1031 */ public void mouseReleased(MouseEvent e) { removeSelected(); } +/* */ public void mouseEntered(MouseEvent e) { +/* */ } +/* */ public void mouseExited(MouseEvent e) { } +/* 1035 */ public static Thread getThread() { return new CalculatorGUI.GuiThread(null); } +/* */ +/* */ private static class GuiThread extends Thread { +/* */ public void run() { +/* 1039 */ new CalculatorGUI().setVisible(true); +/* */ } +/* */ } +/* */ +/* */ private class Run +/* */ implements Runnable +/* */ { +/* */ File f; +/* */ +/* */ public Run(File file) +/* */ { +/* 1017 */ this.f = file; +/* */ } +/* */ public void run() { +/* */ try { +/* 1021 */ ScriptReader.runScript(this.f.toString()); +/* */ } +/* */ catch (Exception localException) +/* */ { +/* */ } +/* */ } +/* */ } +/* */ +/* */ private static class SplashScreen extends JWindow +/* */ { +/* */ private static final long serialVersionUID = 4883331298436699474L; +/* */ private BufferedImage image; +/* */ +/* */ public SplashScreen() +/* */ { +/* */ try +/* */ { +/* 1051 */ this.image = ImageIO.read(new File(new File(".").getCanonicalFile(), "splash-screen.png")); +/* */ } +/* */ catch (IOException e) { +/* 1054 */ e.printStackTrace(); +/* */ } +/* 1056 */ setSize(this.image.getWidth(), this.image.getHeight()); +/* 1057 */ Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); +/* 1058 */ int x = (dim.width - getSize().width) / 2; +/* 1059 */ int y = (dim.height - getSize().height) / 2; +/* 1060 */ setLocation(x, y); +/* */ } +/* */ public void paint(Graphics g) { +/* 1063 */ g.drawImage(this.image, 0, 0, null); +/* */ } +/* */ } +/* */ +/* */ private static class SplashThread extends Thread { +/* 1068 */ public void run() { CalculatorGUI.splash = new CalculatorGUI.SplashScreen(); +/* 1069 */ CalculatorGUI.splash.setAlwaysOnTop(true); +/* 1070 */ CalculatorGUI.splash.setVisible(true); +/* */ } +/* */ } +/* */ } + +/* Location: Modulus.jar + * Qualified Name: CalculatorGUI + * JD-Core Version: 0.6.2 + */
\ No newline at end of file |