001 /*
002 * This file is part of McIDAS-V
003 *
004 * Copyright 2007-2013
005 * Space Science and Engineering Center (SSEC)
006 * University of Wisconsin - Madison
007 * 1225 W. Dayton Street, Madison, WI 53706, USA
008 * https://www.ssec.wisc.edu/mcidas
009 *
010 * All Rights Reserved
011 *
012 * McIDAS-V is built on Unidata's IDV and SSEC's VisAD libraries, and
013 * some McIDAS-V source code is based on IDV and VisAD source code.
014 *
015 * McIDAS-V is free software; you can redistribute it and/or modify
016 * it under the terms of the GNU Lesser Public License as published by
017 * the Free Software Foundation; either version 3 of the License, or
018 * (at your option) any later version.
019 *
020 * McIDAS-V is distributed in the hope that it will be useful,
021 * but WITHOUT ANY WARRANTY; without even the implied warranty of
022 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
023 * GNU Lesser Public License for more details.
024 *
025 * You should have received a copy of the GNU Lesser Public License
026 * along with this program. If not, see http://www.gnu.org/licenses.
027 */
028
029 package edu.wisc.ssec.mcidasv.ui;
030
031 import java.awt.Color;
032 import java.awt.Cursor;
033 import java.awt.event.MouseAdapter;
034 import java.awt.event.MouseEvent;
035 import java.net.MalformedURLException;
036 import java.net.URL;
037
038 import ucar.unidata.util.GuiUtils;
039
040 import edu.wisc.ssec.mcidasv.Constants;
041 import edu.wisc.ssec.mcidasv.McIDASV;
042 import edu.wisc.ssec.mcidasv.StateManager;
043 import edu.wisc.ssec.mcidasv.util.SystemState;
044
045 public class AboutFrame extends javax.swing.JFrame {
046
047 private final McIDASV mcv;
048
049 /** Creates new form AboutFrame */
050 public AboutFrame(final McIDASV mcv) {
051 this.mcv = mcv;
052 initComponents();
053 }
054
055 private javax.swing.JPanel buildAboutMcv() {
056 StateManager stateManager = (StateManager)mcv.getStateManager();
057
058 javax.swing.JEditorPane editor = new javax.swing.JEditorPane();
059 editor.setEditable(false);
060 editor.setContentType("text/html");
061 String html = stateManager.getMcIdasVersionAbout();
062 editor.setText(html);
063 editor.setBackground(new javax.swing.JPanel().getBackground());
064 editor.addHyperlinkListener(mcv);
065
066 final javax.swing.JLabel iconLbl = new javax.swing.JLabel(
067 GuiUtils.getImageIcon(mcv.getProperty(Constants.PROP_SPLASHICON, ""))
068 );
069 iconLbl.setToolTipText("McIDAS-V homepage");
070 iconLbl.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
071 iconLbl.addMouseListener(new MouseAdapter() {
072 public void mouseClicked(MouseEvent evt) {
073 javax.swing.event.HyperlinkEvent link = null;
074 try {
075 link = new javax.swing.event.HyperlinkEvent(
076 iconLbl,
077 javax.swing.event.HyperlinkEvent.EventType.ACTIVATED,
078 new URL(mcv.getProperty(Constants.PROP_HOMEPAGE, ""))
079 );
080 } catch (MalformedURLException e) {}
081 mcv.hyperlinkUpdate(link);
082 }
083 });
084 javax.swing.JPanel contents = GuiUtils.topCenter(
085 GuiUtils.inset(iconLbl, 5),
086 GuiUtils.inset(editor, 5)
087 );
088 contents.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED,
089 Color.gray, Color.gray));
090 return contents;
091 }
092
093 private String getSystemInformation() {
094 // return new SystemState(mcv).getStateAsString(true);
095 return SystemState.getStateAsString(mcv, true);
096 }
097
098 /** This method is called from within the constructor to
099 * initialize the form.
100 * WARNING: Do NOT modify this code. The content of this method is
101 * always regenerated by the Form Editor.
102 */
103 @SuppressWarnings("unchecked")
104 // <editor-fold defaultstate="collapsed" desc="Generated Code">
105 private void initComponents() {
106
107 tabbedPanel = new javax.swing.JTabbedPane();
108 mcvTab = new javax.swing.JPanel();
109 mcvPanel = buildAboutMcv();
110 sysTab = new javax.swing.JPanel();
111 sysScrollPane = new javax.swing.JScrollPane();
112 sysTextArea = new javax.swing.JTextArea();
113
114 setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
115 setTitle("About McIDAS-V");
116
117 javax.swing.GroupLayout mcvTabLayout = new javax.swing.GroupLayout(mcvTab);
118 mcvTab.setLayout(mcvTabLayout);
119 mcvTabLayout.setHorizontalGroup(
120 mcvTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
121 // .addComponent(mcvPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
122 .addComponent(mcvPanel)
123 );
124 mcvTabLayout.setVerticalGroup(
125 mcvTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
126 // .addComponent(mcvPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
127 .addComponent(mcvPanel)
128 );
129
130 tabbedPanel.addTab("McIDAS-V", mcvTab);
131 sysTextArea.setText(getSystemInformation());
132 sysTextArea.setEditable(false);
133 sysTextArea.setFont(new java.awt.Font(java.awt.Font.MONOSPACED, 0, 12)); // NOI18N
134 sysTextArea.setCaretPosition(0);
135 sysTextArea.setLineWrap(false);
136 sysScrollPane.setViewportView(sysTextArea);
137
138 javax.swing.GroupLayout sysTabLayout = new javax.swing.GroupLayout(sysTab);
139 sysTab.setLayout(sysTabLayout);
140 sysTabLayout.setHorizontalGroup(
141 sysTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
142 .addGroup(sysTabLayout.createSequentialGroup()
143 // .addContainerGap()
144 // .addComponent(sysScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 478, Short.MAX_VALUE)
145 // .addContainerGap())
146 .addComponent(sysScrollPane))
147 );
148 sysTabLayout.setVerticalGroup(
149 sysTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
150 .addGroup(sysTabLayout.createSequentialGroup()
151 // .addComponent(sysScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 307, Short.MAX_VALUE)
152 // .addContainerGap())
153 .addComponent(sysScrollPane))
154 );
155
156 tabbedPanel.addTab("System Information", sysTab);
157
158 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
159 getContentPane().setLayout(layout);
160 layout.setHorizontalGroup(
161 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
162 // .addComponent(tabbedPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 511, Short.MAX_VALUE)
163 .addComponent(tabbedPanel)
164 );
165 layout.setVerticalGroup(
166 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
167 // .addComponent(tabbedPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 359, Short.MAX_VALUE)
168 .addComponent(tabbedPanel)
169 );
170
171 pack();
172 setSize(450, 375);
173 setLocationRelativeTo(mcv.getIdvUIManager().getFrame());
174 }// </editor-fold>
175
176 // Variables declaration - do not modify
177 private javax.swing.JPanel mcvPanel;
178 private javax.swing.JPanel mcvTab;
179 private javax.swing.JScrollPane sysScrollPane;
180 private javax.swing.JPanel sysTab;
181 private javax.swing.JTextArea sysTextArea;
182 private javax.swing.JTabbedPane tabbedPanel;
183 // End of variables declaration
184
185 }