Add About box
authorBill Kuker <bkuker@billkuker.com>
Sun, 5 Dec 2010 15:30:00 +0000 (15:30 +0000)
committerBill Kuker <bkuker@billkuker.com>
Sun, 5 Dec 2010 15:30:00 +0000 (15:30 +0000)
gui/com/billkuker/rocketry/motorsim/visual/workbench/About.java [new file with mode: 0644]
gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorWorkbench.java
gui/com/billkuker/rocketry/motorsim/visual/workbench/license.txt [new file with mode: 0644]

diff --git a/gui/com/billkuker/rocketry/motorsim/visual/workbench/About.java b/gui/com/billkuker/rocketry/motorsim/visual/workbench/About.java
new file mode 100644 (file)
index 0000000..f3620ba
--- /dev/null
@@ -0,0 +1,124 @@
+package com.billkuker.rocketry.motorsim.visual.workbench;\r
+\r
+import java.awt.BorderLayout;\r
+import java.awt.Color;\r
+import java.awt.Desktop;\r
+import java.awt.event.MouseEvent;\r
+import java.awt.event.MouseListener;\r
+import java.io.BufferedReader;\r
+import java.io.IOException;\r
+import java.io.InputStreamReader;\r
+import java.net.URI;\r
+import java.net.URISyntaxException;\r
+\r
+import javax.swing.JDialog;\r
+import javax.swing.JFrame;\r
+import javax.swing.JLabel;\r
+import javax.swing.JScrollPane;\r
+import javax.swing.JTextArea;\r
+import javax.swing.SwingUtilities;\r
+\r
+public class About extends JDialog {\r
+       private static final long serialVersionUID = 1L;\r
+       private final JFrame f;\r
+\r
+       private final static URI webpage;\r
+       static {\r
+               try {\r
+                       webpage = new URI(\r
+                                       "http://content.billkuker.com/projects/rocketry/software");\r
+               } catch (URISyntaxException e) {\r
+                       throw new Error(e);\r
+               }\r
+       }\r
+\r
+       public About(final JFrame f) {\r
+               super(f, "About " + MotorWorkbench.name, true);\r
+               this.f = f;\r
+               setSize(400, 250);\r
+\r
+               setIconImage(f.getIconImage());\r
+\r
+               setLayout(new BorderLayout());\r
+               add(new JLabel("<html>" + MotorWorkbench.name\r
+                               + " &copy;2010 Bill Kuker</html>"), BorderLayout.NORTH);\r
+               JTextArea text;\r
+               add(new JScrollPane(text = new JTextArea()), BorderLayout.CENTER);\r
+               text.setEditable(false);\r
+               StringBuffer lic = new StringBuffer();\r
+               BufferedReader in = new BufferedReader(new InputStreamReader(getClass()\r
+                               .getResourceAsStream("license.txt")));\r
+               String line;\r
+               try {\r
+                       while ((line = in.readLine()) != null) {\r
+                               lic.append(line);\r
+                               lic.append("\n");\r
+                       }\r
+               } catch (IOException e1) {\r
+                       // TODO Auto-generated catch block\r
+                       e1.printStackTrace();\r
+               }\r
+               text.setText(lic.toString());\r
+               JLabel link = new JLabel(\r
+                               "<html><u>Visit MotorSim on the Web</u></html>");\r
+               link.setForeground(Color.BLUE);\r
+               add(link, BorderLayout.SOUTH);\r
+               link.addMouseListener(new MouseListener() {\r
+\r
+                       @Override\r
+                       public void mouseReleased(MouseEvent e) {\r
+                       }\r
+\r
+                       @Override\r
+                       public void mousePressed(MouseEvent e) {\r
+                       }\r
+\r
+                       @Override\r
+                       public void mouseExited(MouseEvent e) {\r
+                       }\r
+\r
+                       @Override\r
+                       public void mouseEntered(MouseEvent e) {\r
+                       }\r
+\r
+                       @Override\r
+                       public void mouseClicked(MouseEvent e) {\r
+                               if (Desktop.isDesktopSupported()) {\r
+                                       Desktop desktop = Desktop.getDesktop();\r
+                                       try {\r
+                                               desktop.browse(webpage);\r
+                                       } catch (IOException x) {\r
+\r
+                                       }\r
+                               } else {\r
+\r
+                               }\r
+\r
+                       }\r
+               });\r
+       }\r
+\r
+       @Override\r
+       public void setVisible(boolean v) {\r
+               int x = f.getLocation().x + f.getWidth() / 2 - getWidth() / 2;\r
+               int y = f.getLocation().y + f.getHeight() / 2 - getHeight() / 2;\r
+               setLocation(x, y);\r
+               super.setVisible(v);\r
+       }\r
+\r
+       public static void main(String args[]) {\r
+               JFrame f = new JFrame();\r
+               f.setSize(1024, 768);\r
+               f.setVisible(true);\r
+               final About s = new About(f);\r
+               SwingUtilities.invokeLater(new Runnable() {\r
+\r
+                       @Override\r
+                       public void run() {\r
+                               s.setVisible(true);\r
+\r
+                       }\r
+               });\r
+\r
+       }\r
+}\r
index db8995df1f02656f889d67c2a168d417f920c23a..313a1e5b01bc694503dff2a9470a4649e0247088 100644 (file)
@@ -31,6 +31,8 @@ public class MotorWorkbench extends RememberJFrame {
        \r
        private SettingsEditor settings = new SettingsEditor(this);\r
        \r
+       private About about = new About(this);\r
+       \r
        private JFrame fuelEditorFrame = new RememberJFrame(800,600){\r
                private static final long serialVersionUID = 1L;\r
                {\r
@@ -213,6 +215,22 @@ public class MotorWorkbench extends RememberJFrame {
                                                });\r
                                        }\r
                                });\r
+                               add(new JMenu("Help"){\r
+                                       private static final long serialVersionUID = 1L;\r
+                                       {\r
+                                               add(new JMenuItem("About") {\r
+                                                       private static final long serialVersionUID = 1L;\r
+                                                       {\r
+                                                               addActionListener(new ActionListener() {\r
+                                                                       @Override\r
+                                                                       public void actionPerformed(ActionEvent e) {\r
+                                                                               about.setVisible(true);\r
+                                                                       }\r
+                                                               });\r
+                                                       }\r
+                                               });\r
+                                       }\r
+                               });\r
                        }\r
                });\r
        }\r
diff --git a/gui/com/billkuker/rocketry/motorsim/visual/workbench/license.txt b/gui/com/billkuker/rocketry/motorsim/visual/workbench/license.txt
new file mode 100644 (file)
index 0000000..e0cc42e
--- /dev/null
@@ -0,0 +1,33 @@
+THIS SOFTWARE IS INTENDED ONLY FOR THE\r
+SIMULATION OF SOLID ROCKET MOTORS AS A\r
+SUBSTITUTE FOR THE CONSTRUCTION AND\r
+TESTING OF SOLID ROCKET MOTORS. THIS\r
+SOFTWARE IS NEITHER INTENDED NOR LICENSED\r
+AS AN AID IN EITHER THE DESIGN OR\r
+CONSTRUCTION OF SOLID ROCKET MOTORS.\r
+\r
+You acknowledge that this software is not\r
+designed, licensed or intended for use in\r
+the design, construction, operation or\r
+maintenance of any rocket motor or motor\r
+component.\r
+\r
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT\r
+HOLDERS AND CONTRIBUTORS "AS IS" AND ANY\r
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING,\r
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\r
+OF MERCHANTABILITY AND FITNESS FOR A\r
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\r
+EVENT SHALL THE COPYRIGHT OWNER OR\r
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\r
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\r
+OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\r
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\r
+GOODS OR SERVICES; LOSS OF USE, DATA, OR\r
+PROFITS; OR BUSINESS INTERRUPTION)\r
+HOWEVER CAUSED AND ON ANY THEORY OF\r
+LIABILITY, WHETHER IN CONTRACT, STRICT\r
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE\r
+OR OTHERWISE) ARISING IN ANY WAY OUT OF\r
+THE USE OF THIS SOFTWARE, EVEN IF ADVISED\r
+OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file