⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sourcecodepanel.java

📁 检查Java程序漏洞
💻 JAVA
字号:
package net.sourceforge.pmd.util.viewer.gui;

import net.sourceforge.pmd.ast.SimpleNode;
import net.sourceforge.pmd.util.viewer.model.ViewerModel;
import net.sourceforge.pmd.util.viewer.model.ViewerModelEvent;
import net.sourceforge.pmd.util.viewer.model.ViewerModelListener;
import net.sourceforge.pmd.util.viewer.util.NLS;

import javax.swing.*;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultHighlighter;
import java.awt.*;


/**
 * source code panel
 *
 * @author Boris Gruschko ( boris at gruschko.org )
 * @version $Id: SourceCodePanel.java,v 1.3 2004/04/15 18:21:58 tomcopeland Exp $
 */
public class SourceCodePanel
  extends JPanel
  implements ViewerModelListener
{
  private ViewerModel model;
  private JTextArea   sourceCodeArea;

  public SourceCodePanel( ViewerModel model )
  {
    this.model = model;

    init(  );
  }

  private void init(  )
  {
    model.addViewerModelListener( this );

    setBorder(
      BorderFactory.createTitledBorder(
        BorderFactory.createEtchedBorder(  ), NLS.nls( "SOURCE.PANEL.TITLE" ) ) );

    setLayout( new BorderLayout(  ) );

    sourceCodeArea = new JTextArea(  );

    add( new JScrollPane( sourceCodeArea ), BorderLayout.CENTER );
  }

  /**
   * retrieves the string representation of the source code
   *
   * @return source code's string representation
   */
  public String getSourceCode(  )
  {
    return sourceCodeArea.getText(  );
  }

  /**
   * @see org.gruschko.pmd.viewer.model.ViewerModelListener#viewerModelChanged(org.gruschko.pmd.viewer.model.ViewerModelEvent)
   */
  public void viewerModelChanged( ViewerModelEvent e )
  {
    if ( e.getReason(  ) == ViewerModelEvent.NODE_SELECTED )
    {
      final SimpleNode node = (SimpleNode)e.getParameter(  );

      SwingUtilities.invokeLater(
        new Runnable(  )
        {
          public void run(  )
          {
            try
            {
              sourceCodeArea.getHighlighter(  ).removeAllHighlights(  );

              if ( node == null )
              {
                return;
              }

              int startOffset =
                ( sourceCodeArea.getLineStartOffset( node.getBeginLine(  ) - 1 ) +
                node.getBeginColumn(  ) ) - 1;

              int end =
                ( sourceCodeArea.getLineStartOffset( node.getEndLine(  ) - 1 ) +
                node.getEndColumn(  ) );

              sourceCodeArea.getHighlighter(  ).addHighlight(
                startOffset, end,
                new DefaultHighlighter.DefaultHighlightPainter(
                  new Color( 79, 237, 111 ) ) );

              sourceCodeArea.moveCaretPosition( startOffset );
            }
            catch ( BadLocationException exc )
            {
              throw new IllegalStateException( exc.getMessage(  ) );
            }
          }
        } );
    }
  }
}


/*
 * $Log: SourceCodePanel.java,v $ * Revision 1.3  2004/04/15 18:21:58  tomcopeland * Cleaned up imports with new version of IDEA; fixed some deprecated Ant junx *
 * Revision 1.2  2003/09/23 20:51:06  tomcopeland
 * Cleaned up imports
 *
 * Revision 1.1  2003/09/23 20:32:42  tomcopeland
 * Added Boris Gruschko's new AST/XPath viewer
 *
 * Revision 1.1  2003/09/24 01:33:03  bgr
 * moved to a new package
 *
 * Revision 1.1  2003/09/22 05:21:54  bgr
 * initial commit
 *
 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -