Explorar o código

width calculation of line image

Kolja Strohm %!s(int64=6) %!d(string=hai) anos
pai
achega
da92b8ef5a
Modificáronse 1 ficheiros con 15 adicións e 5 borrados
  1. 15 5
      src/view/PseudoCodeRenderer.java

+ 15 - 5
src/view/PseudoCodeRenderer.java

@@ -79,19 +79,29 @@ public class PseudoCodeRenderer extends DefaultTreeCellRenderer {
     public Component getTreeCellRendererComponent(JTree tree, Object value, boolean arg2, boolean arg3, boolean arg4, int arg5, boolean arg6) {
 
         PseudoCodeNode node = (PseudoCodeNode) value;
-        BufferedImage rowNumerImg = new BufferedImage( 50, 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();
+        int x = 5;
         if( !node.hasSelectedSubnode() && node.isSelected() )
         {
-        	g.drawImage( currentLine.getImage(), 2, 5, 20, 20, null );
+        	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() )
         {
             g.setColor( new Color (0xe7887a) );
-            g.fillOval(40, 10, 10, 10 );
+            g.fillOval(x, 10, 10, 10 );
         }
-        g.setColor( RenderHelper.CURRENT_LINE_COLOR );
-        g.drawString( "" + getLineNumber( (TreeNode) value ), 25, 20 );
         g.dispose();
         this.setClosedIcon( new ImageIcon( rowNumerImg ) );
         this.setOpenIcon( new ImageIcon( rowNumerImg ) );