package jwizardcomponent.example;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.ButtonGroup;
import jwizardcomponent.Utilities;
import jwizardcomponent.JWizardPanel;
import jwizardcomponent.JWizardComponents;
import jwizardcomponent.frame.JWizardFrame;
/**
* Title: JWizardComponent
* Description: Swing-Based Wizard Framework for Wizards
* Copyright (C) 2003 William Ready
*
*
This library is free software; you can redistribute it and/or
*
modify it under the terms of the GNU Lesser General Public
*
License as published by the Free Software Foundation; either
*
version 2.1 of the License, or (at your option) any later version.
*
*
This library is distributed in the hope that it will be useful,
*
but WITHOUT ANY WARRANTY; without even the implied warranty of
*
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
See the GNU Lesser General Public License for more details.
*
*
To receive a copy of the GNU Lesser General Public License
*
write to: The Free Software Foundation, Inc.,
*
59 Temple Place, Suite 330
*
Boston, MA 02111-1307 USA
* @author Piotr Kaminski
* @version 1.0
*/
public class DynamicJWizard extends JWizardFrame {
public static final int PANEL_FIRST = 0;
public static final int PANEL_CHOOSER = 1;
public static final int PANEL_OPTION_A = 2;
public static final int PANEL_OPTION_B = 3;
public static final int PANEL_LAST = 4;
public DynamicJWizard() {
super();
init();
}
private void init() {
this.setTitle("Dynamic JWizardComponent example");
JWizardPanel panel = null;
panel = new FirstWizardPanel(getWizardComponents());
getWizardComponents().addWizardPanel(PANEL_FIRST, panel);
panel = new ChooserWizardPanel(getWizardComponents());
getWizardComponents().addWizardPanel(PANEL_CHOOSER, panel);
panel = new OptionWizardPanel(getWizardComponents(), "A");
getWizardComponents().addWizardPanel(PANEL_OPTION_A, panel);
panel = new OptionWizardPanel(getWizardComponents(), "B");
getWizardComponents().addWizardPanel(PANEL_OPTION_B, panel);
panel = new LastWizardPanel(getWizardComponents());
getWizardComponents().addWizardPanel(PANEL_LAST, panel);
setSize(500, 300);
Utilities.centerComponentOnScreen(this);
}
public static void main(String [] args) {
DynamicJWizard wizard = new DynamicJWizard();
wizard.setVisible(true);
}
}
class LabelWizardPanel extends JWizardPanel {
public LabelWizardPanel(JWizardComponents wizardComponents, String label) {
super(wizardComponents);
this.setLayout(new GridBagLayout());
this.add(new JLabel(label)
, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
, GridBagConstraints.CENTER, GridBagConstraints.BOTH
, new Insets(0, 0, 0, 0), 0, 0));
}
}
class FirstWizardPanel extends LabelWizardPanel {
public FirstWizardPanel(JWizardComponents wizardComponents) {
super(wizardComponents, "First panel");
setPanelTitle("First simple static panel");
}
}
class ChooserWizardPanel extends JWizardPanel {
private JRadioButton optionARadioButton;
private JRadioButton optionBRadioButton;
private JRadioButton optionFRadioButton;
private ButtonGroup bg;
private char selectedOption = 'N'; // 'N' is no option selected
// 'A', 'B' & 'F' stands for options
public ChooserWizardPanel(JWizardComponents wizardComponents) {
super(wizardComponents, "Choose option A or B or F for finish ");
init();
}
private void init() {
optionARadioButton = new JRadioButton();
optionBRadioButton = new JRadioButton();
optionFRadioButton = new JRadioButton();
ButtonGroup bg = new ButtonGroup();
bg.add(optionARadioButton);
bg.add(optionBRadioButton);
bg.add(optionFRadioButton);
this.setLayout(new GridBagLayout());
this.add(optionARadioButton
, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
, GridBagConstraints.WEST, GridBagConstraints.BOTH
, new Insets(0, 0, 0, 0), 0, 0));
optionARadioButton.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
selectedOption = 'A';
update();
}
}
});
this.add(new JLabel("Choose option A")
, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0
, GridBagConstraints.WEST, GridBagConstraints.BOTH
, new Insets(0, 0, 0, 0), 0, 0));
this.add(optionBRadioButton,
new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0
, GridBagConstraints.WEST, GridBagConstraints.BOTH
, new Insets(0, 0, 0, 0), 0, 0));
optionBRadioButton.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
selectedOption = 'B';
update();
}
}
});
this.add(new JLabel("Choose option B")
, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0
, GridBagConstraints.WEST, GridBagConstraints.BOTH
, new Insets(0, 0, 0, 0), 0, 0));
this.add(optionFRadioButton,
new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0
, GridBagConstraints.WEST, GridBagConstraints.BOTH
, new Insets(0, 0, 0, 0), 0, 0));
optionFRadioButton.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
selectedOption = 'F';
update();
}
}
});
this.add(new JLabel("Choose option F")
, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0
, GridBagConstraints.WEST, GridBagConstraints.BOTH
, new Insets(0, 0, 0, 0), 0, 0));
}
public void update() {
setNextButtonEnabled((selectedOption == 'A') || (selectedOption == 'B') );
setFinishButtonEnabled(selectedOption == 'F');
setBackButtonEnabled(false); // there is no way back
}
public void next() {
if (selectedOption == 'A') {
switchPanel(DynamicJWizard.PANEL_OPTION_A);
} else if (selectedOption == 'B') {
switchPanel(DynamicJWizard.PANEL_OPTION_B);
}
}
public void back() {
}
}
class OptionWizardPanel extends LabelWizardPanel {
public OptionWizardPanel(JWizardComponents wizardComponents, String option) {
super(wizardComponents, "Option " + option + " was choosed");
setPanelTitle("Option " + option + " panel");
}
public void next() {
switchPanel(DynamicJWizard.PANEL_LAST);
}
public void back() {
switchPanel(DynamicJWizard.PANEL_CHOOSER);
}
}
class LastWizardPanel extends LabelWizardPanel {
public LastWizardPanel(JWizardComponents wizardComponents) {
super(wizardComponents, "Last panel, you can finish now");
setPanelTitle("Last simple static panel");
}
}
JWizardComponent.zip( 37 k)