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, &amp;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