|
@@ -20,8 +20,9 @@ import animation.PseudoCodeNode;
|
|
*
|
|
*
|
|
*/
|
|
*/
|
|
public class PseudoCodeRenderer extends DefaultTreeCellRenderer {
|
|
public class PseudoCodeRenderer extends DefaultTreeCellRenderer {
|
|
-
|
|
|
|
|
|
+
|
|
private static final long serialVersionUID = 1L;
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
+ private static ImageIcon currentLine = new ImageIcon( PseudoCodeNode.class.getResource( "/img/current_line.png" ) );
|
|
|
|
|
|
private Color specialColor = null;
|
|
private Color specialColor = null;
|
|
|
|
|
|
@@ -78,15 +79,29 @@ public class PseudoCodeRenderer extends DefaultTreeCellRenderer {
|
|
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean arg2, boolean arg3, boolean arg4, int arg5, boolean arg6) {
|
|
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean arg2, boolean arg3, boolean arg4, int arg5, boolean arg6) {
|
|
|
|
|
|
PseudoCodeNode node = (PseudoCodeNode) value;
|
|
PseudoCodeNode node = (PseudoCodeNode) value;
|
|
- BufferedImage rowNumerImg = new BufferedImage( 30, 30, BufferedImage.TYPE_INT_ARGB );
|
|
|
|
|
|
+ int width = 10;
|
|
|
|
+ if( !node.hasSelectedSubnode() && node.isSelected() )
|
|
|
|
+ width += 25;
|
|
|
|
+ if( node.hasBreakPoint() )
|
|
|
|
+ width += 15;
|
|
|
|
+ String line = "" + getLineNumber( (TreeNode) value );
|
|
|
|
+ width += tree.getFontMetrics( this.getFont() ).stringWidth( line );
|
|
|
|
+ BufferedImage rowNumerImg = new BufferedImage( width, 30, BufferedImage.TYPE_INT_ARGB );
|
|
Graphics2D g = (Graphics2D) rowNumerImg.getGraphics();
|
|
Graphics2D g = (Graphics2D) rowNumerImg.getGraphics();
|
|
|
|
+ int x = 5;
|
|
|
|
+ if( !node.hasSelectedSubnode() && node.isSelected() )
|
|
|
|
+ {
|
|
|
|
+ g.drawImage( currentLine.getImage(), x, 5, 20, 20, null );
|
|
|
|
+ x += 25;
|
|
|
|
+ }
|
|
|
|
+ g.setColor( RenderHelper.CURRENT_LINE_COLOR );
|
|
|
|
+ g.drawString( line, x, 20 );
|
|
|
|
+ x += g.getFontMetrics().stringWidth( line ) + 5;
|
|
if( node.hasBreakPoint() )
|
|
if( node.hasBreakPoint() )
|
|
{
|
|
{
|
|
g.setColor( new Color (0xe7887a) );
|
|
g.setColor( new Color (0xe7887a) );
|
|
- g.fillOval(20, 10, 10, 10 );
|
|
|
|
|
|
+ g.fillOval(x, 10, 10, 10 );
|
|
}
|
|
}
|
|
- g.setColor( RenderHelper.CURRENT_LINE_COLOR );
|
|
|
|
- g.drawString( "" + getLineNumber( (TreeNode) value ), 5, 20 );
|
|
|
|
g.dispose();
|
|
g.dispose();
|
|
this.setClosedIcon( new ImageIcon( rowNumerImg ) );
|
|
this.setClosedIcon( new ImageIcon( rowNumerImg ) );
|
|
this.setOpenIcon( new ImageIcon( rowNumerImg ) );
|
|
this.setOpenIcon( new ImageIcon( rowNumerImg ) );
|