Procházet zdrojové kódy

zeilennummern hinzugefügt

Kolja Strohm před 7 roky
rodič
revize
30f0883544

+ 10 - 1
src/bk/ExtremalLayoutCalc.java

@@ -31,10 +31,12 @@ public class ExtremalLayoutCalc implements AlgorithmStage {
 	private LayoutState status;
 	private PseudoCodeNode bcNode;
 	private PseudoCodeNode cpNode;
+	private LayoutType type;
 	
 	
 	public ExtremalLayoutCalc( LayoutType typ, LayeredGraphNode graph )
 	{
+	    type = typ;
 		status = LayoutState.BLOCK_CALCULATION;
 		bc = new BlockCalc( graph, typ );
 		cp = new Compaction( graph, typ );
@@ -89,7 +91,14 @@ public class ExtremalLayoutCalc implements AlgorithmStage {
 
     @Override
     public PseudoCodeNode createPseudocodeTree() {
-        pseudoCode = new PseudoCodeNode( "Berechne extremes Layout" );
+        if( type == LayoutType.TOP_BOTTOM_LEFT )
+            pseudoCode = new PseudoCodeNode( "Berechne extremes Layout 'Top Left'" );
+        if( type == LayoutType.TOP_BOTTOM_RIGHT )
+            pseudoCode = new PseudoCodeNode( "Berechne extremes Layout 'Top Right'" );
+        if( type == LayoutType.BOTTOM_TOP_LEFT )
+            pseudoCode = new PseudoCodeNode( "Berechne extremes Layout 'Bottom Left'" );
+        if( type == LayoutType.BOTTOM_TOP_RIGHT )
+            pseudoCode = new PseudoCodeNode( "Berechne extremes Layout 'Bottom Right'" );
         bcNode = bc.createPseudocodeTree();
         cpNode = cp.createPseudocodeTree();
         pseudoCode.add( bcNode );

+ 1 - 1
src/view/MainView.java

@@ -19,6 +19,7 @@ import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTextField;
 import javax.swing.JTree;
+import javax.swing.UIManager;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 
@@ -237,7 +238,6 @@ public class MainView {
         pseudoTree = new JTree( algorithm.createPseudocodeTree() );
         pseudoTree.setEnabled( false );
         pseudoTree.setCellRenderer( new PseudoCodeRenderer() );
-        
         JScrollPane treeView = new JScrollPane( pseudoTree );
         treeView.setBounds( 10,  110,  380, 380 );
         

+ 42 - 0
src/view/PseudoCodeRenderer.java

@@ -2,9 +2,14 @@ package view;
 
 import java.awt.Color;
 import java.awt.Component;
+import java.awt.image.BufferedImage;
 
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
 import javax.swing.JTree;
 import javax.swing.tree.DefaultTreeCellRenderer;
+import javax.swing.tree.TreeNode;
+import javax.swing.tree.TreePath;
 
 import animation.PseudoCodeNode;
 
@@ -25,11 +30,48 @@ public class PseudoCodeRenderer extends DefaultTreeCellRenderer {
             return null;
         }
     }
+    
+    private int countChildren( TreeNode treeNode )
+    {
+        if( treeNode.isLeaf() )
+            return 0;
+        else
+        {
+            int sum = 0;
+            for( int i = 0; i < treeNode.getChildCount(); i++ )
+            {
+                sum += countChildren( treeNode.getChildAt( i ) ) + 1;
+            }
+            return sum;
+        }
+    }
 
+    private int getLineNumber( TreeNode treeNode )
+    {
+        TreeNode parent = treeNode.getParent();
+        if( parent == null )
+            return 1;
+        int sum = getLineNumber( parent ) + 1;
+        for( int i = 0; i < parent.getChildCount(); i++ )
+        {
+            if( i == parent.getIndex( treeNode ) )
+                return sum;
+            sum += countChildren( parent.getChildAt( i ) ) + 1;
+        }
+        return 0;
+    }
 
     @Override
     public Component getTreeCellRendererComponent(JTree tree, Object value, boolean arg2, boolean arg3, boolean arg4, int arg5, boolean arg6) {
 
+        if( value instanceof PseudoCodeNode )
+        {
+            BufferedImage rowNumerImg = new BufferedImage( 30, 30, BufferedImage.TYPE_INT_ARGB );
+            rowNumerImg.getGraphics().drawString( "" + getLineNumber( (TreeNode) value ), 5, 20 );
+            this.setClosedIcon( new ImageIcon( rowNumerImg ) );
+            this.setOpenIcon( new ImageIcon( rowNumerImg ) );
+            this.setLeafIcon( new ImageIcon( rowNumerImg ) );
+        }
         Component c = super.getTreeCellRendererComponent(tree, value, arg2, arg3, arg4, arg5, arg6);
         specialColor = false;
         if( value instanceof PseudoCodeNode )