%line | %branch | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
com.nexes.wizard.WizardController |
|
|
1 | package com.nexes.wizard; |
|
2 | ||
3 | import java.awt.event.ActionListener; |
|
4 | ||
5 | /** |
|
6 | * This class is responsible for reacting to events generated by pushing any of the |
|
7 | * three buttons, 'Next', 'Previous', and 'Cancel.' Based on what button is pressed, |
|
8 | * the controller will update the model to show a new panel and reset the state of |
|
9 | * the buttons as necessary. |
|
10 | */ |
|
11 | public class WizardController implements ActionListener { |
|
12 | ||
13 | private Wizard wizard; |
|
14 | ||
15 | /** |
|
16 | * This constructor accepts a reference to the Wizard component that created it, |
|
17 | * which it uses to update the button components and access the WizardModel. |
|
18 | * @param w A callback to the Wizard component that created this controller. |
|
19 | */ |
|
20 | 0 | public WizardController(Wizard w) { |
21 | 0 | wizard = w; |
22 | 0 | } |
23 | ||
24 | /** |
|
25 | * Calling method for the action listener interface. This class listens for actions |
|
26 | * performed by the buttons in the Wizard class, and calls methods below to determine |
|
27 | * the correct course of action. |
|
28 | * @param evt The ActionEvent that occurred. |
|
29 | */ |
|
30 | public void actionPerformed(java.awt.event.ActionEvent evt) { |
|
31 | ||
32 | 0 | if (evt.getActionCommand().equals(Wizard.CANCEL_BUTTON_ACTION_COMMAND)) |
33 | 0 | cancelButtonPressed(); |
34 | 0 | else if (evt.getActionCommand().equals(Wizard.BACK_BUTTON_ACTION_COMMAND)) |
35 | 0 | backButtonPressed(); |
36 | 0 | else if (evt.getActionCommand().equals(Wizard.NEXT_BUTTON_ACTION_COMMAND)) |
37 | 0 | nextButtonPressed(); |
38 | ||
39 | 0 | } |
40 | ||
41 | ||
42 | ||
43 | private void cancelButtonPressed() { |
|
44 | ||
45 | 0 | wizard.close(Wizard.CANCEL_RETURN_CODE); |
46 | 0 | } |
47 | ||
48 | private void nextButtonPressed() { |
|
49 | ||
50 | 0 | WizardModel model = wizard.getModel(); |
51 | 0 | WizardPanelDescriptor descriptor = model.getCurrentPanelDescriptor(); |
52 | ||
53 | // If it is a finishable panel, close down the dialog. Otherwise, |
|
54 | // get the ID that the current panel identifies as the next panel, |
|
55 | // and display it. |
|
56 | ||
57 | 0 | Object nextPanelDescriptor = descriptor.getNextPanelDescriptor(); |
58 | ||
59 | 0 | if (nextPanelDescriptor instanceof WizardPanelDescriptor.FinishIdentclass="keyword">ifier) { |
60 | 0 | wizard.close(Wizard.FINISH_RETURN_CODE); |
61 | 0 | } else { |
62 | 0 | wizard.setCurrentPanel(nextPanelDescriptor); |
63 | } |
|
64 | ||
65 | 0 | } |
66 | ||
67 | private void backButtonPressed() { |
|
68 | ||
69 | 0 | WizardModel model = wizard.getModel(); |
70 | 0 | WizardPanelDescriptor descriptor = model.getCurrentPanelDescriptor(); |
71 | ||
72 | // Get the descriptor that the current panel identifies as the previous |
|
73 | // panel, and display it. |
|
74 | ||
75 | 0 | Object backPanelDescriptor = descriptor.getBackPanelDescriptor(); |
76 | 0 | wizard.setCurrentPanel(backPanelDescriptor); |
77 | ||
78 | 0 | } |
79 | ||
80 | ||
81 | void resetButtonsToPanelRules() { |
|
82 | ||
83 | // Reset the buttons to support the original panel rules, |
|
84 | // including whether the next or back buttons are enabled or |
|
85 | // disabled, or if the panel is finishable. |
|
86 | ||
87 | 0 | WizardModel model = wizard.getModel(); |
88 | 0 | WizardPanelDescriptor descriptor = model.getCurrentPanelDescriptor(); |
89 | ||
90 | 0 | model.setCancelButtonText(Wizard.CANCEL_TEXT); |
91 | 0 | model.setCancelButtonIcon(Wizard.CANCEL_ICON); |
92 | ||
93 | // If the panel in question has another panel behind it, enable |
|
94 | // the back button. Otherwise, disable it. |
|
95 | ||
96 | 0 | model.setBackButtonText(Wizard.BACK_TEXT); |
97 | 0 | model.setBackButtonIcon(Wizard.BACK_ICON); |
98 | ||
99 | 0 | if (descriptor.getBackPanelDescriptor() != null) |
100 | 0 | model.setBackButtonEnabled(Boolean.TRUE); |
101 | else |
|
102 | 0 | model.setBackButtonEnabled(Boolean.FALSE); |
103 | ||
104 | // If the panel in question has one or more panels in front of it, |
|
105 | // enable the next button. Otherwise, disable it. |
|
106 | ||
107 | 0 | if (descriptor.getNextPanelDescriptor() != null) |
108 | 0 | model.setNextFinishButtonEnabled(Boolean.TRUE); |
109 | else |
|
110 | 0 | model.setNextFinishButtonEnabled(Boolean.FALSE); |
111 | ||
112 | // If the panel in question is the last panel in the series, change |
|
113 | // the Next button to Finish. Otherwise, set the text back to Next. |
|
114 | ||
115 | 0 | if (descriptor.getNextPanelDescriptor() instanceof WizardPanelDescriptor.FinishIdentclass="keyword">ifier) { |
116 | 0 | model.setNextFinishButtonText(Wizard.FINISH_TEXT); |
117 | 0 | model.setNextFinishButtonIcon(Wizard.FINISH_ICON); |
118 | 0 | } else { |
119 | 0 | model.setNextFinishButtonText(Wizard.NEXT_TEXT); |
120 | 0 | model.setNextFinishButtonIcon(Wizard.NEXT_ICON); |
121 | } |
|
122 | ||
123 | 0 | } |
124 | ||
125 | ||
126 | } |
This report is generated by jcoverage, Maven and Maven JCoverage Plugin. |