1 19 20 25 26 package edu.umd.cs.findbugs.gui; 27 28 import java.io.BufferedReader ; 29 import java.io.IOException ; 30 import java.io.InputStream ; 31 import java.io.InputStreamReader ; 32 import java.net.URL ; 33 import java.text.MessageFormat ; 34 import java.util.regex.Pattern ; 35 36 import javax.swing.JFrame ; 37 import javax.swing.event.HyperlinkEvent ; 38 39 import edu.umd.cs.findbugs.L10N; 40 import edu.umd.cs.findbugs.SystemProperties; 41 import edu.umd.cs.findbugs.Version; 42 import edu.umd.cs.findbugs.util.LaunchBrowser; 43 44 49 public class AboutDialog extends javax.swing.JDialog { 50 private static final long serialVersionUID = 3546076956480385584L; 51 52 54 57 public AboutDialog(JFrame parent, Logger l, boolean modal) { 58 super(parent, modal); 59 61 initComponents(); 62 63 try { 64 aboutEditorPane.setPage(getClass().getClassLoader().getResource("edu/umd/cs/findbugs/gui/help/About.html")); 65 licenseEditorPane.setPage(getClass().getClassLoader().getResource("edu/umd/cs/findbugs/gui/help/License.html")); 66 acknowldgementsEditorPane.setPage(getClass().getClassLoader().getResource("edu/umd/cs/findbugs/gui/help/Acknowledgements.html")); 67 } catch (IOException e) { 68 l.logMessage(ConsoleLogger.ERROR, e.toString()); 69 } 70 71 setTitle(MessageFormat.format(L10N.getLocalString("dlg.aboutfindbugs_ttl", "About FindBugs {0}"), new Object []{Version.RELEASE})); 72 } 73 74 static Pattern pattern = Pattern.compile("@VERSION@"); 75 79 @edu.umd.cs.findbugs.annotations.SuppressWarnings("OS_OPEN_STREAM") 80 private void processPage(javax.swing.JEditorPane pane, String fileName) throws IOException { 81 InputStream in = null; 82 BufferedReader reader = null; 83 try { 84 StringBuffer buf = new StringBuffer (); 85 86 in = getClass().getClassLoader().getResourceAsStream(fileName); 88 if (in == null) 89 throw new IOException (MessageFormat.format(L10N.getLocalString("msg.couldntload_txt", "Couldn't load {0}"), new Object []{fileName})); 90 reader = new BufferedReader (new InputStreamReader (in)); 91 92 94 String line; 95 while ((line = reader.readLine()) != null) { 96 line = pattern.matcher(line).replaceAll(Version.RELEASE); 97 buf.append(line); 98 buf.append('\n'); 99 } 100 101 String text = buf.toString(); 103 pane.setContentType("text/html"); 104 pane.setText(text); 105 } finally { 106 try { 107 if (reader != null) 108 reader.close(); 109 else if (in != null) 110 in.close(); 111 } catch (IOException e) { 112 } 113 } 114 } 115 116 122 private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; 124 125 aboutTabPane = new javax.swing.JTabbedPane (); 126 aboutScrollPane = new javax.swing.JScrollPane (); 127 aboutEditorPane = new javax.swing.JEditorPane (); 128 licenseScrollPane = new javax.swing.JScrollPane (); 129 licenseEditorPane = new javax.swing.JEditorPane (); 130 acknowledgmentsScrollPane = new javax.swing.JScrollPane (); 131 acknowldgementsEditorPane = new javax.swing.JEditorPane (); 132 jSeparator1 = new javax.swing.JSeparator (); 133 okButton = new javax.swing.JButton (); 134 135 getContentPane().setLayout(new java.awt.GridBagLayout ()); 136 137 addWindowListener(new java.awt.event.WindowAdapter () { 138 @Override 139 public void windowClosing(java.awt.event.WindowEvent evt) { 140 closeDialog(evt); 141 } 142 }); 143 144 aboutEditorPane.setEditable(false); 145 aboutEditorPane.addHyperlinkListener(new javax.swing.event.HyperlinkListener () { 146 public void hyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) { 147 editorPaneHyperlinkUpdate(evt); 148 } 149 }); 150 151 aboutScrollPane.setViewportView(aboutEditorPane); 152 153 aboutTabPane.addTab("About", aboutScrollPane); 154 155 licenseEditorPane.setEditable(false); 156 licenseEditorPane.addHyperlinkListener(new javax.swing.event.HyperlinkListener () { 157 public void hyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) { 158 editorPaneHyperlinkUpdate(evt); 159 } 160 }); 161 162 licenseScrollPane.setViewportView(licenseEditorPane); 163 164 aboutTabPane.addTab("License", licenseScrollPane); 165 166 acknowldgementsEditorPane.setEditable(false); 167 acknowldgementsEditorPane.addHyperlinkListener(new javax.swing.event.HyperlinkListener () { 168 public void hyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) { 169 editorPaneHyperlinkUpdate(evt); 170 } 171 }); 172 173 acknowledgmentsScrollPane.setViewportView(acknowldgementsEditorPane); 174 175 aboutTabPane.addTab("Acknowledgments", acknowledgmentsScrollPane); 176 177 gridBagConstraints = new java.awt.GridBagConstraints (); 178 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 179 gridBagConstraints.weightx = 1.0; 180 gridBagConstraints.weighty = 1.0; 181 getContentPane().add(aboutTabPane, gridBagConstraints); 182 183 { 184 aboutTabPane.setTitleAt(0, L10N.getLocalString("dlg.about_tab", "About")); 185 aboutTabPane.setTitleAt(1, L10N.getLocalString("dlg.license_tab", "License")); 186 aboutTabPane.setTitleAt(2, L10N.getLocalString("dlg.acknowledgements_tab", "Acknowledgements")); 187 } 188 gridBagConstraints = new java.awt.GridBagConstraints (); 189 gridBagConstraints.gridx = 0; 190 gridBagConstraints.gridy = 1; 191 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 192 getContentPane().add(jSeparator1, gridBagConstraints); 193 194 okButton.setMnemonic('O'); 195 okButton.setText("OK"); 196 okButton.setText(L10N.getLocalString("dlg.ok_btn", "OK")); 197 okButton.addActionListener(new java.awt.event.ActionListener () { 198 public void actionPerformed(java.awt.event.ActionEvent evt) { 199 okButtonActionPerformed(evt); 200 } 201 }); 202 203 gridBagConstraints = new java.awt.GridBagConstraints (); 204 gridBagConstraints.gridx = 0; 205 gridBagConstraints.gridy = 2; 206 gridBagConstraints.insets = new java.awt.Insets (3, 0, 3, 0); 207 getContentPane().add(okButton, gridBagConstraints); 208 209 pack(); 210 } 212 private void editorPaneHyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) { try { 214 if (evt.getEventType().equals( HyperlinkEvent.EventType.ACTIVATED)) { 215 URL url = evt.getURL(); 216 LaunchBrowser.showDocument(url); 218 } 219 } 220 catch (Exception e) { 221 } 222 } 224 225 private void okButtonActionPerformed(java.awt.event.ActionEvent evt) { closeDialog(); 227 } 229 232 private void closeDialog(java.awt.event.WindowEvent evt) { closeDialog(); 234 } 236 private void closeDialog() { 237 setVisible(false); 238 dispose(); 239 } 240 241 private javax.swing.JEditorPane aboutEditorPane; 243 private javax.swing.JScrollPane aboutScrollPane; 244 private javax.swing.JTabbedPane aboutTabPane; 245 private javax.swing.JEditorPane acknowldgementsEditorPane; 246 private javax.swing.JScrollPane acknowledgmentsScrollPane; 247 private javax.swing.JSeparator jSeparator1; 248 private javax.swing.JEditorPane licenseEditorPane; 249 private javax.swing.JScrollPane licenseScrollPane; 250 private javax.swing.JButton okButton; 251 253 } 254 255 | Popular Tags |