]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/gui/UndoManager.java
Version 18, July 2015
[GpsPrune.git] / tim / prune / gui / UndoManager.java
index 5c3a992b431f0f7e9edcb65b8d6aa6b6728cc4b5..b9d9f32993e51adcdb72957f9e5d309822dc811e 100644 (file)
@@ -4,7 +4,6 @@ import java.awt.FlowLayout;
 import java.awt.BorderLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
-import java.util.Stack;
 import javax.swing.BorderFactory;
 import javax.swing.JButton;
 import javax.swing.JDialog;
@@ -19,38 +18,49 @@ import javax.swing.event.ListSelectionListener;
 
 import tim.prune.App;
 import tim.prune.I18nManager;
-import tim.prune.undo.UndoOperation;
+import tim.prune.undo.UndoStack;
 
 /**
  * Class to manage the selection of actions to undo
  */
 public class UndoManager
 {
-       private App _app;
-       private JDialog _dialog;
-       private JList _actionList;
+       private App _app = null;
+       private JFrame _parentFrame = null;
+       private JDialog _dialog = null;
+       private JList<String> _actionList = null;
 
 
        /**
         * Constructor
+        * @param inApp App object
+        * @param inFrame parent frame
         */
        public UndoManager(App inApp, JFrame inFrame)
        {
                _app = inApp;
-               _dialog = new JDialog(inFrame, I18nManager.getText("dialog.undo.title"), true);
-               _dialog.setLocationRelativeTo(inFrame);
+               _parentFrame = inFrame;
+       }
+
+       /**
+        * Show the dialog to select which actions to undo
+        */
+       public void show()
+       {
+               _dialog = new JDialog(_parentFrame, I18nManager.getText("dialog.undo.title"), true);
+               _dialog.setLocationRelativeTo(_parentFrame);
                JPanel mainPanel = new JPanel();
                mainPanel.setLayout(new BorderLayout(3, 3));
                mainPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
-               Stack undoStack = inApp.getUndoStack();
+               UndoStack undoStack = _app.getUndoStack();
                mainPanel.add(new JLabel(I18nManager.getText("dialog.undo.pretext")), BorderLayout.NORTH);
 
                String[] undoActions = new String[undoStack.size()];
                for (int i=0; i<undoStack.size(); i++)
                {
-                       undoActions[i] = ((UndoOperation) undoStack.elementAt(undoStack.size()-1-i)).getDescription();
+                       undoActions[i] = undoStack.getOperationAt(undoStack.size()-1-i).getDescription();
                }
-               _actionList = new JList(undoActions);
+               _actionList = new JList<String>(undoActions);
                _actionList.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
                _actionList.setSelectedIndex(0);
                _actionList.addListSelectionListener(new ListSelectionListener()
@@ -67,7 +77,7 @@ public class UndoManager
                // Buttons
                JPanel buttonPanel = new JPanel();
                buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
-               JButton okButton = new JButton("OK");
+               JButton okButton = new JButton(I18nManager.getText("button.ok"));
                okButton.addActionListener(new ActionListener()
                        {
                                public void actionPerformed(ActionEvent e)
@@ -77,7 +87,7 @@ public class UndoManager
                                }
                        });
                buttonPanel.add(okButton);
-               JButton cancelButton = new JButton("Cancel");
+               JButton cancelButton = new JButton(I18nManager.getText("button.cancel"));
                cancelButton.addActionListener(new ActionListener()
                        {
                                public void actionPerformed(ActionEvent e)
@@ -89,7 +99,7 @@ public class UndoManager
                mainPanel.add(buttonPanel, BorderLayout.SOUTH);
                _dialog.getContentPane().add(mainPanel);
                _dialog.pack();
-               _dialog.show();
+               _dialog.setVisible(true);
        }
 
 }