Quellcode durchsuchen

nicere Pseudocode Anzeige

Kolja Strohm vor 6 Jahren
Ursprung
Commit
250d6a4d66

+ 13 - 0
src/animation/PseudoCodeNode.java

@@ -54,6 +54,19 @@ public class PseudoCodeNode extends DefaultMutableTreeNode {
         return selected;
     }
     
+    public boolean hasSelectedSubnode()
+    {
+    	if( children != null )
+    	{
+	    	for( Object ch : children )
+	        {
+	            if( ((PseudoCodeNode)ch).isSelected() || ((PseudoCodeNode)ch).hasSelectedSubnode() )
+	            	return true;
+	        }
+    	}
+    	return false;
+    }
+    
     public boolean setSelected( boolean selected )
     {
         if( selected && breakPoint )

BIN
src/img/current_line.png


+ 1 - 0
src/view/MainView.java

@@ -688,6 +688,7 @@ public class MainView {
         pseudoTree = new JTree();
         PseudoCodeNode tree = algorithm.createPseudocodeTree( pseudoTree );
         tree.setController( controller );
+        pseudoTree.setBackground( new Color( 0x1e1e1e ) );
         pseudoTree.setModel( new DefaultTreeModel( tree ) );
         pseudoTree.setCellRenderer( new PseudoCodeRenderer() );
         pseudoTree.setSelectionModel( null );

+ 1 - 1
src/view/NiceButton.java

@@ -23,7 +23,7 @@ public class NiceButton extends JButton implements MouseListener {
     
     public NiceButton( String name )
     {
-        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 );
         addMouseListener( this );
         setBorderPainted( false );

+ 17 - 8
src/view/PseudoCodeRenderer.java

@@ -14,22 +14,25 @@ import animation.PseudoCodeNode;
 
 public class PseudoCodeRenderer extends DefaultTreeCellRenderer {
     
-    /**
-     * 
-     */
     private static final long serialVersionUID = 1L;
+    private static ImageIcon currentLine = new ImageIcon( PseudoCodeNode.class.getResource( "/img/current_line.png" ) );
     
     boolean specialColor = false;
 
     @Override
     public Color getBackgroundNonSelectionColor() {
         if(specialColor) {
-            return Color.GREEN;
+            return new Color( 0x464646 );
         } else {
             return null;
         }
     }
     
+    @Override
+    public Color getTextNonSelectionColor() {
+    	return new Color( 0xb5c4cf );
+    }
+    
     private int countChildren( TreeNode treeNode )
     {
         if( treeNode.isLeaf() )
@@ -64,15 +67,21 @@ 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( 30, 30, BufferedImage.TYPE_INT_ARGB );
+        BufferedImage rowNumerImg = new BufferedImage( 50, 30, BufferedImage.TYPE_INT_ARGB );
         Graphics2D g = (Graphics2D) rowNumerImg.getGraphics();
+        if( !node.hasSelectedSubnode() && node.isSelected() )
+        {
+        	g.drawImage( currentLine.getImage(), 2, 5, 20, 20, null );
+        }
         if( node.hasBreakPoint() )
         {
             g.setColor( Color.RED );
-            g.fillOval(20, 10, 10, 10 );
+            g.fillOval( 40, 10, 10, 10 );
+            g.setColor( Color.WHITE );
+            g.drawOval( 40, 10, 10, 10 );
         }
-        g.setColor( Color.BLACK );
-        g.drawString( "" + getLineNumber( (TreeNode) value ), 5, 20 );
+        g.setColor( new Color( 0xb5c4cf ) );
+        g.drawString( "" + getLineNumber( (TreeNode) value ), 25, 20 );
         g.dispose();
         this.setClosedIcon( new ImageIcon( rowNumerImg ) );
         this.setOpenIcon( new ImageIcon( rowNumerImg ) );