View Javadoc
1 package net.sourceforge.pmd.util.viewer.gui; 2 3 import net.sourceforge.pmd.ast.SimpleNode; 4 import net.sourceforge.pmd.util.viewer.model.ViewerModel; 5 import net.sourceforge.pmd.util.viewer.model.ViewerModelEvent; 6 import net.sourceforge.pmd.util.viewer.model.ViewerModelListener; 7 import net.sourceforge.pmd.util.viewer.util.NLS; 8 9 import javax.swing.BorderFactory; 10 import javax.swing.JPanel; 11 import javax.swing.JScrollPane; 12 import javax.swing.JTextArea; 13 import javax.swing.SwingUtilities; 14 import javax.swing.text.BadLocationException; 15 import javax.swing.text.DefaultHighlighter; 16 import java.awt.BorderLayout; 17 import java.awt.Color; 18 19 20 /*** 21 * source code panel 22 * 23 * @author Boris Gruschko ( boris at gruschko.org ) 24 * @version $Id: SourceCodePanel.java,v 1.2 2003/09/23 20:51:06 tomcopeland Exp $ 25 */ 26 public class SourceCodePanel 27 extends JPanel 28 implements ViewerModelListener 29 { 30 private ViewerModel model; 31 private JTextArea sourceCodeArea; 32 33 public SourceCodePanel( ViewerModel model ) 34 { 35 this.model = model; 36 37 init( ); 38 } 39 40 private void init( ) 41 { 42 model.addViewerModelListener( this ); 43 44 setBorder( 45 BorderFactory.createTitledBorder( 46 BorderFactory.createEtchedBorder( ), NLS.nls( "SOURCE.PANEL.TITLE" ) ) ); 47 48 setLayout( new BorderLayout( ) ); 49 50 sourceCodeArea = new JTextArea( ); 51 52 add( new JScrollPane( sourceCodeArea ), BorderLayout.CENTER ); 53 } 54 55 /*** 56 * retrieves the string representation of the source code 57 * 58 * @return source code's string representation 59 */ 60 public String getSourceCode( ) 61 { 62 return sourceCodeArea.getText( ); 63 } 64 65 /*** 66 * @see org.gruschko.pmd.viewer.model.ViewerModelListener#viewerModelChanged(org.gruschko.pmd.viewer.model.ViewerModelEvent) 67 */ 68 public void viewerModelChanged( ViewerModelEvent e ) 69 { 70 if ( e.getReason( ) == ViewerModelEvent.NODE_SELECTED ) 71 { 72 final SimpleNode node = (SimpleNode)e.getParameter( ); 73 74 SwingUtilities.invokeLater( 75 new Runnable( ) 76 { 77 public void run( ) 78 { 79 try 80 { 81 sourceCodeArea.getHighlighter( ).removeAllHighlights( ); 82 83 if ( node == null ) 84 { 85 return; 86 } 87 88 int startOffset = 89 ( sourceCodeArea.getLineStartOffset( node.getBeginLine( ) - 1 ) + 90 node.getBeginColumn( ) ) - 1; 91 92 int end = 93 ( sourceCodeArea.getLineStartOffset( node.getEndLine( ) - 1 ) + 94 node.getEndColumn( ) ); 95 96 sourceCodeArea.getHighlighter( ).addHighlight( 97 startOffset, end, 98 new DefaultHighlighter.DefaultHighlightPainter( 99 new Color( 79, 237, 111 ) ) ); 100 101 sourceCodeArea.moveCaretPosition( startOffset ); 102 } 103 catch ( BadLocationException exc ) 104 { 105 throw new IllegalStateException( exc.getMessage( ) ); 106 } 107 } 108 } ); 109 } 110 } 111 } 112 113 114 /* 115 * $Log: SourceCodePanel.java,v $ 116 * Revision 1.2 2003/09/23 20:51:06 tomcopeland 117 * Cleaned up imports 118 * 119 * Revision 1.1 2003/09/23 20:32:42 tomcopeland 120 * Added Boris Gruschko's new AST/XPath viewer 121 * 122 * Revision 1.1 2003/09/24 01:33:03 bgr 123 * moved to a new package 124 * 125 * Revision 1.1 2003/09/22 05:21:54 bgr 126 * initial commit 127 * 128 */

This page was automatically generated by Maven