View Javadoc

1   /*
2    * Copyright 2006-2016 The JGUIraffe Team.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License")
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package net.sf.jguiraffe.examples.tutorial.viewset;
17  
18  import java.io.File;
19  
20  import net.sf.jguiraffe.examples.tutorial.model.DirectoryData;
21  import net.sf.jguiraffe.gui.app.ApplicationContext;
22  import net.sf.jguiraffe.gui.builder.action.FormAction;
23  import net.sf.jguiraffe.gui.builder.utils.MessageOutput;
24  import net.sf.jguiraffe.gui.cmd.CommandBase;
25  
26  /**
27   * <p>
28   * A command class for storing view settings for a given directory.
29   * </p>
30   * <p>
31   * A command of this type is executed when the user clicks <em>Save</em> in the
32   * dialog with view settings. The command class stores the current
33   * {@link ViewSettings} instance and triggers the <em>refresh</em> action.
34   * </p>
35   *
36   * @author Oliver Heger
37   * @version $Id: CreateViewSettingsCommand.java 205 2012-01-29 18:29:57Z oheger $
38   */
39  public class CreateViewSettingsCommand extends CommandBase
40  {
41      /** Constant for the resource ID of the title for the error message. */
42      private static final String RES_ERR_TITLE = "viewset_errmsg_tit";
43  
44      /** Constant for the resource ID of the text for the error message. */
45      private static final String RES_ERR_TEXT = "viewset_errmsg_txt";
46  
47      /** Stores the directory of the view settings file. */
48      private final File targetDirectory;
49  
50      /** The application context. */
51      private final ApplicationContext appContext;
52  
53      /** The data object containing the view settings to be saved. */
54      private final ViewSettings viewSettings;
55  
56      /** The refresh action. */
57      private final FormAction refreshAction;
58  
59      public CreateViewSettingsCommand(ApplicationContext appctx,
60              ViewSettings vs, FormAction actRefresh)
61      {
62          super(true);
63          appContext = appctx;
64          DirectoryData dd = appctx.getTypedProperty(DirectoryData.class);
65          assert dd != null : "No current directory!";
66          targetDirectory = dd.getDirectory();
67          viewSettings = vs;
68          refreshAction = actRefresh;
69      }
70  
71      /**
72       * Executes this command. Stores the current {@code ViewSettings} object in
73       * the associated directory.
74       *
75       * @throws Exception if an error occurs
76       */
77      @Override
78      public void execute() throws Exception
79      {
80          viewSettings.save(targetDirectory);
81      }
82  
83      /**
84       * Updates the UI after a successful execution of this command. This
85       * implementation invokes the refresh action, so that the new view settings
86       * become active. If an error occurred, a message box is displayed.
87       */
88      @Override
89      protected void performGUIUpdate()
90      {
91          if (getException() != null)
92          {
93              getLog().error("Could not create file", getException());
94              appContext.messageBox(RES_ERR_TEXT, RES_ERR_TITLE,
95                      MessageOutput.MESSAGE_ERROR, MessageOutput.BTN_OK);
96          }
97          else
98          {
99              refreshAction.execute(null);
100         }
101     }
102 }