]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - src/tim/prune/save/UpDownToggler.java
Moved source into separate src directory due to popular request
[GpsPrune.git] / src / tim / prune / save / UpDownToggler.java
diff --git a/src/tim/prune/save/UpDownToggler.java b/src/tim/prune/save/UpDownToggler.java
new file mode 100644 (file)
index 0000000..ffdc1d6
--- /dev/null
@@ -0,0 +1,58 @@
+package tim.prune.save;
+
+import javax.swing.JButton;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+
+/**
+ * Class to enable and disable a pair of up and down buttons
+ */
+public class UpDownToggler implements ListSelectionListener
+{
+       private JButton _upButton = null;
+       private JButton _downButton = null;
+       private int _maxIndex = 2;
+
+       /**
+        * Constructor giving buttons to enable/disable
+        * @param inUpButton up button
+        * @param inDownButton down button
+        */
+       public UpDownToggler(JButton inUpButton, JButton inDownButton)
+       {
+               _upButton = inUpButton;
+               _downButton = inDownButton;
+       }
+
+       /**
+        * Set the list size
+        * @param inListSize number of items in list
+        */
+       public void setListSize(int inListSize)
+       {
+               _maxIndex = inListSize - 1;
+       }
+
+       /**
+        * list selection has changed
+        */
+       public void valueChanged(ListSelectionEvent e)
+       {
+               ListSelectionModel lsm = (ListSelectionModel) e.getSource();
+               if (lsm.isSelectionEmpty())
+               {
+                       // no rows are selected
+                       _upButton.setEnabled(false);
+                       _downButton.setEnabled(false);
+               }
+               else
+               {
+                       // single row is selected
+                       int row = lsm.getMinSelectionIndex();
+                       _upButton.setEnabled(row > 0);
+                       _downButton.setEnabled(row >= 0 && row < _maxIndex);
+               }
+       }
+}