99import java .awt .event .ItemEvent ;
1010import java .awt .event .ItemListener ;
1111import java .io .File ;
12+ import java .io .FileReader ;
1213import java .net .URL ;
1314import java .text .DecimalFormat ;
15+ import java .util .ArrayList ;
16+ import java .util .Scanner ;
1417
1518import javax .swing .ButtonGroup ;
1619import javax .swing .ImageIcon ;
2629import javax .swing .JRadioButtonMenuItem ;
2730import javax .swing .JTextField ;
2831import javax .swing .SwingWorker ;
32+ import javax .swing .JFileChooser ;
2933
3034import projections .gui .ChooseEntriesWindow ;
3135import projections .gui .FloatJTextField ;
@@ -59,7 +63,7 @@ class WindowControls extends JPanel implements ActionListener,
5963 // basic zoom controls
6064 private JButton bDecrease , bIncrease , bReset ;
6165
62- private JButton bZoomSelected , bLoadSelected , bRanges ;
66+ private JButton bZoomSelected , bLoadSelected , bRanges , bOrder ;
6367
6468 private JTextField highlightTime , selectionBeginTime , selectionEndTime , selectionDiff ;
6569
@@ -114,7 +118,9 @@ class WindowControls extends JPanel implements ActionListener,
114118 private JMenuItem mDisplayLegend ;
115119
116120 private JMenuItem mDisplayTopTimesText ;
117-
121+
122+ private JFileChooser chooseOrderfc ;
123+
118124 protected WindowControls (TimelineWindow parentWindow_ ,
119125 Data data_ ) {
120126
@@ -132,7 +138,40 @@ protected WindowControls(TimelineWindow parentWindow_,
132138 userEventWindow = new UserEventWindow (cbUserTable );
133139
134140 }
135-
141+
142+
143+ protected void showOrderDialog () {
144+ chooseOrderfc = new JFileChooser ();
145+ int returnVal = chooseOrderfc .showOpenDialog (parentWindow );
146+ if (returnVal == JFileChooser .APPROVE_OPTION ) {
147+ String chosenFile = chooseOrderfc .getSelectedFile ().getName ();
148+ String homeDir = System .getProperty ("user.home" );
149+ String fullPath = String .join (File .separator , homeDir , chosenFile );
150+
151+ ArrayList <Integer > orderedList = readOrderFromFile (fullPath );
152+ data .setProcessorList (orderedList );
153+ parentWindow .refreshDisplay (true );
154+ parentWindow .setVisible (true );
155+ }
156+
157+ }
158+
159+ protected ArrayList <Integer > readOrderFromFile (String fileName ) {
160+ Scanner in = null ;
161+ try {
162+ in = new Scanner (new FileReader (fileName ));
163+ } catch (java .io .FileNotFoundException ex ) {
164+ System .out .println ("File not found: " + fileName );
165+ }
166+ ArrayList <Integer > orderedList = new ArrayList <Integer >();
167+ String pe = null ;
168+
169+ while (in .hasNextInt ()) {
170+ orderedList .add (in .nextInt ());
171+ }
172+ in .close ();
173+ return orderedList ;
174+ }
136175
137176 protected void showDialog () {
138177 if (dialog == null ){
@@ -424,6 +463,10 @@ else if (c == bRanges) {
424463 showDialog ();
425464 }
426465
466+ else if (c == bOrder ) {
467+ showOrderDialog ();
468+ }
469+
427470 else if (c == bLoadSelected ) {
428471 loadSelected ();
429472 parentWindow .refreshDisplay (true );
@@ -743,6 +786,7 @@ private void CreateLayout() {
743786 bZoomSelected = new JButton ("Zoom Selection" );
744787 bLoadSelected = new JButton ("Load Selection" );
745788 bRanges = new JButton ("Load New Time/PE Range" );
789+ bOrder = new JButton ("Set PE Order" );
746790
747791 bZoomSelected .setEnabled (false );
748792 bLoadSelected .setEnabled (false );
@@ -751,6 +795,7 @@ private void CreateLayout() {
751795 bZoomSelected .addActionListener (this );
752796 bLoadSelected .addActionListener (this );
753797 bRanges .addActionListener (this );
798+ bOrder .addActionListener (this );
754799
755800
756801 highlightTime = new JTextField (" " );
@@ -774,6 +819,7 @@ private void CreateLayout() {
774819 Util .gblAdd (zoomPanel , selectionEndTime , gbc , 4 , 2 , 1 , 1 , 1 , 1 );
775820 Util .gblAdd (zoomPanel , selectionDiff , gbc , 5 , 2 , 1 , 1 , 1 , 1 );
776821 Util .gblAdd (zoomPanel , bRanges , gbc , 0 , 1 , 1 , 1 , 1 , 1 );
822+ Util .gblAdd (zoomPanel , bOrder , gbc , 1 , 1 , 1 , 1 , 1 , 1 );
777823 Util .gblAdd (zoomPanel , new JLabel ("Time At Mouse Cursor" , JLabel .CENTER ), gbc , 2 , 1 , 1 , 1 , 1 , 1 );
778824 Util .gblAdd (zoomPanel , new JLabel ("Selection Begin Time" , JLabel .CENTER ), gbc , 3 , 1 , 1 , 1 , 1 , 1 );
779825 Util .gblAdd (zoomPanel , new JLabel ("Selection End Time" , JLabel .CENTER ), gbc , 4 , 1 , 1 , 1 , 1 , 1 );
0 commit comments