package com.limegroup.gnutella.gui.init; import java.awt.CardLayout; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JPanel; /** * This class handles the panel of buttons at the bottom of the setup * window. The panel has two states -- the standard state with a "Back," * a "Next," and a "Cancel" button, and a "Finish" state with a "Finish" * button. */ //2345678|012345678|012345678|012345678|012345678|012345678|012345678|012345678| final class SetupButtons extends JPanel { /** * The number of pixels separating buttons. */ private final int BUTTON_SEP = 6; /** * Title for the standard setup buttons panel */ private final String STANDARD_BUTTON_TITLE = "Standard Buttons"; /** * Title for the next setup buttons panel */ private final String NEXT_BUTTON_TITLE = "Next"; /** * Title for the setup buttons panel with only the "finish" button */ private final String FINISH_BUTTON_TITLE = "Finish Button"; /** * Title for the setup buttons panel with only the "cancel" button */ private final String CANCEL_BUTTON_TITLE = "Cancel Button"; /** * Variable for the card layout so that we can make calls on it later. */ private final CardLayout CARD_LAYOUT = new CardLayout(); /** * Flag for whether or not the standard buttons are currently shown. */ private boolean _standardButtonsShown = true; /** * Creates the back, next, cancel, and finish buttons for the setup * window. It also creates a second cancel button for when the * button panel only has a cancel button. * * @param manager the <tt>SetupManager</tt> instance so that the * buttons can make callbacks */ SetupButtons(SetupManager manager) { setLayout(CARD_LAYOUT); reconstruct(manager); } /** * (Re)creates the button panels. */ void reconstruct(SetupManager manager) { // create the button panels JPanel standardButtonPanel = new SetupButtonPanel(); JPanel finishButtonPanel = new SetupButtonPanel(); JPanel cancelButtonPanel = new SetupButtonPanel(); JPanel nextButtonPanel = new SetupButtonPanel(); // create the standard button panel JButton backButton = new BackButton(manager); JButton nextButton = new NextButton(manager); JButton cancelButton = new CancelButton(manager); standardButtonPanel.add(Box.createHorizontalGlue()); standardButtonPanel.add(backButton); standardButtonPanel.add(Box.createHorizontalStrut(BUTTON_SEP)); standardButtonPanel.add(nextButton); standardButtonPanel.add(Box.createHorizontalStrut(12)); standardButtonPanel.add(cancelButton); // create the next button panel JButton nextButton1 = new NextButton(manager); JButton cancelButton1 = new CancelButton(manager); nextButtonPanel.add(Box.createHorizontalGlue()); nextButtonPanel.add(nextButton1); nextButtonPanel.add(Box.createHorizontalStrut(12)); nextButtonPanel.add(cancelButton1); // create the finish button panel JButton finishButton = new FinishButton(manager); finishButtonPanel.add(Box.createHorizontalGlue()); finishButtonPanel.add(finishButton); // create the cancel button panel JButton cancelButton2 = new CancelButton(manager); cancelButtonPanel.add(Box.createHorizontalGlue()); cancelButtonPanel.add(cancelButton2); removeAll(); // add the different button options to the card layout add(standardButtonPanel, STANDARD_BUTTON_TITLE); add(finishButtonPanel, FINISH_BUTTON_TITLE); add(cancelButtonPanel, CANCEL_BUTTON_TITLE); add(nextButtonPanel, NEXT_BUTTON_TITLE); } /** * Switches the button panel displayed to be the button panel with * the standard button array */ void goToStandardButtons() { if(!_standardButtonsShown) { CARD_LAYOUT.show(this, STANDARD_BUTTON_TITLE); _standardButtonsShown = true; } } /** * Switches the button panel displayed to be the button panel with * only a finish button. */ void goToFinishButtons() { CARD_LAYOUT.show(this, FINISH_BUTTON_TITLE); _standardButtonsShown = false; } /** * Switches the button panel displayed to be the button panel with * only a cancel button. */ void goToCancelButtons() { CARD_LAYOUT.show(this, CANCEL_BUTTON_TITLE); _standardButtonsShown = false; } /** * Switches the button panel displayed to be the button panel with * only a 'next' and 'cancel' button. */ void goToNextButtons() { CARD_LAYOUT.show(this, NEXT_BUTTON_TITLE); _standardButtonsShown = false; } }