package jmathlib.ui.swing; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; /** * <p>The <i>Release notes Frame</i> dialog.</p> * <p>This dialog shows the file <kbd>releasenotes.txt</kbd></p> * @version 1.9 */ public class ReleaseNotes extends JDialog { JScrollPane jScrollPane1 = new JScrollPane(); JTextArea jTextArea1 = new JTextArea(); static ReleaseNotes activeInstance = null; JMenuItem jMenuItemReleaseNotes = new JMenuItem("Release Notes Dialog"); public ReleaseNotes() { if (ReleaseNotes.activeInstance != null) { ReleaseNotes.activeInstance.setVisible(true); return ; } if (ReleaseNotes.activeInstance == null) { jMenuItemReleaseNotes.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jMenuItemReleaseNotes_actionPerformed(e); } }); SwingGUI.runningReference.jMenu3.add(this.jMenuItemReleaseNotes); ReleaseNotes.activeInstance = this; } try { jbInit(); } catch(Exception e) { e.printStackTrace(); } String fileName = "MathLib/UI/Swing/releasenotes.txt"; try { FileReader fr = new FileReader(fileName); jTextArea1.read(fr, null); } catch (IOException ioex) { ioex.printStackTrace(); // See DN0008 String errmsg = "There was an error opening " + fileName; errmsg += "" + '\n' + "" + '\n'; errmsg += "Current directory: " + new File(".").getAbsolutePath(); jTextArea1.setText(errmsg); } } private void jbInit() throws Exception { this.setTitle("Release Notes"); // Added +30 to the height to correct Windows title bar this.setSize(new Dimension(360, 282+30)); // Get the size of the screen Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); // position the frame in the centre of the screen this.setLocation((d.width-getSize().width) / 2, (d.height-getSize().height) / 2); this.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(WindowEvent e) { this_windowClosing(e); } }); jTextArea1.setFont(new java.awt.Font("Monospaced", 0, 12)); jTextArea1.setBorder(null); jTextArea1.setEditable(false); jTextArea1.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(KeyEvent e) { jTextArea1_keyPressed(e); } }); this.getContentPane().add(jScrollPane1, BorderLayout.CENTER); jScrollPane1.getViewport().add(jTextArea1, null); this.setVisible(true); } void this_windowClosing(WindowEvent e) { SwingGUI.runningReference.jMenu3.remove(this.jMenuItemReleaseNotes); activeInstance = null; } void jMenuItemReleaseNotes_actionPerformed(ActionEvent e) { ReleaseNotes.activeInstance.setVisible(true); } /** * Handles the key pressing events on the textarea. * <p>See releasenotes.txt - DN0013 section</p> * @param e The key pressed */ void jTextArea1_keyPressed(KeyEvent e) { int keyValue = e.getKeyCode(); switch (keyValue) { case KeyEvent.VK_ESCAPE: // Let's close the window this.processWindowEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING)); default: } } }