File Source: SwingFirstRunWizard.java
/*
P/P * Method: com.dmdirc.addons.ui_swing.wizard.firstrun.SwingFirstRunWizard__static_init
*/
1 /*
2 * Copyright (c) 2006-2009 Chris Smith, Shane Mc Cormack, Gregory Holmes
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20 * SOFTWARE.
21 */
22
23 package com.dmdirc.addons.ui_swing.wizard.firstrun;
24
25 import com.dmdirc.Main;
26 import com.dmdirc.actions.ActionManager;
27 import com.dmdirc.actions.CoreActionType;
28 import com.dmdirc.actions.interfaces.ActionType;
29 import com.dmdirc.addons.ui_swing.MainFrame;
30 import com.dmdirc.config.IdentityManager;
31 import com.dmdirc.interfaces.ActionListener;
32 import com.dmdirc.logger.ErrorLevel;
33 import com.dmdirc.logger.Logger;
34 import com.dmdirc.ui.interfaces.FirstRunWizard;
35 import com.dmdirc.addons.ui_swing.dialogs.profiles.ProfileManagerDialog;
36 import com.dmdirc.addons.ui_swing.wizard.Step;
37 import com.dmdirc.addons.ui_swing.wizard.WizardDialog;
38 import com.dmdirc.addons.ui_swing.wizard.WizardListener;
39 import com.dmdirc.ui.IconManager;
40 import com.dmdirc.util.resourcemanager.ResourceManager;
41
42 import java.awt.Dimension;
43 import java.io.File;
44 import java.io.IOException;
45 import java.util.ArrayList;
46 import java.util.Map;
47 import java.util.Map.Entry;
48
49 /** First run wizard, used to initially setup the client for the user. */
50 public final class SwingFirstRunWizard implements WizardListener,
51 FirstRunWizard {
52
53 /** Wizard dialog. */
54 private WizardDialog wizardDialog;
55 /** First run or update. */
56 private boolean firstRun = true;
57
58 /** Instatiate the wizard. */
59 public SwingFirstRunWizard() {
/*
P/P * Method: void com.dmdirc.addons.ui_swing.wizard.firstrun.SwingFirstRunWizard()
*
* Postconditions:
* java.lang.StringBuilder:toString(...)._tainted == 0
* this.firstRun == 1
* new ArrayList(StepLayout#1) num objects == 1
* new JButton(initComponents#5) num objects == 1
* new JButton(initComponents#6) num objects == 1
* new JLabel(initComponents#4) num objects == 1
* new JPanel(initComponents#3) num objects == 1
* new ListenerList(WizardPanel#1) num objects == 1
* new StepLayout(WizardPanel#2) num objects == 1
* new TitlePanel(initComponents#1) num objects == 1
* ...
*/
60 this(true);
61 }
62
63 /**
64 * Instantiate the wizard.
65 *
66 * @param firstRun is this the first run or an update?
67 */
/*
P/P * Method: void com.dmdirc.addons.ui_swing.wizard.firstrun.SwingFirstRunWizard(bool)
*
* Presumptions:
* com.dmdirc.ui.IconManager:getIconManager(...)@74 != null
*
* Postconditions:
* java.lang.StringBuilder:toString(...)._tainted == 0
* this.firstRun == firstRun
* init'ed(this.firstRun)
* this.wizardDialog == &new WizardDialog(SwingFirstRunWizard#1)
* new ArrayList(StepLayout#1) num objects == 1
* new JButton(initComponents#5) num objects == 1
* new JButton(initComponents#6) num objects == 1
* new JLabel(initComponents#4) num objects == 1
* new JPanel(initComponents#3) num objects == 1
* new ListenerList(WizardPanel#1) num objects == 1
* ...
*/
68 public SwingFirstRunWizard(final boolean firstRun) {
69 this.firstRun = firstRun;
70
71 wizardDialog =
72 new WizardDialog("DMDirc: " + (firstRun ? "Setup wizard" :
73 "Migration wizard"), new ArrayList<Step>(), this, null);
74 wizardDialog.setIconImage(IconManager.getIconManager().getImage("icon"));
75 wizardDialog.addWizardListener(this);
76 wizardDialog.setMinimumSize(new Dimension(400, 400));
77 }
78
79 /** {@inheritDoc} */
80 @Override
81 public void wizardFinished() {
/*
P/P * Method: void wizardFinished()
*
* Preconditions:
* (soft) init'ed(com.dmdirc.config.ConfigManager$1__static_init.new int[](ConfigManager$1__static_init#1)[...])
* (soft) com/dmdirc/config/IdentityManager.config != null
* (soft) com/dmdirc/config/IdentityManager.config.file != null
* (soft) com/dmdirc/config/IdentityManager.config.listeners != null
* (soft) com/dmdirc/config/IdentityManager.config.myTarget != null
* (soft) init'ed(com/dmdirc/config/IdentityManager.config.myTarget.type)
* (soft) init'ed(com/dmdirc/config/IdentityManager.config.globalConfig)
* (soft) init'ed(this.firstRun)
* (soft) this.wizardDialog != null
* (soft) this.wizardDialog.wizard != null
* ...
*
* Presumptions:
* init'ed(com.dmdirc.actions.CoreActionType.CLIENT_OPENED)
* getStep(...).actions != null
* getStep(...).plugins != null
* getStep(...).profile != null
* getStep(...).updates != null
* ...
*
* Postconditions:
* com/dmdirc/config/IdentityManager.config.globalConfig == One-of{old com/dmdirc/config/IdentityManager.config.globalConfig, &new ConfigManager(setOption#2*)}
* init'ed(com/dmdirc/config/IdentityManager.config.globalConfig)
* possibly_updated(com/dmdirc/config/IdentityManager.config.needSave)
* java.lang.StringBuilder:toString(...)._tainted == 0
* new ArrayList(getSources#1) num objects <= 1
* new ConfigManager(setOption#2*) num objects <= 1
* init'ed(new ConfigManager(setOption#2*).channel)
* init'ed(new ConfigManager(setOption#2*).ircd)
* init'ed(new ConfigManager(setOption#2*).listeners)
* init'ed(new ConfigManager(setOption#2*).network)
* ...
*
* Test Vectors:
* this.firstRun: {0}, {1}
* com.dmdirc.util.resourcemanager.ResourceManager:getResourceManager(...)@82: Inverse{null}, Addr_Set{null}
* javax.swing.JCheckBox:isSelected(...)@63: {0}, {1}
* javax.swing.JCheckBox:isSelected(...)@70: {0}, {1}
* javax.swing.JCheckBox:isSelected(...)@72: {0}, {1}
*/
82 if (ResourceManager.getResourceManager() == null) {
83 return;
84 }
85 if (((ExtractionStep) wizardDialog.getStep(0)).getPluginsState()) {
86 extractPlugins();
87 }
88 if (((ExtractionStep) wizardDialog.getStep(0)).getActionsState()) {
89 extractActions();
90 }
91
92 if (firstRun) {
93 IdentityManager.getConfigIdentity().setOption("updater", "enable",
94 ((CommunicationStep) wizardDialog.getStep(1)).checkUpdates());
95 }
96
97 if (firstRun) {
98 IdentityManager.getConfigIdentity().setOption("general", "submitErrors",
99 ((CommunicationStep) wizardDialog.getStep(1)).checkErrors());
100 }
101
102 if (firstRun &&
103 ((ProfileStep) wizardDialog.getStep(2)).getProfileManagerState()) {
/*
P/P * Method: void com.dmdirc.addons.ui_swing.wizard.firstrun.SwingFirstRunWizard$1(SwingFirstRunWizard)
*/
104 ActionManager.addListener(new ActionListener() {
105 /** {@inheritDoc} */
106 @Override
107 public void processEvent(final ActionType type,
108 final StringBuffer format, final Object... arguments) {
/*
P/P * Method: void processEvent(ActionType, StringBuffer, Object[])
*
* Presumptions:
* com.dmdirc.Main:getUI(...)@109 != null
*/
109 ProfileManagerDialog.showProfileManagerDialog((MainFrame) Main.getUI().getMainWindow());
110 }
111 }, CoreActionType.CLIENT_OPENED);
112
113 }
114 wizardDialog.dispose();
115 }
116
117 /** {@inheritDoc} */
118 @Override
119 public void wizardCancelled() {
/*
P/P * Method: void wizardCancelled()
*
* Preconditions:
* this.wizardDialog != null
*/
120 wizardDialog.dispose();
121 }
122
123 /** {@inheritDoc} */
124 @Override
125 public void extractPlugins() {
/*
P/P * Method: void extractPlugins()
*/
126 extractCorePlugins();
127 }
128
129 /** Extracts the core plugins. */
130 public static void extractCorePlugins() {
131 //Copy actions
/*
P/P * Method: void extractCorePlugins()
*
* Presumptions:
* init'ed(com.dmdirc.logger.ErrorLevel.LOW)
* com.dmdirc.util.resourcemanager.ResourceManager:getResourceManager(...)@132 != null
* com.dmdirc.util.resourcemanager.ResourceManager:getResourceManager(...)@155 != null
* com.dmdirc.util.resourcemanager.ResourceManager:getResourcesStartingWithAsBytes(...)@132 != null
* java.lang.String:lastIndexOf(...)@149 <= 232-2
* ...
*
* Test Vectors:
* java.io.File:exists(...)@145: {1}, {0}
* java.io.File:isDirectory(...)@154: {1}, {0}
* java.util.Iterator:hasNext(...)@135: {0}, {1}
*/
132 final Map<String, byte[]> resources =
133 ResourceManager.getResourceManager().
134 getResourcesStartingWithAsBytes("plugins");
135 for (Entry<String, byte[]> resource : resources.entrySet()) {
136 try {
137 final String resourceName =
138 Main.getConfigDir() + "plugins" +
139 resource.getKey().
140 substring(7, resource.getKey().length());
141 final File newDir =
142 new File(resourceName.substring(0,
143 resourceName.lastIndexOf('/')) + "/");
144
145 if (!newDir.exists()) {
146 newDir.mkdirs();
147 }
148
149 final File newFile =
150 new File(newDir,
151 resourceName.substring(resourceName.lastIndexOf('/') + 1,
152 resourceName.length()));
153
154 if (!newFile.isDirectory()) {
155 ResourceManager.getResourceManager().
156 resourceToFile(resource.getValue(), newFile);
157 }
158 } catch (IOException ex) {
159 Logger.userError(ErrorLevel.LOW, "Failed to extract plugins");
160 }
161 }
162 }
163
164 /** {@inheritDoc} */
165 @Override
166 public void extractActions() {
/*
P/P * Method: void extractActions()
*/
167 extractCoreActions();
168 }
169
170 /** Extracts the core actions. */
171 public static void extractCoreActions() {
172 //Copy actions
/*
P/P * Method: void extractCoreActions()
*
* Presumptions:
* init'ed(com.dmdirc.logger.ErrorLevel.LOW)
* com.dmdirc.util.resourcemanager.ResourceManager:getResourceManager(...)@173 != null
* com.dmdirc.util.resourcemanager.ResourceManager:getResourceManager(...)@196 != null
* com.dmdirc.util.resourcemanager.ResourceManager:getResourcesStartingWithAsBytes(...)@173 != null
* java.lang.String:lastIndexOf(...)@190 <= 232-2
* ...
*
* Test Vectors:
* java.io.File:exists(...)@186: {1}, {0}
* java.io.File:isDirectory(...)@195: {1}, {0}
* java.util.Iterator:hasNext(...)@176: {0}, {1}
*/
173 final Map<String, byte[]> resources =
174 ResourceManager.getResourceManager().
175 getResourcesStartingWithAsBytes("com/dmdirc/actions/defaults");
176 for (Entry<String, byte[]> resource : resources.entrySet()) {
177 try {
178 final String resourceName =
179 Main.getConfigDir() + "actions" +
180 resource.getKey().
181 substring(27, resource.getKey().length());
182 final File newDir =
183 new File(resourceName.substring(0,
184 resourceName.lastIndexOf('/')) + "/");
185
186 if (!newDir.exists()) {
187 newDir.mkdirs();
188 }
189
190 final File newFile =
191 new File(newDir,
192 resourceName.substring(resourceName.lastIndexOf('/') + 1,
193 resourceName.length()));
194
195 if (!newFile.isDirectory()) {
196 ResourceManager.getResourceManager().
197 resourceToFile(resource.getValue(), newFile);
198 }
199 } catch (IOException ex) {
200 Logger.userError(ErrorLevel.LOW, "Failed to extract actions");
201 }
202 }
203 }
204
205 /** {@inheritDoc} */
206 @Override
207 public void display() {
/*
P/P * Method: void display()
*
* Preconditions:
* init'ed(this.firstRun)
* this.wizardDialog != null
* init'ed(this.wizardDialog.parentWindow)
* this.wizardDialog.wizard != null
* this.wizardDialog.wizard.steps != null
* this.wizardDialog.wizard.steps.steps != null
* this.wizardDialog.wizard.stepsPanel != null
* (soft) this.wizardDialog.wizard.next != null
* (soft) this.wizardDialog.wizard.prev != null
* (soft) this.wizardDialog.wizard.progressLabel != null
* ...
*
* Postconditions:
* this.wizardDialog.wizard.currentStep == One-of{old this.wizardDialog.wizard.currentStep, 0}
* possibly_updated(this.wizardDialog.wizard.steps.currentStep)
*
* Test Vectors:
* this.firstRun: {0}, {1}
*/
208 if (firstRun) {
209 wizardDialog.addStep(new FirstRunExtractionStep());
210 wizardDialog.addStep(new CommunicationStep());
211 wizardDialog.addStep(new ProfileStep());
212 } else {
213 wizardDialog.addStep(new MigrationExtrationStep());
214 }
215 wizardDialog.display();
216 }
217
218 /**
219 * Returns the dialog associated with this wizard.
220 *
221 * @return Associated wizard dialog
222 */
223 public WizardDialog getWizardDialog() {
/*
P/P * Method: WizardDialog getWizardDialog()
*
* Preconditions:
* init'ed(this.wizardDialog)
*
* Postconditions:
* return_value == this.wizardDialog
* init'ed(return_value)
*/
224 return wizardDialog;
225 }
226 }
SofCheck Inspector Build Version : 2.17854
| SwingFirstRunWizard.java |
2009-Jun-25 01:54:24 |
| SwingFirstRunWizard.class |
2009-Sep-02 17:04:16 |
| SwingFirstRunWizard$1.class |
2009-Sep-02 17:04:16 |