Преглед на файлове

added a nice rightclick menu to expand and collapse the psudocode more easily

Kolja Strohm преди 6 години
родител
ревизия
2ed3f1b487
променени са 1 файла, в които са добавени 102 реда и са изтрити 0 реда
  1. 102 0
      src/view/MainView.java

+ 102 - 0
src/view/MainView.java

@@ -20,7 +20,10 @@ import javax.swing.JFileChooser;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JLayeredPane;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
 import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
 import javax.swing.JScrollPane;
 import javax.swing.JSplitPane;
 import javax.swing.JTextArea;
@@ -438,6 +441,105 @@ public class MainView {
                     pseudoTree.repaint();
                     frame.repaint();
                 }
+                if( e.getButton() == MouseEvent.BUTTON3 )
+                {
+                    JPopupMenu menu = new JPopupMenu();
+                    JMenu expandM = new JMenu( "expand ..." );
+                    JMenuItem exAll = new JMenuItem( "all" );
+                    exAll.addActionListener( new ActionListener() {
+                        @Override
+                        public void actionPerformed(ActionEvent e) {
+                            for( int i = 0; i < pseudoTree.getRowCount(); i++ )
+                                pseudoTree.expandRow( i );
+                        }
+                    });
+                    expandM.add( exAll );
+                    JMenuItem exTop = new JMenuItem( "top level lines" );
+                    exTop.addActionListener( new ActionListener() {
+                        @Override
+                        public void actionPerformed(ActionEvent e) {
+                            for( int i = 0; i < pseudoTree.getRowCount(); i++ )
+                            {
+                                if( pseudoTree.getPathForRow( i ).getPathCount() < 3 )
+                                    pseudoTree.expandRow( i );
+                            }
+                        }
+                    });
+                    expandM.add( exTop );
+                    JMenuItem exSec = new JMenuItem( "second level lines" );
+                    exSec.addActionListener( new ActionListener() {
+                        @Override
+                        public void actionPerformed(ActionEvent e) {
+                            for( int i = 0; i < pseudoTree.getRowCount(); i++ )
+                            {
+                                if( pseudoTree.getPathForRow( i ).getPathCount() < 4 )
+                                    pseudoTree.expandRow( i );
+                            }
+                        }
+                    });
+                    expandM.add( exSec );
+                    JMenuItem exThi = new JMenuItem( "third level lines" );
+                    exThi.addActionListener( new ActionListener() {
+                        @Override
+                        public void actionPerformed(ActionEvent e) {
+                            for( int i = 0; i < pseudoTree.getRowCount(); i++ )
+                            {
+                                if( pseudoTree.getPathForRow( i ).getPathCount() < 5 )
+                                    pseudoTree.expandRow( i );
+                            }
+                        }
+                    });
+                    expandM.add( exThi );
+                    menu.add( expandM );
+                    JMenu collapsM = new JMenu( "collapse ..." );
+                    JMenuItem colAll = new JMenuItem( "all" );
+                    colAll.addActionListener( new ActionListener() {
+                        @Override
+                        public void actionPerformed(ActionEvent e) {
+                            for( int i = pseudoTree.getRowCount() - 1; i > 0; i-- )
+                                pseudoTree.collapseRow( i );
+                        }
+                    });
+                    collapsM.add( colAll );
+                    JMenuItem colTop = new JMenuItem( "top level lines" );
+                    colTop.addActionListener( new ActionListener() {
+                        @Override
+                        public void actionPerformed(ActionEvent e) {
+                            for( int i = pseudoTree.getRowCount() - 1; i > 0; i-- )
+                            {
+                                if( pseudoTree.getPathForRow( i ).getPathCount() >= 2 )
+                                    pseudoTree.collapseRow( i );
+                            }
+                        }
+                    });
+                    collapsM.add( colTop );
+                    JMenuItem colSec = new JMenuItem( "second level lines" );
+                    colSec.addActionListener( new ActionListener() {
+                        @Override
+                        public void actionPerformed(ActionEvent e) {
+                            for( int i = pseudoTree.getRowCount() - 1; i > 0; i-- )
+                            {
+                                if( pseudoTree.getPathForRow( i ).getPathCount() >= 3 )
+                                    pseudoTree.collapseRow( i );
+                            }
+                        }
+                    });
+                    collapsM.add( colSec );
+                    JMenuItem colThi = new JMenuItem( "third level lines" );
+                    colThi.addActionListener( new ActionListener() {
+                        @Override
+                        public void actionPerformed(ActionEvent e) {
+                            for( int i = pseudoTree.getRowCount() - 1; i > 0; i-- )
+                            {
+                                if( pseudoTree.getPathForRow( i ).getPathCount() >= 4 )
+                                    pseudoTree.collapseRow( i );
+                            }
+                        }
+                    });
+                    collapsM.add( colThi );
+                    menu.add( collapsM );
+                    menu.show( e.getComponent(), e.getX(), e.getY() );
+                }
             }
         } );
         pseudoTree.setRowHeight(15);