|
@@ -17,6 +17,7 @@ import java.awt.event.KeyEvent;
|
|
|
|
|
|
import javax.swing.JButton;
|
|
import javax.swing.JButton;
|
|
import javax.swing.JDialog;
|
|
import javax.swing.JDialog;
|
|
|
|
+import javax.swing.JFileChooser;
|
|
import javax.swing.JFrame;
|
|
import javax.swing.JFrame;
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JLayeredPane;
|
|
import javax.swing.JLayeredPane;
|
|
@@ -27,6 +28,7 @@ import javax.swing.JTextField;
|
|
import javax.swing.JTree;
|
|
import javax.swing.JTree;
|
|
import javax.swing.event.DocumentEvent;
|
|
import javax.swing.event.DocumentEvent;
|
|
import javax.swing.event.DocumentListener;
|
|
import javax.swing.event.DocumentListener;
|
|
|
|
+import javax.swing.filechooser.FileNameExtensionFilter;
|
|
import javax.swing.tree.DefaultTreeModel;
|
|
import javax.swing.tree.DefaultTreeModel;
|
|
|
|
|
|
import animation.Action;
|
|
import animation.Action;
|
|
@@ -37,6 +39,8 @@ import graph.InitializeNodePositions;
|
|
import graph.LayeredGraphEdge;
|
|
import graph.LayeredGraphEdge;
|
|
import graph.LayeredGraphNode;
|
|
import graph.LayeredGraphNode;
|
|
import graph.RandomGraphGenerator;
|
|
import graph.RandomGraphGenerator;
|
|
|
|
+import graph.io.Reader;
|
|
|
|
+import graph.io.Writer;
|
|
import lib.SweepCrossingMinimizer;
|
|
import lib.SweepCrossingMinimizer;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -611,22 +615,41 @@ public class MainView {
|
|
});
|
|
});
|
|
load = new NiceButton( "load" );
|
|
load = new NiceButton( "load" );
|
|
load.setLocation( 230, 60 );
|
|
load.setLocation( 230, 60 );
|
|
|
|
+ load.setMnemonic( KeyEvent.VK_L );
|
|
load.addActionListener( new ActionListener() {
|
|
load.addActionListener( new ActionListener() {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
public void actionPerformed(ActionEvent e) {
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+ JFileChooser chooser = new JFileChooser();
|
|
|
|
+ chooser.setFileFilter( new FileNameExtensionFilter("Json Graph", "json") );
|
|
|
|
+ chooser.showOpenDialog( frame );
|
|
|
|
+ if( chooser.getSelectedFile() != null )
|
|
|
|
+ {
|
|
|
|
+ Reader r = new Reader( chooser.getSelectedFile().getAbsolutePath() );
|
|
|
|
+ LayeredGraphNode graph = r.readInputGraph();
|
|
|
|
+ InitializeNodePositions.placeNodes( graph );
|
|
|
|
+ new MainView( graph );
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
});
|
|
});
|
|
save = new NiceButton( "save" );
|
|
save = new NiceButton( "save" );
|
|
save.setLocation( 285, 60 );
|
|
save.setLocation( 285, 60 );
|
|
|
|
+ save.setMnemonic( KeyEvent.VK_S );
|
|
save.addActionListener( new ActionListener() {
|
|
save.addActionListener( new ActionListener() {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
public void actionPerformed(ActionEvent e) {
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+ JFileChooser chooser = new JFileChooser();
|
|
|
|
+ chooser.setFileFilter( new FileNameExtensionFilter("Json Graph", "json") );
|
|
|
|
+ chooser.showSaveDialog( frame );
|
|
|
|
+ if( chooser.getSelectedFile() != null )
|
|
|
|
+ {
|
|
|
|
+ Writer w = new Writer( chooser.getSelectedFile().getAbsolutePath() );
|
|
|
|
+ w.writeOutputGraph( graph );
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
});
|
|
});
|