浏览代码

resizing problem in pseudocode nodes solved

Kolja Strohm 6 年之前
父节点
当前提交
59152af588
共有 3 个文件被更改,包括 31 次插入3 次删除
  1. 11 0
      src/view/MainView.java
  2. 10 3
      src/view/NiceButton.java
  3. 10 0
      src/view/PseudoCodeRenderer.java

+ 11 - 0
src/view/MainView.java

@@ -703,7 +703,18 @@ public class MainView {
                 TreePath selPath = pseudoTree.getPathForLocation(e.getX(), e.getY());
                 TreePath selPath = pseudoTree.getPathForLocation(e.getX(), e.getY());
                 if( selPath != null && e.getClickCount() == 3 ) {
                 if( selPath != null && e.getClickCount() == 3 ) {
                     ((PseudoCodeNode)selPath.getLastPathComponent()).setBreakPoint( !((PseudoCodeNode)selPath.getLastPathComponent()).hasBreakPoint() );
                     ((PseudoCodeNode)selPath.getLastPathComponent()).setBreakPoint( !((PseudoCodeNode)selPath.getLastPathComponent()).hasBreakPoint() );
+                    if( !pseudoTree.isExpanded( selPath ) )
+                    {
+                        pseudoTree.collapsePath( selPath );
+                        pseudoTree.expandPath( selPath );
+                    }
+                    else
+                    {
+                        pseudoTree.expandPath( selPath );
+                        pseudoTree.collapsePath( selPath );
+                    }
                     pseudoTree.repaint();
                     pseudoTree.repaint();
+                    frame.repaint();
                 }
                 }
             }
             }
         } );
         } );

+ 10 - 3
src/view/NiceButton.java

@@ -29,8 +29,11 @@ public class NiceButton extends JButton implements MouseListener {
     {
     {
         super( NiceButton.class.getResource( "/img/" + name + ".png" ) != null ? makeColorTransparent( new ImageIcon( NiceButton.class.getResource( "/img/" + name + ".png" ) ).getImage().getScaledInstance( 40, 40, Image.SCALE_AREA_AVERAGING ), Color.WHITE, 0 ) : new ImageIcon() );
         super( NiceButton.class.getResource( "/img/" + name + ".png" ) != null ? makeColorTransparent( new ImageIcon( NiceButton.class.getResource( "/img/" + name + ".png" ) ).getImage().getScaledInstance( 40, 40, Image.SCALE_AREA_AVERAGING ), Color.WHITE, 0 ) : new ImageIcon() );
         setSize( 40, 40 );
         setSize( 40, 40 );
+        //setOpaque(false);
+        //setContentAreaFilled(false);
         addMouseListener( this );
         addMouseListener( this );
-        setBorderPainted( false );
+        //setBorderPainted( false );
+        //setBackground( Color.LIGHT_GRAY );
     }
     }
 
 
 
 
@@ -48,13 +51,17 @@ public class NiceButton extends JButton implements MouseListener {
 
 
     @Override
     @Override
     public void mouseEntered(MouseEvent e) {
     public void mouseEntered(MouseEvent e) {
-        setBorderPainted( true );
+        //setOpaque( true );
+        //setContentAreaFilled(true);
+        //setBorderPainted( true );
     }
     }
 
 
 
 
     @Override
     @Override
     public void mouseExited(MouseEvent e) {
     public void mouseExited(MouseEvent e) {
-        setBorderPainted( false );
+        //setOpaque( false );
+        //setContentAreaFilled(false);
+        //setBorderPainted( false );
     }
     }
     
     
     private static ImageIcon makeColorTransparent(final Image im, final Color color, int tolerance) {
     private static ImageIcon makeColorTransparent(final Image im, final Color color, int tolerance) {

+ 10 - 0
src/view/PseudoCodeRenderer.java

@@ -2,6 +2,7 @@ package view;
 
 
 import java.awt.Color;
 import java.awt.Color;
 import java.awt.Component;
 import java.awt.Component;
+import java.awt.Dimension;
 import java.awt.Font;
 import java.awt.Font;
 import java.awt.Graphics2D;
 import java.awt.Graphics2D;
 import java.awt.image.BufferedImage;
 import java.awt.image.BufferedImage;
@@ -35,6 +36,12 @@ public class PseudoCodeRenderer extends DefaultTreeCellRenderer {
         }
         }
     }
     }
     
     
+   /* @Override
+    public Dimension getPreferredSize()
+    {
+        return new Dimension( width, 30 );
+    }*/
+    
     @Override
     @Override
     public Color getForeground() {
     public Color getForeground() {
         return new Color(0xa9b7c6);
         return new Color(0xa9b7c6);
@@ -86,6 +93,9 @@ public class PseudoCodeRenderer extends DefaultTreeCellRenderer {
             width += 15;
             width += 15;
         String line = "" + getLineNumber( (TreeNode) value );
         String line = "" + getLineNumber( (TreeNode) value );
         width += tree.getFontMetrics( this.getFont() ).stringWidth( line );
         width += tree.getFontMetrics( this.getFont() ).stringWidth( line );
+        this.setPreferredSize( new Dimension( width + tree.getFontMetrics( this.getFont() ).stringWidth( (String)node.getUserObject() ) + 5, 30 ) );
+        this.setSize( new Dimension( width + tree.getFontMetrics( this.getFont() ).stringWidth( (String)node.getUserObject() ) + 5, 30 ) );
+        this.doLayout();
         BufferedImage rowNumerImg = new BufferedImage( width, 30, BufferedImage.TYPE_INT_ARGB );
         BufferedImage rowNumerImg = new BufferedImage( width, 30, BufferedImage.TYPE_INT_ARGB );
         Graphics2D g = (Graphics2D) rowNumerImg.getGraphics();
         Graphics2D g = (Graphics2D) rowNumerImg.getGraphics();
         int x = 5;
         int x = 5;