/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.axis2.tools.component; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.util.ArrayList; import java.util.List; /** * this is used for default wizard components */ public class DefaultWizardComponents implements WizardComponents { private JButton backButton; private JButton nextButton; private JButton finishButton; private JButton cancelButton; FinishAction finishAction; CancelAction cancelAction; List panelList; int currentIndex; JPanel wizardPanelsContainer; PropertyChangeSupport propertyChangeListeners; /** * This class is the "bread and butter" of this framework. All of these * components can be used visually however you want, as shown in the * frame and example packages, but all a developer really needs is this, * and they can even instead implement JWizard and choose to do this * portion any way they wish. */ public DefaultWizardComponents() { try { init(); } catch (Exception e) { e.printStackTrace(); } } public void addWizardPanel(WizardPanel panel) { getWizardPanelList().add(panel); wizardPanelsContainer.add(panel, getWizardPanelList().size() - 1 + ""); } public void addWizardPanel(int index, WizardPanel panel) { getWizardPanelList().add(index, panel); wizardPanelsContainer.add(panel, index + "", index); if (index < getWizardPanelList().size() - 1) { for (int i = index + 1; i < getWizardPanelList().size(); i++) { wizardPanelsContainer.add( (WizardPanel)getWizardPanelList().get(i), i + ""); } } } public void addWizardPanelAfter( WizardPanel panelToBePlacedAfter, WizardPanel panel) { addWizardPanel( getWizardPanelList().indexOf(panelToBePlacedAfter) + 1, panel); } public void addWizardPanelBefore( WizardPanel panelToBePlacedBefore, WizardPanel panel) { addWizardPanel( getWizardPanelList().indexOf(panelToBePlacedBefore) - 1, panel); } public void addWizardPanelAfterCurrent(WizardPanel panel) { addWizardPanel(getCurrentIndex()+1, panel); } public WizardPanel removeWizardPanel(WizardPanel panel) { int index = getWizardPanelList().indexOf(panel); getWizardPanelList().remove(panel); wizardPanelsContainer.remove(panel); for (int i = index; i < getWizardPanelList().size(); i++) { wizardPanelsContainer.add( (WizardPanel) getWizardPanelList().get(i), i + ""); } return panel; } public WizardPanel removeWizardPanel(int index) { wizardPanelsContainer.remove(index); WizardPanel panel = (WizardPanel) getWizardPanelList().remove(index); for (int i = index; i < getWizardPanelList().size(); i++) { wizardPanelsContainer.add( (WizardPanel) getWizardPanelList().get(i), i + ""); } return panel; } public WizardPanel removeWizardPanelAfter(WizardPanel panel) { return removeWizardPanel(getWizardPanelList().indexOf(panel) + 1); } public WizardPanel removeWizardPanelBefore(WizardPanel panel) { return removeWizardPanel(getWizardPanelList().indexOf(panel) - 1); } public WizardPanel getWizardPanel(int index) { return (WizardPanel) getWizardPanelList().get(index); } public int getIndexOfPanel(WizardPanel panel) { return getWizardPanelList().indexOf(panel); } public boolean onLastPanel() { return (getCurrentIndex() == getWizardPanelList().size() - 1); } private void init() throws Exception { this.propertyChangeListeners = new PropertyChangeSupport(this); backButton = new JButton(); nextButton = new JButton(); finishButton = new JButton(); cancelButton = new JButton(); panelList = new ArrayList(); currentIndex = 0; wizardPanelsContainer = new JPanel(); backButton.setText("< Back"); backButton.setMnemonic("B".charAt(0)); backButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { backButton_actionPerformed(e); } }); nextButton.setText("Next >"); nextButton.setMnemonic("N".charAt(0)); nextButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { nextButton_actionPerformed(e); } }); cancelButton.setText("Cancel"); cancelButton.setMnemonic("C".charAt(0)); cancelButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { cancelButton_actionPerformed(e); } }); finishButton.setText("Finish"); finishButton.setMnemonic("F".charAt(0)); finishButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { finishButton_actionPerformed(e); } }); wizardPanelsContainer.setLayout(new CardLayout()); } void cancelButton_actionPerformed(ActionEvent e) { getCancelAction().performAction(); } void finishButton_actionPerformed(ActionEvent e) { getFinishAction().performAction(); } void nextButton_actionPerformed(ActionEvent e) { try { if(getCurrentPanel().isPageComplete()){ getCurrentPanel().next(); } } catch (Exception ex) { ex.printStackTrace(); } } void backButton_actionPerformed(ActionEvent e) { try { getCurrentPanel().back(); } catch (Exception ex) { ex.printStackTrace(); } } public WizardPanel getCurrentPanel() throws Exception { if (getWizardPanelList().get(currentIndex) != null) { return (WizardPanel) getWizardPanelList().get(currentIndex); } else { throw new Exception("No panels in panelList"); } } public void updateComponents() { try { CardLayout cl = (CardLayout) (wizardPanelsContainer.getLayout()); cl.show(wizardPanelsContainer, currentIndex + ""); if (currentIndex == 0) { backButton.setEnabled(false); } else { backButton.setEnabled(true); } if (onLastPanel()) { nextButton.setEnabled(false); finishButton.setEnabled(true); } else { finishButton.setEnabled(false); nextButton.setEnabled(true); } // let panel to update itself getCurrentPanel().update(); // inform PropertyChangeListeners PropertyChangeEvent event = new PropertyChangeEvent(this, WizardComponents.CURRENT_PANEL_PROPERTY , null, getCurrentPanel()); propertyChangeListeners.firePropertyChange(event); } catch (Exception e) { e.printStackTrace(); } } // Getters and Setters from here on ... public List getWizardPanelList() { return this.panelList; } public void setWizardPanelList(ArrayList panelList) { this.panelList = panelList; } public FinishAction getFinishAction() { return finishAction; } public void setFinishAction(FinishAction aFinishAction) { finishAction = aFinishAction; } public CancelAction getCancelAction() { return cancelAction; } public void setCancelAction(CancelAction aCancelAction) { cancelAction = aCancelAction; } public int getCurrentIndex() { return currentIndex; } public void setCurrentIndex(int aCurrentIndex) { currentIndex = aCurrentIndex; } public JPanel getWizardPanelsContainer() { return wizardPanelsContainer; } public void setWizardPanelsContainer(JPanel aWizardPanelsContainer) { wizardPanelsContainer = aWizardPanelsContainer; } public JButton getBackButton() { return backButton; } public void setBackButton(JButton aBackButton) { backButton = aBackButton; } public JButton getNextButton() { return nextButton; } public void setNextButton(JButton aNextButton) { nextButton = aNextButton; } public JButton getCancelButton() { return cancelButton; } public void setCancelButton(JButton aCancelButton) { cancelButton = aCancelButton; } public JButton getFinishButton() { return finishButton; } public void setFinishButton(JButton button) { finishButton = button; } public void setWizardPanelList(List panelList) { this.panelList = panelList; } public void addPropertyChangeListener(PropertyChangeListener listener) { propertyChangeListeners.addPropertyChangeListener(listener); } public void removePropertyChangeListener(PropertyChangeListener listener) { propertyChangeListeners.removePropertyChangeListener(listener); } }