| /* |
| * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved. |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| * |
| * This code is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 only, as |
| * published by the Free Software Foundation. |
| * |
| * This code 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 General Public License |
| * version 2 for more details (a copy is included in the LICENSE file that |
| * accompanied this code). |
| * |
| * You should have received a copy of the GNU General Public License version |
| * 2 along with this work; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| * or visit www.oracle.com if you need additional information or have any |
| * questions. |
| * |
| */ |
| |
| |
| package com.sun.java.swing.ui; |
| |
| import com.sun.java.swing.action.*; |
| import java.awt.*; |
| import java.awt.event.ActionEvent; |
| import java.awt.event.ActionListener; |
| import java.util.Vector; |
| import javax.swing.*; |
| |
| // Referenced classes of package com.sun.java.swing.ui: |
| // CommonUI |
| |
| public class WizardDlg extends JDialog |
| { |
| private class CancelListener |
| implements ActionListener |
| { |
| |
| public void actionPerformed(ActionEvent evt) |
| { |
| if(cancelListener != null) |
| cancelListener.actionPerformed(evt); |
| setVisible(false); |
| } |
| |
| private CancelListener() |
| { |
| } |
| |
| } |
| |
| private class FinishListener |
| implements ActionListener |
| { |
| |
| public void actionPerformed(ActionEvent evt) |
| { |
| if(finishListener != null) |
| finishListener.actionPerformed(evt); |
| setVisible(false); |
| } |
| |
| private FinishListener() |
| { |
| } |
| |
| } |
| |
| private class NextListener |
| implements ActionListener |
| { |
| |
| public void actionPerformed(ActionEvent evt) |
| { |
| cardShowing++; |
| if(cardShowing > numCards) |
| cardShowing = numCards; |
| else |
| panesLayout.next(panesPanel); |
| if(nextListener != null) |
| nextListener.actionPerformed(evt); |
| enableBackNextButtons(); |
| } |
| |
| private NextListener() |
| { |
| } |
| |
| } |
| |
| private class BackListener |
| implements ActionListener |
| { |
| |
| public void actionPerformed(ActionEvent evt) |
| { |
| cardShowing--; |
| if(cardShowing < 1) |
| cardShowing = 1; |
| else |
| panesLayout.previous(panesPanel); |
| if(backListener != null) |
| backListener.actionPerformed(evt); |
| enableBackNextButtons(); |
| } |
| |
| private BackListener() |
| { |
| } |
| |
| } |
| |
| |
| public WizardDlg(JFrame frame, String title, Vector panels, Vector images) |
| { |
| super(frame, title, true); |
| this.title = title; |
| this.images = images; |
| Container pane = getContentPane(); |
| pane.setLayout(new BorderLayout()); |
| panesLayout = new CardLayout(); |
| panesPanel = new JPanel(panesLayout); |
| pane.add(panesPanel, "Center"); |
| pane.add(createButtonPanel(), "South"); |
| setPanels(panels); |
| pack(); |
| CommonUI.centerComponent(this); |
| } |
| |
| public WizardDlg(JFrame frame, String title, Vector panels) |
| { |
| this(frame, title, panels, null); |
| } |
| |
| public WizardDlg(String title, Vector panels) |
| { |
| this(new JFrame(), title, panels, null); |
| } |
| |
| public void setPanels(Vector panels) |
| { |
| numCards = panels.size(); |
| cardShowing = 1; |
| this.panels = panels; |
| panesPanel.removeAll(); |
| for(int i = 0; i < numCards; i++) |
| panesPanel.add((JPanel)panels.elementAt(i), (new Integer(i)).toString()); |
| |
| validate(); |
| enableBackNextButtons(); |
| } |
| |
| public void reset() |
| { |
| cardShowing = 1; |
| panesLayout.first(panesPanel); |
| enableBackNextButtons(); |
| } |
| |
| public void setWestPanel(JPanel panel) |
| { |
| Container pane = getContentPane(); |
| pane.add(panel, "West"); |
| } |
| |
| public static void main(String args[]) |
| { |
| JPanel p1 = new JPanel(); |
| p1.add(new JButton("One")); |
| JPanel p2 = new JPanel(); |
| p2.add(new JButton("Two")); |
| JPanel p3 = new JPanel(); |
| p3.add(new JButton("Three")); |
| JPanel p4 = new JPanel(); |
| p4.add(new JButton("Four")); |
| Vector panels = new Vector(); |
| panels.addElement(p1); |
| panels.addElement(p2); |
| panels.addElement(p3); |
| panels.addElement(p4); |
| wizardDlg = new WizardDlg("Test Dialog", panels); |
| wizardDlg.addFinishListener(new ActionListener() { |
| |
| public void actionPerformed(ActionEvent evt) |
| { |
| System.exit(0); |
| } |
| |
| } |
| ); |
| wizardDlg.addCancelListener(new ActionListener() { |
| |
| public void actionPerformed(ActionEvent evt) |
| { |
| System.exit(0); |
| } |
| |
| } |
| ); |
| wizardDlg.setVisible(true); |
| } |
| |
| private JPanel createButtonPanel() |
| { |
| JPanel panel = new JPanel(); |
| backAction = new BackAction(); |
| nextAction = new NextAction(); |
| finishAction = new FinishAction(); |
| cancelAction = new CancelAction(); |
| backAction.setEnabled(false); |
| finishAction.setEnabled(false); |
| backAction.addActionListener(new BackListener()); |
| nextAction.addActionListener(new NextListener()); |
| finishAction.addActionListener(new FinishListener()); |
| cancelAction.addActionListener(new CancelListener()); |
| panel.add(CommonUI.createButton(backAction)); |
| panel.add(CommonUI.createButton(nextAction)); |
| panel.add(CommonUI.createButton(finishAction)); |
| panel.add(CommonUI.createButton(cancelAction)); |
| JPanel p2 = new JPanel(new BorderLayout()); |
| p2.add(panel, "Center"); |
| p2.add(new JSeparator(), "North"); |
| return p2; |
| } |
| |
| private void enableBackNextButtons() |
| { |
| if(cardShowing == 1) |
| { |
| backAction.setEnabled(false); |
| finishAction.setEnabled(false); |
| if(numCards > 1) |
| { |
| nextAction.setEnabled(true); |
| } else |
| { |
| finishAction.setEnabled(true); |
| nextAction.setEnabled(false); |
| } |
| } else |
| if(cardShowing == numCards) |
| { |
| nextAction.setEnabled(false); |
| finishAction.setEnabled(true); |
| if(numCards > 1) |
| backAction.setEnabled(true); |
| else |
| backAction.setEnabled(false); |
| } else |
| { |
| backAction.setEnabled(true); |
| nextAction.setEnabled(true); |
| finishAction.setEnabled(false); |
| } |
| setTitle(); |
| } |
| |
| private void setTitle() |
| { |
| JPanel panel = (JPanel)panels.elementAt(cardShowing - 1); |
| String newTitle = title; |
| String panelTitle = panel.getName(); |
| if(panelTitle != null && panelTitle.equals("")) |
| { |
| newTitle = newTitle + " - "; |
| newTitle = newTitle + panelTitle; |
| } |
| super.setTitle(newTitle); |
| } |
| |
| public synchronized void addFinishListener(ActionListener l) |
| { |
| finishListener = AWTEventMulticaster.add(finishListener, l); |
| } |
| |
| public synchronized void removeFinishListener(ActionListener l) |
| { |
| finishListener = AWTEventMulticaster.remove(finishListener, l); |
| } |
| |
| public synchronized void addCancelListener(ActionListener l) |
| { |
| cancelListener = AWTEventMulticaster.add(cancelListener, l); |
| } |
| |
| public synchronized void removeCancelListener(ActionListener l) |
| { |
| cancelListener = AWTEventMulticaster.remove(cancelListener, l); |
| } |
| |
| public synchronized void addNextListener(ActionListener l) |
| { |
| nextListener = AWTEventMulticaster.add(nextListener, l); |
| } |
| |
| public synchronized void removeNextListener(ActionListener l) |
| { |
| nextListener = AWTEventMulticaster.remove(nextListener, l); |
| } |
| |
| public synchronized void addBackListener(ActionListener l) |
| { |
| backListener = AWTEventMulticaster.add(backListener, l); |
| } |
| |
| public synchronized void removeBackListener(ActionListener l) |
| { |
| backListener = AWTEventMulticaster.remove(backListener, l); |
| } |
| |
| private CardLayout panesLayout; |
| private JPanel panesPanel; |
| private DelegateAction backAction; |
| private DelegateAction nextAction; |
| private DelegateAction finishAction; |
| private DelegateAction cancelAction; |
| private ActionListener finishListener; |
| private ActionListener cancelListener; |
| private ActionListener nextListener; |
| private ActionListener backListener; |
| private int numCards; |
| private int cardShowing; |
| private String title; |
| private Vector panels; |
| private Vector images; |
| private static WizardDlg wizardDlg; |
| |
| |
| |
| |
| } |