1 package net.sourceforge.pmd.swingui;
2
3 import net.sourceforge.pmd.PMDException;
4 import net.sourceforge.pmd.swingui.event.DirectoryTableEvent;
5 import net.sourceforge.pmd.swingui.event.DirectoryTableEventListener;
6 import net.sourceforge.pmd.swingui.event.HTMLAnalysisResultsEvent;
7 import net.sourceforge.pmd.swingui.event.HTMLAnalysisResultsEventListener;
8 import net.sourceforge.pmd.swingui.event.ListenerList;
9 import net.sourceforge.pmd.swingui.event.TextAnalysisResultsEvent;
10 import net.sourceforge.pmd.swingui.event.TextAnalysisResultsEventListener;
11
12 import javax.swing.Icon;
13 import javax.swing.JFileChooser;
14 import javax.swing.JLabel;
15 import javax.swing.JMenu;
16 import javax.swing.JMenuBar;
17 import javax.swing.JMenuItem;
18 import javax.swing.JPanel;
19 import javax.swing.JScrollPane;
20 import javax.swing.JSeparator;
21 import javax.swing.JSplitPane;
22 import javax.swing.KeyStroke;
23 import javax.swing.UIManager;
24 import javax.swing.border.CompoundBorder;
25 import javax.swing.border.EmptyBorder;
26 import javax.swing.border.EtchedBorder;
27 import javax.swing.border.TitledBorder;
28 import javax.swing.filechooser.FileFilter;
29 import java.awt.BorderLayout;
30 import java.awt.Color;
31 import java.awt.Font;
32 import java.awt.Toolkit;
33 import java.awt.datatransfer.Clipboard;
34 import java.awt.datatransfer.ClipboardOwner;
35 import java.awt.datatransfer.StringSelection;
36 import java.awt.datatransfer.Transferable;
37 import java.awt.event.ActionEvent;
38 import java.awt.event.ActionListener;
39 import java.awt.event.KeyEvent;
40 import java.awt.event.MouseAdapter;
41 import java.awt.event.MouseEvent;
42 import java.io.File;
43 import java.io.FileWriter;
44 import java.io.IOException;
45
46 /***
47 *
48 * @author Donald A. Leckie
49 * @since December 25, 2002
50 * @version $Revision: 1.11 $, $Date: 2003/05/28 18:08:32 $
51 */
52 class AnalysisViewer extends JPanel {
53
54 private DirectoryTree m_directoryTree;
55 private JLabel m_message;
56 private StatusBar m_statusBar;
57 private JPanel m_directoryTreePanel;
58 private DirectoryTable m_directoryTable;
59 private JPanel m_directoryTablePanel;
60 private JSplitPane m_directorySplitPane;
61 private AnalysisResultsViewer m_resultsViewer;
62 private JPanel m_resultsViewerPanel;
63 private JSplitPane m_mainSplitPane;
64 private JMenuBar m_menuBar;
65 private PMDClipboard m_clipboardOwner = new PMDClipboard();
66 private JMenuItem m_saveMenuItem;
67 private JMenuItem m_saveAsMenuItem;
68 private JMenuItem m_printAnalysisMenuItem;
69 private JMenuItem m_copyHTMLResultsMenuItem;
70 private JMenuItem m_copyTextResultsMenuItem;
71
72 /***
73 **********************************************************************************
74 *
75 */
76 protected AnalysisViewer() {
77 super(new BorderLayout());
78
79 createStatusBar();
80 createDirectoryTreePanel();
81 createDirectoryTablePanel();
82 createDirectorySplitPane();
83 createResultsViewer();
84 createResultsViewerScrollPane();
85 createMainSplitPane();
86 createMenuBar();
87 setMenuBar();
88 add(createContentPanel(10));
89 }
90
91 /***
92 *********************************************************************************
93 *
94 */
95 private void createStatusBar() {
96 String defaultMessage;
97 CompoundBorder compoundBorder;
98 EmptyBorder emptyBorder;
99
100 defaultMessage = "Select a source file to view its analysis below.";
101 m_statusBar = new StatusBar(defaultMessage);
102 emptyBorder = new EmptyBorder(0, 0, 5, 0);
103 compoundBorder = new CompoundBorder(emptyBorder, m_statusBar.getBorder());
104 m_statusBar.setBorder(compoundBorder);
105 }
106
107 /***
108 *********************************************************************************
109 *
110 */
111 private void createDirectoryTreePanel() {
112 Color background;
113 JScrollPane scrollPane;
114
115 m_directoryTree = new DirectoryTree("File Directories");
116 scrollPane = ComponentFactory.createScrollPane(m_directoryTree);
117 background = UIManager.getColor("pmdTreeBackground");
118 scrollPane.getViewport().setBackground(background);
119 m_directoryTreePanel = new JPanel(new BorderLayout());
120 m_directoryTreePanel.setBorder(createTitledBorder(" Directory "));
121 m_directoryTreePanel.add(scrollPane, BorderLayout.CENTER);
122 }
123
124 /***
125 *********************************************************************************
126 *
127 */
128 private void createDirectoryTablePanel() {
129 Color background;
130 JScrollPane scrollPane;
131
132 m_directoryTable = new DirectoryTable(m_directoryTree, ".java");
133 scrollPane = ComponentFactory.createScrollPane(m_directoryTable);
134 background = UIManager.getColor("pmdTableBackground");
135 scrollPane.getViewport().setBackground(background);
136 m_directoryTablePanel = new JPanel(new BorderLayout());
137 m_directoryTablePanel.setBorder(createTitledBorder(" Java Source Code "));
138 m_directoryTablePanel.add(scrollPane, BorderLayout.CENTER);
139 }
140
141 /***
142 *********************************************************************************
143 *
144 */
145 private void createDirectorySplitPane() {
146 m_directorySplitPane = ComponentFactory.createHorizontalSplitPane(m_directoryTreePanel, m_directoryTablePanel);
147
148 }
149
150 /***
151 *********************************************************************************
152 *
153 */
154 private void createResultsViewer() {
155 m_resultsViewer = new AnalysisResultsViewer();
156 m_resultsViewer.setSelectionColor(Color.blue);
157 }
158
159 /***
160 *********************************************************************************
161 *
162 */
163 private void createResultsViewerScrollPane() {
164 JScrollPane scrollPane;
165
166 scrollPane = ComponentFactory.createScrollPane(m_resultsViewer);
167 m_resultsViewerPanel = new JPanel(new BorderLayout());
168 m_resultsViewerPanel.setBorder(createTitledBorder(" Analysis Results "));
169 m_resultsViewerPanel.add(scrollPane, BorderLayout.CENTER);
170 }
171
172 /***
173 *********************************************************************************
174 *
175 */
176 private void createMainSplitPane() {
177 m_mainSplitPane = ComponentFactory.createVerticalSplitPane(m_directorySplitPane, m_resultsViewerPanel);
178 }
179
180 /***
181 *********************************************************************************
182 *
183 * @param margin
184 */
185 private JPanel createContentPanel(int margin) {
186 JPanel contentPanel = new JPanel(new BorderLayout());
187
188 EtchedBorder outsideBorder = new EtchedBorder(EtchedBorder.RAISED);
189 EmptyBorder insideBorder = new EmptyBorder(margin, margin, margin, margin);
190 CompoundBorder compoundBorder = new CompoundBorder(outsideBorder, insideBorder);
191
192 contentPanel.setBorder(compoundBorder);
193 contentPanel.add(m_statusBar, BorderLayout.NORTH);
194 contentPanel.add(m_mainSplitPane, BorderLayout.CENTER);
195
196 return contentPanel;
197 }
198
199 /***
200 *********************************************************************************
201 *
202 * @param title
203 */
204 private TitledBorder createTitledBorder(String title) {
205 EtchedBorder etchedBorder;
206 TitledBorder titledBorder;
207 Font font;
208
209 etchedBorder = new EtchedBorder(EtchedBorder.RAISED);
210 titledBorder = new TitledBorder(etchedBorder, title);
211 font = titledBorder.getTitleFont();
212 font = new Font(font.getName(), Font.BOLD, font.getSize());
213 titledBorder.setTitleFont(font);
214
215 return titledBorder;
216 }
217
218 /***
219 *********************************************************************************
220 *
221 */
222 protected void setDefaultMessage() {
223 setMessage("Select a source file to view its analysis below.");
224 }
225
226 /***
227 *********************************************************************************
228 *
229 * @param message The message to be displayed in the status area.
230 */
231 protected void setMessage(String message) {
232 if (message == null) {
233 message = "";
234 }
235
236 m_message.setText(message);
237 }
238
239 /***
240 *********************************************************************************
241 *
242 */
243 protected void adjustSplitPaneDividerLocation() {
244 m_mainSplitPane.setDividerLocation(0.4);
245 m_directorySplitPane.setDividerLocation(0.4);
246 }
247
248 /***
249 *********************************************************************************
250 *
251 */
252 private void createMenuBar() {
253 m_menuBar = new JMenuBar();
254
255 m_menuBar.add(new FileMenu());
256 m_menuBar.add(new EditMenu());
257 m_menuBar.add(new HelpMenu());
258 }
259
260 /***
261 *********************************************************************************
262 *
263 */
264 protected void setMenuBar() {
265 PMDViewer.getViewer().setJMenuBar(m_menuBar);
266 }
267
268 /***
269 ********************************************************************************
270 *
271 */
272 protected void analyze() {
273 m_resultsViewer.analyze();
274 }
275
276 /***
277 *********************************************************************************
278 *********************************************************************************
279 *********************************************************************************
280 */
281 private class PrintAnalysisActionListener implements ActionListener {
282
283 public void actionPerformed(ActionEvent event) {
284 (new PrintAnalysisResults()).print();
285 }
286 }
287
288 /***
289 *********************************************************************************
290 *********************************************************************************
291 *********************************************************************************
292 */
293 private class ExitActionListener implements ActionListener {
294
295 public void actionPerformed(ActionEvent event) {
296 System.exit(0);
297 }
298 }
299
300 /***
301 *********************************************************************************
302 *********************************************************************************
303 *********************************************************************************
304 */
305 private class CopyHTMLResultsActionListener implements ActionListener, HTMLAnalysisResultsEventListener {
306 private String m_htmlText;
307
308 /***
309 *****************************************************************************
310 *
311 * @param event
312 */
313 public void actionPerformed(ActionEvent event) {
314 try {
315 ListenerList.addListener((HTMLAnalysisResultsEventListener) this);
316 HTMLAnalysisResultsEvent.notifyRequestHTMLText(this);
317
318 if ((m_htmlText != null) && (m_htmlText.length() > 0)) {
319 Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
320 StringSelection contents = new StringSelection(m_htmlText);
321 clipboard.setContents(contents, m_clipboardOwner);
322 }
323 } finally {
324 ListenerList.removeListener((HTMLAnalysisResultsEventListener) this);
325 }
326 }
327
328 /***
329 ******************************************************************************
330 *
331 * @param event
332 */
333 public void requestHTMLAnalysisResults(HTMLAnalysisResultsEvent event) {
334 }
335
336 /***
337 ******************************************************************************
338 *
339 * @param event
340 */
341 public void returnedHTMLAnalysisResults(HTMLAnalysisResultsEvent event) {
342 m_htmlText = event.getHTMLText();
343 }
344 }
345
346 /***
347 *********************************************************************************
348 *********************************************************************************
349 *********************************************************************************
350 */
351 private class CopyTextResultsActionListener implements ActionListener, TextAnalysisResultsEventListener {
352 private String m_text;
353
354 public void actionPerformed(ActionEvent event) {
355 try {
356 ListenerList.addListener((TextAnalysisResultsEventListener) this);
357 TextAnalysisResultsEvent.notifyRequestText(this);
358
359 if ((m_text != null) && (m_text.length() > 0)) {
360 Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
361 StringSelection contents = new StringSelection(m_text);
362 clipboard.setContents(contents, m_clipboardOwner);
363 }
364 } finally {
365 ListenerList.removeListener((TextAnalysisResultsEventListener) this);
366 }
367 }
368
369 /***
370 ****************************************************************************
371 *
372 * @param event
373 */
374 public void requestTextAnalysisResults(TextAnalysisResultsEvent event) {
375 }
376
377 /***
378 ****************************************************************************
379 *
380 * @param event
381 */
382 public void returnedTextAnalysisResults(TextAnalysisResultsEvent event) {
383 m_text = event.getText();
384 }
385 }
386
387 /***
388 *********************************************************************************
389 *********************************************************************************
390 *********************************************************************************
391 */
392 private class FileMenuMouseListener extends MouseAdapter implements HTMLAnalysisResultsEventListener {
393
394 private String m_htmlText;
395
396 /***
397 *****************************************************************************
398 *
399 * @param event
400 */
401 public void mouseEntered(MouseEvent event) {
402 try {
403 ListenerList.addListener((HTMLAnalysisResultsEventListener) this);
404 HTMLAnalysisResultsEvent.notifyRequestHTMLText(this);
405 boolean enable = (m_htmlText.length() > 0);
406 m_saveMenuItem.setEnabled(enable);
407 m_saveAsMenuItem.setEnabled(enable);
408 m_printAnalysisMenuItem.setEnabled(enable);
409 } finally {
410 ListenerList.removeListener((HTMLAnalysisResultsEventListener) this);
411 }
412 }
413
414 /***
415 ****************************************************************************
416 *
417 * @param event
418 */
419 public void requestHTMLAnalysisResults(HTMLAnalysisResultsEvent event) {
420 }
421
422 /***
423 ****************************************************************************
424 *
425 * @param event
426 */
427 public void returnedHTMLAnalysisResults(HTMLAnalysisResultsEvent event) {
428 m_htmlText = event.getHTMLText();
429 }
430 }
431
432 /***
433 *********************************************************************************
434 *********************************************************************************
435 *********************************************************************************
436 */
437 private class EditMenuMouseListener extends MouseAdapter implements HTMLAnalysisResultsEventListener {
438
439 String m_htmlText;
440
441 /***
442 *****************************************************************************
443 *
444 * @param event
445 */
446 public void mouseEntered(MouseEvent event) {
447 try {
448 ListenerList.addListener((HTMLAnalysisResultsEventListener) this);
449 HTMLAnalysisResultsEvent.notifyRequestHTMLText(this);
450 boolean enable = (m_htmlText.length() > 0);
451 m_copyHTMLResultsMenuItem.setEnabled(enable);
452 m_copyTextResultsMenuItem.setEnabled(enable);
453 } finally {
454 ListenerList.removeListener((HTMLAnalysisResultsEventListener) this);
455 }
456 }
457
458 /***
459 ****************************************************************************
460 *
461 * @param event
462 */
463 public void requestHTMLAnalysisResults(HTMLAnalysisResultsEvent event) {
464 }
465
466 /***
467 ****************************************************************************
468 *
469 * @param event
470 */
471 public void returnedHTMLAnalysisResults(HTMLAnalysisResultsEvent event) {
472 m_htmlText = event.getHTMLText();
473 }
474 }
475
476 /***
477 *********************************************************************************
478 *********************************************************************************
479 *********************************************************************************
480 */
481 private class FileMenu extends JMenu {
482
483 /***
484 ********************************************************************
485 *
486 */
487 private FileMenu() {
488 super("File");
489
490 setMnemonic('F');
491
492 Icon icon;
493 JMenuItem menuItem;
494
495 //
496 // Save menu item
497 //
498 icon = UIManager.getIcon("save");
499 m_saveMenuItem = new JMenuItem("Save Analysis Results", icon);
500 m_saveMenuItem.addActionListener((ActionListener) new SaveActionListener());
501 m_saveMenuItem.setMnemonic('S');
502 m_saveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_MASK));
503 m_saveMenuItem.setDisabledIcon(icon);
504 add(m_saveMenuItem);
505
506 //
507 // Save As menu item
508 //
509 icon = UIManager.getIcon("saveAs");
510 m_saveAsMenuItem = new JMenuItem("Save Analysis Results As...", icon);
511 m_saveAsMenuItem.addActionListener((ActionListener) new SaveAsActionListener());
512 m_saveAsMenuItem.setMnemonic('A');
513 m_saveAsMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_MASK));
514 m_saveAsMenuItem.setDisabledIcon(icon);
515 add(m_saveAsMenuItem);
516
517 //
518 // Separator
519 //
520 add(new JSeparator());
521
522 //
523 // Print Analysis menu item
524 //
525 icon = UIManager.getIcon("print");
526 m_printAnalysisMenuItem = new JMenuItem("Print Analysis Results...", icon);
527 m_printAnalysisMenuItem.addActionListener((ActionListener) new PrintAnalysisActionListener());
528 m_printAnalysisMenuItem.setMnemonic('P');
529 m_printAnalysisMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, KeyEvent.CTRL_MASK));
530 m_printAnalysisMenuItem.setDisabledIcon(icon);
531 add(m_printAnalysisMenuItem);
532
533 //
534 // Separator
535 //
536 add(new JSeparator());
537
538 //
539 // Exit menu item
540 //
541 menuItem = new JMenuItem("Exit...");
542 menuItem.addActionListener((ActionListener) new ExitActionListener());
543 menuItem.setMnemonic('X');
544 add(menuItem);
545
546 addMouseListener(new FileMenuMouseListener());
547 }
548 }
549
550 /***
551 *********************************************************************************
552 *********************************************************************************
553 *********************************************************************************
554 */
555 private class EditMenu extends JMenu {
556
557 /***
558 ********************************************************************
559 *
560 */
561 private EditMenu() {
562 super("Edit");
563
564 setMnemonic('E');
565
566 Icon icon;
567
568 //
569 // Copy Results menu item
570 //
571 icon = UIManager.getIcon("copy");
572 m_copyHTMLResultsMenuItem = new JMenuItem("Copy Analysis Results as HTML", icon);
573 m_copyHTMLResultsMenuItem.addActionListener((ActionListener) new CopyHTMLResultsActionListener());
574 m_copyHTMLResultsMenuItem.setMnemonic('C');
575 m_copyHTMLResultsMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_MASK));
576 m_copyHTMLResultsMenuItem.setEnabled(false);
577 m_copyHTMLResultsMenuItem.setDisabledIcon(icon);
578 add(m_copyHTMLResultsMenuItem);
579
580 //
581 // Copy Results menu item
582 //
583 icon = UIManager.getIcon("copy");
584 m_copyTextResultsMenuItem = new JMenuItem("Copy Analysis Results as Text", icon);
585 m_copyTextResultsMenuItem.addActionListener((ActionListener) new CopyTextResultsActionListener());
586 m_copyTextResultsMenuItem.setMnemonic('Y');
587 m_copyTextResultsMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, KeyEvent.CTRL_MASK));
588 m_copyTextResultsMenuItem.setEnabled(false);
589 m_copyTextResultsMenuItem.setDisabledIcon(icon);
590 add(m_copyTextResultsMenuItem);
591
592 addMouseListener(new EditMenuMouseListener());
593 }
594 }
595
596 /***
597 *********************************************************************************
598 *********************************************************************************
599 *********************************************************************************
600 */
601 private class SaveSaveAs implements HTMLAnalysisResultsEventListener {
602
603 private String m_htmlText;
604
605 /***
606 ****************************************************************************
607 *
608 * @param outputFile
609 */
610 private void perform(File outputFile) {
611 if (outputFile != null) {
612 try {
613 ListenerList.addListener((HTMLAnalysisResultsEventListener) this);
614 HTMLAnalysisResultsEvent.notifyRequestHTMLText(this);
615 FileWriter writer = null;
616
617 if (outputFile.exists()) {
618 outputFile.delete();
619 }
620
621 try {
622 writer = new FileWriter(outputFile);
623 writer.write(m_htmlText);
624 String message = "Saved Analysis results to file \"" + outputFile.getPath() + "\".";
625 MessageDialog.show(PMDViewer.getViewer(), message);
626 } catch (IOException ioException) {
627 String message = "Could not save Analysis results to a file.";
628 PMDException pmdException = new PMDException(message, ioException);
629 pmdException.fillInStackTrace();
630 throw pmdException;
631 } finally {
632 try {
633 writer.close();
634 } catch (IOException exception) {
635 }
636 }
637 } catch (PMDException pmdException) {
638 String message = pmdException.getMessage();
639 Exception exception = pmdException.getReason();
640 MessageDialog.show(PMDViewer.getViewer(), message, exception);
641 } finally {
642 ListenerList.removeListener((HTMLAnalysisResultsEventListener) this);
643 }
644 }
645 }
646
647 /***
648 ****************************************************************************
649 *
650 * Implements AnalyzeFileEventListener
651 *
652 * @param event
653 */
654 public void requestHTMLAnalysisResults(HTMLAnalysisResultsEvent event) {
655 }
656
657 /***
658 ****************************************************************************
659 *
660 * Implements AnalyzeFileEventListener
661 *
662 * @param event
663 */
664 public void returnedHTMLAnalysisResults(HTMLAnalysisResultsEvent event) {
665 m_htmlText = event.getHTMLText();
666 }
667 }
668
669 /***
670 *********************************************************************************
671 *********************************************************************************
672 *********************************************************************************
673 */
674 private class SaveActionListener implements ActionListener, DirectoryTableEventListener {
675
676 private File m_selectedFile;
677
678 /***
679 ****************************************************************************
680 *
681 * @param event
682 */
683 public void actionPerformed(ActionEvent event) {
684 try {
685 ListenerList.addListener((DirectoryTableEventListener) this);
686 DirectoryTableEvent.notifyRequestFileSelected(this);
687
688 if (m_selectedFile != null) {
689 String fileName = m_selectedFile.getName();
690 int index = fileName.lastIndexOf('.');
691
692 if (index >= 0) {
693 fileName = fileName.substring(0, index);
694 }
695
696 String directory = Preferences.getPreferences().getAnalysisResultsPath();
697 String path = directory + File.separator + fileName + ".html";
698 File outputFile = new File(path);
699 (new SaveSaveAs()).perform(outputFile);
700 }
701 } catch (PMDException pmdException) {
702 String message = pmdException.getMessage();
703 Exception exception = pmdException.getReason();
704 MessageDialog.show(PMDViewer.getViewer(), message, exception);
705 } finally {
706 ListenerList.removeListener((DirectoryTableEventListener) this);
707 }
708 }
709
710 /***
711 ****************************************************************************
712 *
713 * Implements DirectoryTableEventListener
714 *
715 * @param event
716 */
717 public void requestSelectedFile(DirectoryTableEvent event) {
718 }
719
720 /***
721 ****************************************************************************
722 *
723 * Implements DirectoryTableEventListener
724 *
725 * @param event
726 */
727 public void fileSelectionChanged(DirectoryTableEvent event) {
728 }
729
730 /***
731 ****************************************************************************
732 *
733 * Implements DirectoryTableEventListener
734 *
735 * @param event
736 */
737 public void fileSelected(DirectoryTableEvent event) {
738 m_selectedFile = event.getSelectedFile();
739 }
740 }
741
742 /***
743 *********************************************************************************
744 *********************************************************************************
745 *********************************************************************************
746 */
747 private class SaveAsActionListener implements ActionListener, DirectoryTableEventListener {
748
749 private File m_selectedFile;
750
751 public void actionPerformed(ActionEvent event) {
752 try {
753 ListenerList.addListener((DirectoryTableEventListener) this);
754 DirectoryTableEvent.notifyRequestFileSelected(this);
755
756 if (m_selectedFile != null) {
757 String fileName = m_selectedFile.getName();
758 int index = fileName.lastIndexOf('.');
759
760 if (index >= 0) {
761 fileName = fileName.substring(0, index);
762 }
763
764 String path = Preferences.getPreferences().getAnalysisResultsPath();
765 File lastSavedDirectory = new File(path);
766 File selectedFile = new File(path + File.separator + fileName + ".html");
767 JFileChooser fileChooser = new JFileChooser(lastSavedDirectory);
768 fileChooser.addChoosableFileFilter(new HTMLFileFilter());
769 fileChooser.setSelectedFile(selectedFile);
770 int result = fileChooser.showSaveDialog(PMDViewer.getViewer());
771
772 if (result == JFileChooser.APPROVE_OPTION) {
773 (new SaveSaveAs()).perform(fileChooser.getSelectedFile());
774 }
775 }
776 } catch (PMDException pmdException) {
777 String message = pmdException.getMessage();
778 Exception exception = pmdException.getReason();
779 MessageDialog.show(PMDViewer.getViewer(), message, exception);
780 } finally {
781 ListenerList.removeListener((DirectoryTableEventListener) this);
782 }
783 }
784
785 /***
786 ****************************************************************************
787 *
788 * Implements DirectoryTableEventListener
789 *
790 * @param event
791 */
792 public void requestSelectedFile(DirectoryTableEvent event) {
793 }
794
795 /***
796 ****************************************************************************
797 *
798 * Implements DirectoryTableEventListener
799 *
800 * @param event
801 */
802 public void fileSelectionChanged(DirectoryTableEvent event) {
803 }
804
805 /***
806 ****************************************************************************
807 *
808 * Implements DirectoryTableEventListener
809 *
810 * @param event
811 */
812 public void fileSelected(DirectoryTableEvent event) {
813 m_selectedFile = event.getSelectedFile();
814 }
815 }
816
817 /***
818 *********************************************************************************
819 *********************************************************************************
820 *********************************************************************************
821 */
822 private class HTMLFileFilter extends FileFilter {
823
824 /***
825 *****************************************************************************
826 * @param file
827 * @return
828 */
829 public boolean accept(File file) {
830 String fileName = file.getName();
831
832 return fileName.endsWith(".html") || fileName.endsWith(".htm");
833 }
834
835 /***
836 ******************************************************************************
837 */
838 public String getDescription() {
839 return "HTML Anaysis Result File (*.html, *.htm)";
840 }
841 }
842
843 /***
844 *********************************************************************************
845 *********************************************************************************
846 *********************************************************************************
847 */
848 private class PMDClipboard implements ClipboardOwner {
849
850 /***
851 ************************************************************************
852 *
853 */
854 public void lostOwnership(Clipboard clipboard, Transferable contents) {
855 }
856 }
857 }
This page was automatically generated by Maven