Browse Source

breakpoints can now be triggerd by a single click on the line number

Kolja Strohm 6 years ago
parent
commit
d15cae3152
1 changed files with 44 additions and 1 deletions
  1. 44 1
      src/view/PseudoCodeLines.java

+ 44 - 1
src/view/PseudoCodeLines.java

@@ -7,6 +7,8 @@ import java.awt.Graphics;
 import java.awt.Graphics2D;
 import java.awt.Rectangle;
 import java.awt.RenderingHints;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
 
 import javax.swing.ImageIcon;
 import javax.swing.JComponent;
@@ -14,6 +16,7 @@ import javax.swing.JScrollPane;
 import javax.swing.JTree;
 import javax.swing.JViewport;
 import javax.swing.tree.TreeNode;
+import javax.swing.tree.TreePath;
 
 import animation.PseudoCodeNode;
 
@@ -24,7 +27,7 @@ import animation.PseudoCodeNode;
  *
  */
 
-public class PseudoCodeLines extends JComponent{
+public class PseudoCodeLines extends JComponent implements MouseListener{
    
     static final long serialVersionUID = 432143214L;
    
@@ -43,6 +46,7 @@ public class PseudoCodeLines extends JComponent{
     public PseudoCodeLines( JTree t ){
         super();
         tree = t;
+        this.addMouseListener( this );
     }
     
     /**
@@ -137,4 +141,43 @@ public class PseudoCodeLines extends JComponent{
             }
         }
     }
+    
+    private int getRowNumber( int y ) {
+        int curr = 0;
+        int res = -1;
+        for ( int i = 0; i < tree.getRowCount(); i++ ){
+            Rectangle rect = tree.getRowBounds( i );
+            if( y > curr && y < rect.y + rect.height )
+            {
+                res = i;
+                break;
+            }
+            curr = rect.y + rect.height;
+        }
+        return res;
+    }
+
+    @Override
+    public void mouseClicked(MouseEvent e) {
+        int rNum = getRowNumber( e.getY() );
+        if( rNum < 0 )
+            return;
+        TreePath path = tree.getPathForRow( rNum );
+        if( path == null )
+            return;
+        ((PseudoCodeNode)path.getLastPathComponent()).setBreakPoint( !((PseudoCodeNode)path.getLastPathComponent()).hasBreakPoint() );
+        tree.repaint();
+    }
+
+    @Override
+    public void mousePressed(MouseEvent e) {}
+
+    @Override
+    public void mouseReleased(MouseEvent e) {}
+
+    @Override
+    public void mouseEntered(MouseEvent e) {}
+
+    @Override
+    public void mouseExited(MouseEvent e) {}
 }