]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - src/tim/prune/gui/WizardLayout.java
Moved source into separate src directory due to popular request
[GpsPrune.git] / src / tim / prune / gui / WizardLayout.java
diff --git a/src/tim/prune/gui/WizardLayout.java b/src/tim/prune/gui/WizardLayout.java
new file mode 100644 (file)
index 0000000..1a5a8f1
--- /dev/null
@@ -0,0 +1,102 @@
+package tim.prune.gui;
+
+import java.awt.CardLayout;
+import java.awt.Component;
+import javax.swing.JPanel;
+
+/**
+ * Layout class enhancing the regular card layout to add the ability to
+ * see which is the current card, how many cards there are, previous / next etc
+ */
+public class WizardLayout extends CardLayout
+{
+       private JPanel _panel = null;
+       private int    _currentCard = 0;
+       private int    _numCards = 0;
+
+       /**
+        * Constructor
+        * @param inPanel panel controlled by this layout
+        */
+       public WizardLayout(JPanel inPanel)
+       {
+               super();
+               _panel = inPanel;
+               _panel.setLayout(this);
+       }
+
+       /**
+        * Add a card to this layout
+        * @param inCard
+        */
+       public void addCard(Component inCard)
+       {
+               _panel.add(inCard, "card" + _numCards);
+               _numCards++;
+       }
+
+       /**
+        * @return current card index (from 0)
+        */
+       public int getCurrentCardIndex() {
+               return _currentCard;
+       }
+
+       /**
+        * Go to the first card
+        */
+       public void showFirstCard()
+       {
+               first(_panel);
+               _currentCard = 0;
+       }
+
+       /**
+        * Go to the next card
+        */
+       public void showNextCard()
+       {
+               if (_currentCard < (_numCards-1))
+               {
+                       next(_panel);
+                       _currentCard++;
+               }
+       }
+
+       /**
+        * Go to the previous card
+        */
+       public void showPreviousCard()
+       {
+               if (_currentCard > 0)
+               {
+                       previous(_panel);
+                       _currentCard--;
+               }
+       }
+
+       /**
+        * @return true if this is the first card
+        */
+       public boolean isFirstCard() {
+               return _currentCard == 0;
+       }
+
+       /**
+        * @return true if this is the last card
+        */
+       public boolean isLastCard() {
+               return _currentCard == (_numCards-1);
+       }
+
+       /**
+        * @param inIndex index (from 0) of the card to show
+        */
+       public void showCard(int inIndex)
+       {
+               if (inIndex >= 0 && inIndex < _numCards) {
+                       show(_panel, "card" + inIndex);
+                       _currentCard = inIndex;
+               }
+       }
+}