| 1 17 18 package org.sape.carbon.services.log.console; 19 20 import java.awt.Component ; 21 import java.awt.EventQueue ; 22 import java.awt.Image ; 23 import java.io.File ; 24 import java.net.URL ; 25 import java.text.SimpleDateFormat ; 26 import java.util.Date ; 27 import java.util.HashSet ; 28 import java.util.Set ; 29 30 import javax.swing.DefaultListCellRenderer ; 31 import javax.swing.JFrame ; 32 import javax.swing.JList ; 33 34 import org.sape.carbon.core.util.classify.SeverityEnum; 35 36 import EDU.oswego.cs.dl.util.concurrent.LinkedQueue; 37 38 39 46 public class LogView extends JFrame implements Runnable { 47 private static final String ICON_LOCATION = "com/sapient/services/log/console/LogViewIcon.gif"; 48 private LogViewPrefs prefs; 49 50 private Object refreshLock = new Object (); 51 52 private LinkedQueue queue = new LinkedQueue(); 53 54 55 private SimpleDateFormat dateFormat = new SimpleDateFormat ("MM/dd/yyy"); 56 private SimpleDateFormat timeFormat = new SimpleDateFormat ("h:m:s a (z)"); 57 58 59 60 public LogView() { 61 63 initComponents (); 64 65 URL logViewIconUrl = 66 getClass().getClassLoader().getResource( 67 ICON_LOCATION); 68 69 if(logViewIconUrl != null) { 70 Image logViewIconImage = getToolkit().createImage(logViewIconUrl); 71 setIconImage(logViewIconImage); 72 } 73 74 pack (); 75 super.show(); 76 prefs = new LogViewPrefs(this); 77 78 messageFilterChanged(null); 79 80 Thread updater = new Thread (this, "LogView Update Manager"); 81 updater.setDaemon(true); 82 updater.start(); 84 } 85 86 91 private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; 93 94 jSplitPane1 = new javax.swing.JSplitPane (); 95 messageListJScrollPane = new javax.swing.JScrollPane (); 96 messageJList = new javax.swing.JList (); 97 jPanelMessageDetails = new javax.swing.JPanel (); 98 messageDetailJPanel = new javax.swing.JPanel (); 99 jLabelDateLabel = new javax.swing.JLabel (); 100 jLabelDate = new javax.swing.JLabel (); 101 jLabelTimeLabel1 = new javax.swing.JLabel (); 102 jLabelTime = new javax.swing.JLabel (); 103 jLabelSeverityLabel = new javax.swing.JLabel (); 104 jLabelSeverity = new javax.swing.JLabel (); 105 jLabelSourceClassLabel = new javax.swing.JLabel (); 106 jLabelSourceClass = new javax.swing.JLabel (); 107 jLabelSourceMethodLabel = new javax.swing.JLabel (); 108 jLabelSourceMethod = new javax.swing.JLabel (); 109 messageTextJScrollPane = new javax.swing.JScrollPane (); 110 jTextAreaMessageText = new javax.swing.JTextArea (); 111 jToolBar1 = new javax.swing.JToolBar (); 112 jPanelConfig = new javax.swing.JPanel (); 113 jLabelTitle = new javax.swing.JLabel (); 114 jLabelMessageCount = new javax.swing.JLabel (); 115 criticalJCheckBox = new javax.swing.JCheckBox (); 116 errorJCheckBox = new javax.swing.JCheckBox (); 117 warningJCheckBox = new javax.swing.JCheckBox (); 118 infoJCheckBox = new javax.swing.JCheckBox (); 119 detailJCheckBox = new javax.swing.JCheckBox (); 120 traceJCheckBox = new javax.swing.JCheckBox (); 121 jLabel1 = new javax.swing.JLabel (); 122 stringFilterJTextField = new javax.swing.JTextField (); 123 File = new javax.swing.JMenuBar (); 124 jMenuFile = new javax.swing.JMenu (); 125 saveJMenuItem = new javax.swing.JMenuItem (); 126 jSeparator1 = new javax.swing.JSeparator (); 127 exitJMenuItem = new javax.swing.JMenuItem (); 128 jMenuOptions = new javax.swing.JMenu (); 129 jCheckBoxMenuItemScrollToNewMessages = new javax.swing.JCheckBoxMenuItem (); 130 jMenuItemPrefs = new javax.swing.JMenuItem (); 131 clearJMenuItem = new javax.swing.JMenuItem (); 132 jMenuHelp = new javax.swing.JMenu (); 133 aboutJMenuItem = new javax.swing.JMenuItem (); 134 135 setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE); 136 setTitle("Carbon Log Console"); 137 setForeground(java.awt.Color.white); 138 setName("logViewFrame"); 139 addWindowListener(new java.awt.event.WindowAdapter () { 140 public void windowClosing(java.awt.event.WindowEvent evt) { 141 exitForm(evt); 142 } 143 }); 144 145 jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); 146 jSplitPane1.setResizeWeight(0.8); 147 messageListJScrollPane.setDoubleBuffered(true); 148 messageListJScrollPane.setMinimumSize(new java.awt.Dimension (22, 50)); 149 messageJList.setModel(new LogMessageListModel()); 150 messageJList.setCellRenderer(new LogMessageRenderer(this)); 151 messageJList.setMaximumSize(new java.awt.Dimension (32000, 32000)); 152 messageJList.setMinimumSize(new java.awt.Dimension (300, 300)); 153 messageJList.addListSelectionListener(new javax.swing.event.ListSelectionListener () { 154 public void valueChanged(javax.swing.event.ListSelectionEvent evt) { 155 messageJListValueChanged(evt); 156 } 157 }); 158 159 messageJList.addMouseListener(new java.awt.event.MouseAdapter () { 160 public void mouseClicked(java.awt.event.MouseEvent evt) { 161 messageJListMouseClicked(evt); 162 } 163 }); 164 165 messageListJScrollPane.setViewportView(messageJList); 166 167 jSplitPane1.setTopComponent(messageListJScrollPane); 168 169 jPanelMessageDetails.setLayout(new java.awt.BorderLayout ()); 170 171 jPanelMessageDetails.setMaximumSize(new java.awt.Dimension (2147483647, 100)); 172 jPanelMessageDetails.setMinimumSize(new java.awt.Dimension (440, 100)); 173 jPanelMessageDetails.setPreferredSize(new java.awt.Dimension (0, 100)); 174 messageDetailJPanel.setLayout(new java.awt.GridBagLayout ()); 175 176 messageDetailJPanel.setBorder(new javax.swing.border.BevelBorder (javax.swing.border.BevelBorder.RAISED)); 177 messageDetailJPanel.setMaximumSize(new java.awt.Dimension (140, 44)); 178 messageDetailJPanel.setMinimumSize(new java.awt.Dimension (190, 44)); 179 messageDetailJPanel.setPreferredSize(new java.awt.Dimension (190, 44)); 180 jLabelDateLabel.setFont(new java.awt.Font ("Dialog", 1, 11)); 181 jLabelDateLabel.setText("Date"); 182 gridBagConstraints = new java.awt.GridBagConstraints (); 183 gridBagConstraints.gridx = 2; 184 gridBagConstraints.gridy = 1; 185 gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; 186 gridBagConstraints.insets = new java.awt.Insets (0, 2, 0, 0); 187 messageDetailJPanel.add(jLabelDateLabel, gridBagConstraints); 188 189 jLabelDate.setFont(new java.awt.Font ("Dialog", 0, 12)); 190 jLabelDate.setMaximumSize(new java.awt.Dimension (300, 16)); 191 jLabelDate.setMinimumSize(new java.awt.Dimension (128, 16)); 192 jLabelDate.setName("Message Date"); 193 jLabelDate.setPreferredSize(new java.awt.Dimension (300, 16)); 194 gridBagConstraints = new java.awt.GridBagConstraints (); 195 gridBagConstraints.gridx = 3; 196 gridBagConstraints.gridy = 1; 197 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 198 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 199 gridBagConstraints.weightx = 1.0; 200 gridBagConstraints.insets = new java.awt.Insets (0, 6, 0, 0); 201 messageDetailJPanel.add(jLabelDate, gridBagConstraints); 202 203 jLabelTimeLabel1.setFont(new java.awt.Font ("Dialog", 1, 11)); 204 jLabelTimeLabel1.setText("Time"); 205 gridBagConstraints = new java.awt.GridBagConstraints (); 206 gridBagConstraints.gridx = 4; 207 gridBagConstraints.gridy = 1; 208 gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; 209 gridBagConstraints.insets = new java.awt.Insets (0, 2, 0, 0); 210 messageDetailJPanel.add(jLabelTimeLabel1, gridBagConstraints); 211 212 jLabelTime.setFont(new java.awt.Font ("Dialog", 0, 12)); 213 jLabelTime.setMaximumSize(new java.awt.Dimension (300, 16)); 214 jLabelTime.setMinimumSize(new java.awt.Dimension (128, 16)); 215 jLabelTime.setName("Message Time"); 216 jLabelTime.setPreferredSize(new java.awt.Dimension (300, 16)); 217 gridBagConstraints = new java.awt.GridBagConstraints (); 218 gridBagConstraints.gridx = 5; 219 gridBagConstraints.gridy = 1; 220 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 221 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 222 gridBagConstraints.weightx = 1.0; 223 gridBagConstraints.insets = new java.awt.Insets (0, 6, 0, 0); 224 messageDetailJPanel.add(jLabelTime, gridBagConstraints); 225 226 jLabelSeverityLabel.setFont(new java.awt.Font ("Dialog", 1, 11)); 227 jLabelSeverityLabel.setText("Severity"); 228 gridBagConstraints = new java.awt.GridBagConstraints (); 229 gridBagConstraints.gridx = 0; 230 gridBagConstraints.gridy = 1; 231 gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; 232 gridBagConstraints.insets = new java.awt.Insets (0, 2, 0, 0); 233 messageDetailJPanel.add(jLabelSeverityLabel, gridBagConstraints); 234 235 jLabelSeverity.setFont(new java.awt.Font ("Dialog", 0, 12)); 236 jLabelSeverity.setMaximumSize(new java.awt.Dimension (300, 16)); 237 jLabelSeverity.setMinimumSize(new java.awt.Dimension (128, 16)); 238 jLabelSeverity.setPreferredSize(new java.awt.Dimension (250, 16)); 239 gridBagConstraints = new java.awt.GridBagConstraints (); 240 gridBagConstraints.gridx = 1; 241 gridBagConstraints.gridy = 1; 242 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 243 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 244 gridBagConstraints.weightx = 1.0; 245 gridBagConstraints.insets = new java.awt.Insets (0, 6, 0, 0); 246 messageDetailJPanel.add(jLabelSeverity, gridBagConstraints); 247 248 jLabelSourceClassLabel.setFont(new java.awt.Font ("Dialog", 1, 11)); 249 jLabelSourceClassLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); 250 jLabelSourceClassLabel.setText("Class"); 251 jLabelSourceClassLabel.setMaximumSize(new java.awt.Dimension (55, 16)); 252 jLabelSourceClassLabel.setMinimumSize(new java.awt.Dimension (55, 16)); 253 jLabelSourceClassLabel.setName("Message Date"); 254 jLabelSourceClassLabel.setPreferredSize(new java.awt.Dimension (55, 16)); 255 gridBagConstraints = new java.awt.GridBagConstraints (); 256 gridBagConstraints.gridx = 0; 257 gridBagConstraints.gridy = 0; 258 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 259 gridBagConstraints.insets = new java.awt.Insets (0, 2, 0, 0); 260 messageDetailJPanel.add(jLabelSourceClassLabel, gridBagConstraints); 261 262 jLabelSourceClass.setFont(new java.awt.Font ("Dialog", 0, 12)); 263 jLabelSourceClass.setMaximumSize(new java.awt.Dimension (300, 16)); 264 jLabelSourceClass.setMinimumSize(new java.awt.Dimension (128, 16)); 265 jLabelSourceClass.setName("Message Time"); 266 jLabelSourceClass.setPreferredSize(new java.awt.Dimension (300, 16)); 267 gridBagConstraints = new java.awt.GridBagConstraints (); 268 gridBagConstraints.gridx = 1; 269 gridBagConstraints.gridy = 0; 270 gridBagConstraints.gridwidth = 3; 271 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 272 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 273 gridBagConstraints.weightx = 1.0; 274 gridBagConstraints.insets = new java.awt.Insets (0, 6, 0, 0); 275 messageDetailJPanel.add(jLabelSourceClass, gridBagConstraints); 276 277 jLabelSourceMethodLabel.setFont(new java.awt.Font ("Dialog", 1, 11)); 278 jLabelSourceMethodLabel.setText("Method"); 279 gridBagConstraints = new java.awt.GridBagConstraints (); 280 gridBagConstraints.gridx = 4; 281 gridBagConstraints.gridy = 0; 282 gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; 283 messageDetailJPanel.add(jLabelSourceMethodLabel, gridBagConstraints); 284 285 jLabelSourceMethod.setFont(new java.awt.Font ("Dialog", 0, 12)); 286 gridBagConstraints = new java.awt.GridBagConstraints (); 287 gridBagConstraints.gridx = 5; 288 gridBagConstraints.gridy = 0; 289 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 290 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 291 gridBagConstraints.insets = new java.awt.Insets (0, 6, 0, 0); 292 messageDetailJPanel.add(jLabelSourceMethod, gridBagConstraints); 293 294 jPanelMessageDetails.add(messageDetailJPanel, java.awt.BorderLayout.NORTH); 295 296 messageTextJScrollPane.setAlignmentX(0.1F); 297 messageTextJScrollPane.setAlignmentY(0.1F); 298 messageTextJScrollPane.setMaximumSize(new java.awt.Dimension (32767, 1000)); 299 messageTextJScrollPane.setMinimumSize(new java.awt.Dimension (250, 22)); 300 jTextAreaMessageText.setColumns(80); 301 jTextAreaMessageText.setFont(new java.awt.Font ("Monospaced", 0, 12)); 302 jTextAreaMessageText.setRows(4); 303 jTextAreaMessageText.setMaximumSize(new java.awt.Dimension (2147483647, 300)); 304 jTextAreaMessageText.setMinimumSize(new java.awt.Dimension (250, 64)); 305 messageTextJScrollPane.setViewportView(jTextAreaMessageText); 306 307 jPanelMessageDetails.add(messageTextJScrollPane, java.awt.BorderLayout.CENTER); 308 309 jSplitPane1.setBottomComponent(jPanelMessageDetails); 310 311 getContentPane().add(jSplitPane1, java.awt.BorderLayout.CENTER); 312 313 jToolBar1.setFloatable(false); 314 jPanelConfig.setLayout(new java.awt.GridBagLayout ()); 315 316 jPanelConfig.setBorder(new javax.swing.border.SoftBevelBorder (javax.swing.border.BevelBorder.RAISED)); 317 jPanelConfig.setMaximumSize(new java.awt.Dimension (32767, 90)); 318 jPanelConfig.setMinimumSize(new java.awt.Dimension (450, 90)); 319 jPanelConfig.setPreferredSize(new java.awt.Dimension (450, 90)); 320 jLabelTitle.setFont(new java.awt.Font ("Comic Sans MS", 1, 14)); 321 jLabelTitle.setText("Displayed Log Levels"); 322 jLabelTitle.setAlignmentY(0.0F); 323 gridBagConstraints = new java.awt.GridBagConstraints (); 324 gridBagConstraints.gridx = 0; 325 gridBagConstraints.gridy = 0; 326 gridBagConstraints.gridwidth = 2; 327 jPanelConfig.add(jLabelTitle, gridBagConstraints); 328 329 jLabelMessageCount.setFont(new java.awt.Font ("Dialog", 0, 12)); 330 jLabelMessageCount.setText("(0 out of 0)"); 331 gridBagConstraints = new java.awt.GridBagConstraints (); 332 gridBagConstraints.gridx = 2; 333 gridBagConstraints.gridy = 0; 334 gridBagConstraints.gridwidth = 2; 335 gridBagConstraints.insets = new java.awt.Insets (0, 20, 0, 0); 336 jPanelConfig.add(jLabelMessageCount, gridBagConstraints); 337 338 criticalJCheckBox.setSelected(true); 339 criticalJCheckBox.setText("Critical"); 340 criticalJCheckBox.addActionListener(new java.awt.event.ActionListener () { 341 public void actionPerformed(java.awt.event.ActionEvent evt) { 342 messageFilterChanged(evt); 343 } 344 }); 345 346 gridBagConstraints = new java.awt.GridBagConstraints (); 347 gridBagConstraints.gridx = 0; 348 gridBagConstraints.gridy = 1; 349 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 350 jPanelConfig.add(criticalJCheckBox, gridBagConstraints); 351 352 errorJCheckBox.setSelected(true); 353 errorJCheckBox.setText("Error"); 354 errorJCheckBox.addActionListener(new java.awt.event.ActionListener () { 355 public void actionPerformed(java.awt.event.ActionEvent evt) { 356 messageFilterChanged(evt); 357 } 358 }); 359 360 gridBagConstraints = new java.awt.GridBagConstraints (); 361 gridBagConstraints.gridx = 0; 362 gridBagConstraints.gridy = 2; 363 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 364 jPanelConfig.add(errorJCheckBox, gridBagConstraints); 365 366 warningJCheckBox.setSelected(true); 367 warningJCheckBox.setText("Warning"); 368 warningJCheckBox.addActionListener(new java.awt.event.ActionListener () { 369 public void actionPerformed(java.awt.event.ActionEvent evt) { 370 messageFilterChanged(evt); 371 } 372 }); 373 374 gridBagConstraints = new java.awt.GridBagConstraints (); 375 gridBagConstraints.gridx = 1; 376 gridBagConstraints.gridy = 1; 377 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 378 jPanelConfig.add(warningJCheckBox, gridBagConstraints); 379 380 infoJCheckBox.setSelected(true); 381 infoJCheckBox.setText("Info"); 382 infoJCheckBox.addActionListener(new java.awt.event.ActionListener () { 383 public void actionPerformed(java.awt.event.ActionEvent evt) { 384 messageFilterChanged(evt); 385 } 386 }); 387 388 gridBagConstraints = new java.awt.GridBagConstraints (); 389 gridBagConstraints.gridx = 1; 390 gridBagConstraints.gridy = 2; 391 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 392 jPanelConfig.add(infoJCheckBox, gridBagConstraints); 393 394 detailJCheckBox.setText("Detail"); 395 detailJCheckBox.addActionListener(new java.awt.event.ActionListener () { 396 public void actionPerformed(java.awt.event.ActionEvent evt) { 397 messageFilterChanged(evt); 398 } 399 }); 400 401 gridBagConstraints = new java.awt.GridBagConstraints (); 402 gridBagConstraints.gridx = 2; 403 gridBagConstraints.gridy = 1; 404 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 405 jPanelConfig.add(detailJCheckBox, gridBagConstraints); 406 407 traceJCheckBox.setText("Trace"); 408 traceJCheckBox.addActionListener(new java.awt.event.ActionListener () { 409 public void actionPerformed(java.awt.event.ActionEvent evt) { 410 messageFilterChanged(evt); 411 } 412 }); 413 414 gridBagConstraints = new java.awt.GridBagConstraints (); 415 gridBagConstraints.gridx = 2; 416 gridBagConstraints.gridy = 2; 417 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 418 jPanelConfig.add(traceJCheckBox, gridBagConstraints); 419 420 jLabel1.setText("Text Filter"); 421 gridBagConstraints = new java.awt.GridBagConstraints (); 422 gridBagConstraints.gridx = 4; 423 gridBagConstraints.gridy = 1; 424 gridBagConstraints.insets = new java.awt.Insets (0, 20, 0, 0); 425 jPanelConfig.add(jLabel1, gridBagConstraints); 426 427 stringFilterJTextField.setMinimumSize(new java.awt.Dimension (80, 20)); 428 stringFilterJTextField.setPreferredSize(new java.awt.Dimension (80, 20)); 429 stringFilterJTextField.addFocusListener(new java.awt.event.FocusAdapter () { 430 public void focusLost(java.awt.event.FocusEvent evt) { 431 stringFilterJTextFieldFocusLost(evt); 432 } 433 }); 434 435 stringFilterJTextField.addInputMethodListener(new java.awt.event.InputMethodListener () { 436 public void inputMethodTextChanged(java.awt.event.InputMethodEvent evt) { 437 stringFilterJTextFieldInputMethodTextChanged(evt); 438 } 439 public void caretPositionChanged(java.awt.event.InputMethodEvent evt) { 440 } 441 }); 442 443 stringFilterJTextField.addKeyListener(new java.awt.event.KeyAdapter () { 444 public void keyTyped(java.awt.event.KeyEvent evt) { 445 stringFilterJTextFieldKeyTyped(evt); 446 } 447 }); 448 449 stringFilterJTextField.addPropertyChangeListener(new java.beans.PropertyChangeListener () { 450 public void propertyChange(java.beans.PropertyChangeEvent evt) { 451 stringFilterJTextFieldPropertyChange(evt); 452 } 453 }); 454 455 gridBagConstraints = new java.awt.GridBagConstraints (); 456 gridBagConstraints.gridx = 5; 457 gridBagConstraints.gridy = 1; 458 gridBagConstraints.insets = new java.awt.Insets (0, 5, 0, 0); 459 jPanelConfig.add(stringFilterJTextField, gridBagConstraints); 460 461 jToolBar1.add(jPanelConfig); 462 463 getContentPane().add(jToolBar1, java.awt.BorderLayout.NORTH); 464 465 jMenuFile.setText("File"); 466 saveJMenuItem.setText("Save..."); 467 jMenuFile.add(saveJMenuItem); 468 469 jMenuFile.add(jSeparator1); 470 471 exitJMenuItem.setText("Exit"); 472 exitJMenuItem.addActionListener(new java.awt.event.ActionListener () { 473 public void actionPerformed(java.awt.event.ActionEvent evt) { 474 exitJMenuItemActionPerformed(evt); 475 } 476 }); 477 478 jMenuFile.add(exitJMenuItem); 479 480 File.add(jMenuFile); 481 482 jMenuOptions.setText("Options"); 483 jCheckBoxMenuItemScrollToNewMessages.setText("Scroll to new messages"); 484 jMenuOptions.add(jCheckBoxMenuItemScrollToNewMessages); 485 486 jMenuItemPrefs.setText("Preferences..."); 487 jMenuItemPrefs.addActionListener(new java.awt.event.ActionListener () { 488 public void actionPerformed(java.awt.event.ActionEvent evt) { 489 jMenuItemPrefsActionPerformed(evt); 490 } 491 }); 492 493 jMenuOptions.add(jMenuItemPrefs); 494 495 clearJMenuItem.setText("Clear Messages"); 496 clearJMenuItem.addActionListener(new java.awt.event.ActionListener () { 497 public void actionPerformed(java.awt.event.ActionEvent evt) { 498 jButton1ActionPerformed(evt); 499 } 500 }); 501 502 jMenuOptions.add(clearJMenuItem); 503 504 File.add(jMenuOptions); 505 506 jMenuHelp.setText("Help"); 507 aboutJMenuItem.setText("About Carbon Log View"); 508 aboutJMenuItem.addActionListener(new java.awt.event.ActionListener () { 509 public void actionPerformed(java.awt.event.ActionEvent evt) { 510 aboutJMenuItemActionPerformed(evt); 511 } 512 }); 513 514 jMenuHelp.add(aboutJMenuItem); 515 516 File.add(jMenuHelp); 517 518 setJMenuBar(File); 519 520 pack(); 521 } 523 private void messageJListMouseClicked(java.awt.event.MouseEvent evt) { messageJListValueChanged(null); 526 } 528 private void stringFilterJTextFieldPropertyChange(java.beans.PropertyChangeEvent evt) { messageFilterChanged(null); 531 } 533 private void stringFilterJTextFieldFocusLost(java.awt.event.FocusEvent evt) { messageFilterChanged(null); 536 } 538 private void stringFilterJTextFieldKeyTyped(java.awt.event.KeyEvent evt) { messageFilterChanged(null); 541 } 543 private void stringFilterJTextFieldInputMethodTextChanged(java.awt.event.InputMethodEvent evt) { messageFilterChanged(null); 546 } 548 private void jMenuItemPrefsActionPerformed(java.awt.event.ActionEvent evt) { this.prefs.show(); 551 } 553 private void aboutJMenuItemActionPerformed(java.awt.event.ActionEvent evt) { AboutLogView alv = new AboutLogView(this,false); 556 alv.setSize(450,200); 557 alv.show(); 558 } 560 private void messageFilterChanged(java.awt.event.ActionEvent evt) { 563 Set severities = new HashSet (); 564 565 if (this.criticalJCheckBox.isSelected()) 566 severities.add(SeverityEnum.FATAL); 567 if (this.errorJCheckBox.isSelected()) 568 severities.add(SeverityEnum.ERROR); 569 if (this.warningJCheckBox.isSelected()) 570 severities.add(SeverityEnum.WARN); 571 if (this.infoJCheckBox.isSelected()) 572 severities.add(SeverityEnum.INFO); 573 if (this.detailJCheckBox.isSelected()) 574 severities.add(SeverityEnum.DEBUG); 575 if (this.traceJCheckBox.isSelected()) 576 severities.add(SeverityEnum.TRACE); 577 578 String textFilter = this.stringFilterJTextField.getText(); 579 580 581 LogMessageListModel lmlm = (LogMessageListModel) this.messageJList.getModel(); 582 583 lmlm.setFilter(severities,textFilter); 584 585 this.jLabelMessageCount.setText( 587 "(" + 588 lmlm.getSize() + 589 " out of " + 590 lmlm.getTotalSize() + 591 ")"); 592 593 } 595 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { LogMessageListModel lmlm = (LogMessageListModel) this.messageJList.getModel(); 598 lmlm.clear(); 599 } 601 private void exitJMenuItemActionPerformed(java.awt.event.ActionEvent evt) { this.hide(); 604 System.exit(0); 605 } 607 private void messageJListValueChanged(javax.swing.event.ListSelectionEvent evt) { LogMessageListModel lmlm = (LogMessageListModel) this.messageJList.getModel(); 610 611 LogMessage lm = (LogMessage) lmlm.getElementAt(this.messageJList.getSelectedIndex()); 612 613 this.jTextAreaMessageText.setText(lm.toString()); 614 Date date = new Date (lm.time); 615 616 this.jLabelDate.setText(dateFormat.format(date)); 617 this.jLabelTime.setText(timeFormat.format(date)); 618 this.jLabelSeverity.setText(lm.severity.getName()); 619 String className = lm.sourceClass; 620 this.jLabelSourceClass.setText(className); 622 624 EventQueue.invokeLater(new Runnable () { 625 public void run() { 626 jTextAreaMessageText.setCaretPosition(0); 627 } 628 }); 629 } 631 632 private void exitForm(java.awt.event.WindowEvent evt) { System.exit (0); 634 } 636 639 public static void main (String args[]) { 640 LogView lv = new LogView(); 642 } 643 644 private File getSettingsFile() { 645 String home = System.getProperty("user.home"); 646 if (home != null) { 647 if (System.getProperty("os.name").indexOf("Windows") != -1 ) 648 return new File (home, "fwJmsLogView.ini"); 649 return new File (home,".fwJmsLogView"); 650 } 651 return null; 652 } 653 654 private javax.swing.JTextField stringFilterJTextField; 656 private javax.swing.JCheckBox warningJCheckBox; 657 private javax.swing.JLabel jLabelMessageCount; 658 private javax.swing.JLabel jLabelTitle; 659 private javax.swing.JLabel jLabelSourceMethodLabel; 660 private javax.swing.JLabel jLabelDateLabel; 661 private javax.swing.JLabel jLabelDate; 662 private javax.swing.JPanel jPanelConfig; 663 private javax.swing.JLabel jLabel1; 664 private javax.swing.JMenuItem jMenuItemPrefs; 665 private javax.swing.JMenuItem aboutJMenuItem; 666 private javax.swing.JLabel jLabelTime; 667 private javax.swing.JList messageJList; 668 private javax.swing.JCheckBox traceJCheckBox; 669 private javax.swing.JMenuItem exitJMenuItem; 670 private javax.swing.JCheckBox errorJCheckBox; 671 private javax.swing.JPanel jPanelMessageDetails; 672 private javax.swing.JCheckBox detailJCheckBox; 673 private javax.swing.JCheckBox infoJCheckBox; 674 private javax.swing.JSplitPane jSplitPane1; 675 private javax.swing.JPanel messageDetailJPanel; 676 private javax.swing.JLabel jLabelSourceClassLabel; 677 private javax.swing.JCheckBox criticalJCheckBox; 678 private javax.swing.JTextArea jTextAreaMessageText; 679 private javax.swing.JToolBar jToolBar1; 680 private javax.swing.JMenuItem clearJMenuItem; 681 private javax.swing.JScrollPane messageTextJScrollPane; 682 private javax.swing.JMenuItem saveJMenuItem; 683 private javax.swing.JLabel jLabelSourceMethod; 684 private javax.swing.JSeparator jSeparator1; 685 private javax.swing.JMenuBar File; 686 private javax.swing.JLabel jLabelSeverity; 687 private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItemScrollToNewMessages; 688 private javax.swing.JScrollPane messageListJScrollPane; 689 private javax.swing.JLabel jLabelSeverityLabel; 690 private javax.swing.JMenu jMenuFile; 691 private javax.swing.JMenu jMenuHelp; 692 private javax.swing.JMenu jMenuOptions; 693 private javax.swing.JLabel jLabelTimeLabel1; 694 private javax.swing.JLabel jLabelSourceClass; 695 697 698 699 public void addMessage(String sourceClass,SeverityEnum severity, Object msg) { 700 701 LogMessage message = 702 new LogMessage(sourceClass, severity, msg); 703 704 try { 705 this.queue.put(message); 706 } catch (InterruptedException ie) { 707 } 708 } 709 710 public void run() { 711 while (true) { 712 handleMessages(); 713 try { 714 Thread.sleep(1000); 715 } catch (InterruptedException ie) { } 716 } 717 } 718 719 720 public void handleMessages() { 721 LogMessage message = null; 723 724 try { 725 message = (LogMessage) queue.poll(10); 726 } catch (Exception e) { 727 System.out.println(e); 728 } 729 730 LogMessageListModel model = 731 (LogMessageListModel) this.messageJList.getModel(); 732 733 while (message != null) { 734 model.addElement(message); 735 736 try { 737 message = 738 (LogMessage)queue.poll(10); 739 } catch (Exception e) { 740 System.out.println(e); 741 } 742 } 743 this.jLabelMessageCount.setText("(" + 745 model.getSize() + " out of " + 746 model.getTotalSize() + ")"); 747 748 if (this.jCheckBoxMenuItemScrollToNewMessages.getModel().isSelected()) { 750 this.messageJList.ensureIndexIsVisible(model.getSize()-1); 751 } 752 this.repaint(); 753 754 } 755 756 757 758 static class LogMessageRenderer extends DefaultListCellRenderer { 759 int minSev,maxSev,minProd,maxProd; 760 761 LogView parentLogView; 762 763 public LogMessageRenderer(LogView parentLogView) { 764 this.parentLogView = parentLogView; 765 } 766 767 public Component getListCellRendererComponent( 768 JList list, 769 Object value, 770 int index, 771 boolean iss, 772 boolean chf) 773 { 774 775 String message = ((LogMessage)value).toString(); 777 message = message.substring(0,message.length()>200?200:message.length()); 778 779 super.getListCellRendererComponent(list, message, index, iss, chf); 780 781 switch (((LogMessage)value).severity.getOrdinal()) { 782 case 0: 783 this.setBackground(this.parentLogView.prefs.getCriticalBackground()); 784 this.setForeground(this.parentLogView.prefs.getCriticalForeground()); 785 break; 786 case 1: 787 this.setBackground(this.parentLogView.prefs.getErrorBackground()); 788 this.setForeground(this.parentLogView.prefs.getErrorForeground()); 789 break; 790 case 2: 791 this.setBackground(this.parentLogView.prefs.getWarningBackground()); 792 this.setForeground(this.parentLogView.prefs.getWarningForeground()); 793 break; 794 case 3: 795 this.setBackground(this.parentLogView.prefs.getInfoBackground()); 796 this.setForeground(this.parentLogView.prefs.getInfoForeground()); 797 break; 798 case 4: 799 this.setBackground(this.parentLogView.prefs.getDetailBackground()); 800 this.setForeground(this.parentLogView.prefs.getDetailForeground()); 801 break; 802 case 5: 803 this.setBackground(this.parentLogView.prefs.getTraceBackground()); 804 this.setForeground(this.parentLogView.prefs.getTraceForeground()); 805 break; 806 } 807 return this; 808 } 809 810 811 } 812 813 public static class LogMessage { 814 public long time; 815 public String sourceClass; 816 public SeverityEnum severity; 817 public Object message; 818 819 public LogMessage(String sourceClass, SeverityEnum severity, Object message) { 820 this.time = System.currentTimeMillis(); 821 this.sourceClass = sourceClass; 822 this.severity = severity; 823 this.message = message; 824 } 825 826 public SeverityEnum getSeverity() { 827 return this.severity; 828 } 829 830 public String toString() { 831 return message.toString(); 833 } 834 } 835 836 837 } | Popular Tags |