|
@@ -1,16 +1,16 @@
|
|
package view;
|
|
package view;
|
|
|
|
|
|
import java.awt.BorderLayout;
|
|
import java.awt.BorderLayout;
|
|
|
|
+import java.awt.Color;
|
|
import java.awt.Dimension;
|
|
import java.awt.Dimension;
|
|
import java.awt.GridLayout;
|
|
import java.awt.GridLayout;
|
|
-import java.awt.Image;
|
|
|
|
|
|
+import java.awt.event.ActionEvent;
|
|
|
|
+import java.awt.event.ActionListener;
|
|
import java.awt.event.ComponentAdapter;
|
|
import java.awt.event.ComponentAdapter;
|
|
import java.awt.event.ComponentEvent;
|
|
import java.awt.event.ComponentEvent;
|
|
import java.awt.event.KeyEvent;
|
|
import java.awt.event.KeyEvent;
|
|
import java.awt.event.KeyListener;
|
|
import java.awt.event.KeyListener;
|
|
-import java.net.URL;
|
|
|
|
|
|
|
|
-import javax.swing.ImageIcon;
|
|
|
|
import javax.swing.JButton;
|
|
import javax.swing.JButton;
|
|
import javax.swing.JFrame;
|
|
import javax.swing.JFrame;
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JLabel;
|
|
@@ -19,7 +19,8 @@ import javax.swing.JPanel;
|
|
import javax.swing.JScrollPane;
|
|
import javax.swing.JScrollPane;
|
|
import javax.swing.JTextField;
|
|
import javax.swing.JTextField;
|
|
import javax.swing.JTree;
|
|
import javax.swing.JTree;
|
|
-import javax.swing.tree.DefaultMutableTreeNode;
|
|
|
|
|
|
+import javax.swing.event.DocumentEvent;
|
|
|
|
+import javax.swing.event.DocumentListener;
|
|
|
|
|
|
import animation.Action;
|
|
import animation.Action;
|
|
import animation.AnimationController;
|
|
import animation.AnimationController;
|
|
@@ -75,34 +76,164 @@ public class MainView {
|
|
*/
|
|
*/
|
|
public MainView( LayeredGraphNode graph )
|
|
public MainView( LayeredGraphNode graph )
|
|
{
|
|
{
|
|
|
|
+ controller = new AnimationController();
|
|
|
|
+ controller.setTimeBetween( 50 );
|
|
|
|
+ BKNodePlacement algorithm = new BKNodePlacement( controller, graph );
|
|
|
|
+
|
|
|
|
+ // Create Menu GUI
|
|
stepForward = new NiceButton( "stepForward" );
|
|
stepForward = new NiceButton( "stepForward" );
|
|
stepForward.setLocation( 10, 10 );
|
|
stepForward.setLocation( 10, 10 );
|
|
|
|
+ stepForward.addActionListener( new ActionListener() {
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void actionPerformed(ActionEvent e) {
|
|
|
|
+ controller.setContinuous( false );
|
|
|
|
+ controller.setNextAction( Action.FORWARD_OVER );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ });
|
|
stepForwardInto = new NiceButton( "stepForwardInto" );
|
|
stepForwardInto = new NiceButton( "stepForwardInto" );
|
|
stepForwardInto.setLocation( 60, 10 );
|
|
stepForwardInto.setLocation( 60, 10 );
|
|
|
|
+ stepForwardInto.addActionListener( new ActionListener() {
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void actionPerformed(ActionEvent e) {
|
|
|
|
+ controller.setContinuous( false );
|
|
|
|
+ controller.setNextAction( Action.FORWARD );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ });
|
|
stepForwardOut = new NiceButton( "stepForwardOut" );
|
|
stepForwardOut = new NiceButton( "stepForwardOut" );
|
|
stepForwardOut.setLocation( 110, 10 );
|
|
stepForwardOut.setLocation( 110, 10 );
|
|
|
|
+ stepForwardOut.addActionListener( new ActionListener() {
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void actionPerformed(ActionEvent e) {
|
|
|
|
+ controller.setContinuous( false );
|
|
|
|
+ controller.setNextAction( Action.FORWARD_OUT );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ });
|
|
runForward = new NiceButton( "runForward" );
|
|
runForward = new NiceButton( "runForward" );
|
|
runForward.setLocation( 160, 10 );
|
|
runForward.setLocation( 160, 10 );
|
|
|
|
+ runForward.addActionListener( new ActionListener() {
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void actionPerformed(ActionEvent e) {
|
|
|
|
+ controller.setContinuous( true );
|
|
|
|
+ controller.setNextAction( Action.FORWARD );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ });
|
|
runBackward = new NiceButton( "runBackward" );
|
|
runBackward = new NiceButton( "runBackward" );
|
|
runBackward.setLocation( 160, 60 );
|
|
runBackward.setLocation( 160, 60 );
|
|
|
|
+ runBackward.addActionListener( new ActionListener() {
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void actionPerformed(ActionEvent e) {
|
|
|
|
+ controller.setContinuous( true );
|
|
|
|
+ controller.setNextAction( Action.BACKWARD );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ });
|
|
stepBackward = new NiceButton( "stepBackward" );
|
|
stepBackward = new NiceButton( "stepBackward" );
|
|
stepBackward.setLocation( 10, 60 );
|
|
stepBackward.setLocation( 10, 60 );
|
|
- //stepBackwardInto = new NiceButton( "" );
|
|
|
|
- //stepBackwardInto.setLocation( 60, 60 );
|
|
|
|
|
|
+ stepBackward.addActionListener( new ActionListener() {
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void actionPerformed(ActionEvent e) {
|
|
|
|
+ controller.setContinuous( false );
|
|
|
|
+ controller.setNextAction( Action.BACKWARD_OVER );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ });
|
|
|
|
+ stepBackwardInto = new NiceButton( "stepBackwardInto" );
|
|
|
|
+ stepBackwardInto.setLocation( 60, 60 );
|
|
|
|
+ stepBackwardInto.addActionListener( new ActionListener() {
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void actionPerformed(ActionEvent e) {
|
|
|
|
+ controller.setContinuous( false );
|
|
|
|
+ controller.setNextAction( Action.BACKWARD );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ });
|
|
stepBackwardOut = new NiceButton( "stepBackwardOut" );
|
|
stepBackwardOut = new NiceButton( "stepBackwardOut" );
|
|
stepBackwardOut.setLocation( 110, 60 );
|
|
stepBackwardOut.setLocation( 110, 60 );
|
|
|
|
+ stepBackwardOut.addActionListener( new ActionListener() {
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void actionPerformed(ActionEvent e) {
|
|
|
|
+ controller.setContinuous( false );
|
|
|
|
+ controller.setNextAction( Action.BACKWARD_OUT );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ });
|
|
pause = new NiceButton( "pause" );
|
|
pause = new NiceButton( "pause" );
|
|
pause.setLocation( 210, 10 );
|
|
pause.setLocation( 210, 10 );
|
|
|
|
+ pause.addActionListener( new ActionListener() {
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void actionPerformed(ActionEvent e) {
|
|
|
|
+ controller.setContinuous( false );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ });
|
|
debug = new NiceButton( "debug" );
|
|
debug = new NiceButton( "debug" );
|
|
debug.setLocation( 350, 10 );
|
|
debug.setLocation( 350, 10 );
|
|
|
|
+ generateRandom = new NiceButton( "generateRandom" );
|
|
|
|
+ generateRandom.setLocation( 350, 60 );
|
|
|
|
+ generateRandom.addActionListener( new ActionListener() {
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void actionPerformed(ActionEvent e) {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ });
|
|
delayText = new JLabel( "Delay (ms)" );
|
|
delayText = new JLabel( "Delay (ms)" );
|
|
delayText.setBounds( 260, 10, 80, 20 );
|
|
delayText.setBounds( 260, 10, 80, 20 );
|
|
delay = new JTextField( "50" );
|
|
delay = new JTextField( "50" );
|
|
delay.setBounds( 260, 30, 80, 20 );
|
|
delay.setBounds( 260, 30, 80, 20 );
|
|
-
|
|
|
|
- controller = new AnimationController();
|
|
|
|
- controller.setTimeBetween( 50 );
|
|
|
|
- BKNodePlacement algorithm = new BKNodePlacement( controller, graph );
|
|
|
|
|
|
+ delay.getDocument().addDocumentListener( new DocumentListener() {
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void insertUpdate(DocumentEvent e) {
|
|
|
|
+ try
|
|
|
|
+ {
|
|
|
|
+ controller.setTimeBetween( Integer.parseInt( delay.getText() ) );
|
|
|
|
+ delay.setBackground( Color.WHITE );
|
|
|
|
+ } catch( Exception e1 )
|
|
|
|
+ {
|
|
|
|
+ delay.setBackground( Color.RED );
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void removeUpdate(DocumentEvent e) {
|
|
|
|
+ try
|
|
|
|
+ {
|
|
|
|
+ controller.setTimeBetween( Integer.parseInt( delay.getText() ) );
|
|
|
|
+ delay.setBackground( Color.WHITE );
|
|
|
|
+ } catch( Exception e1 )
|
|
|
|
+ {
|
|
|
|
+ delay.setBackground( Color.RED );
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void changedUpdate(DocumentEvent e) {
|
|
|
|
+ try
|
|
|
|
+ {
|
|
|
|
+ controller.setTimeBetween( Integer.parseInt( delay.getText() ) );
|
|
|
|
+ delay.setBackground( Color.WHITE );
|
|
|
|
+ } catch( Exception e1 )
|
|
|
|
+ {
|
|
|
|
+ delay.setBackground( Color.RED );
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ });
|
|
pseudoTree = new JTree( algorithm.createPseudocodeTree() );
|
|
pseudoTree = new JTree( algorithm.createPseudocodeTree() );
|
|
pseudoTree.setEnabled( false );
|
|
pseudoTree.setEnabled( false );
|
|
pseudoTree.setCellRenderer( new PseudoCodeRenderer() );
|
|
pseudoTree.setCellRenderer( new PseudoCodeRenderer() );
|