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