1  /**************************************************************
2   *
3   * Licensed to the Apache Software Foundation (ASF) under one
4   * or more contributor license agreements.  See the NOTICE file
5   * distributed with this work for additional information
6   * regarding copyright ownership.  The ASF licenses this file
7   * to you under the Apache License, Version 2.0 (the
8   * "License"); you may not use this file except in compliance
9   * with the License.  You may obtain a copy of the License at
10   *
11   *   http://www.apache.org/licenses/LICENSE-2.0
12   *
13   * Unless required by applicable law or agreed to in writing,
14   * software distributed under the License is distributed on an
15   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16   * KIND, either express or implied.  See the License for the
17   * specific language governing permissions and limitations
18   * under the License.
19   *
20   *************************************************************/
21  
22  
23  
24  package org.openoffice.setup.Controller;
25  
26  import org.openoffice.setup.InstallData;
27  import org.openoffice.setup.Installer.Installer;
28  import org.openoffice.setup.Installer.InstallerFactory;
29  import org.openoffice.setup.PanelController;
30  import org.openoffice.setup.Panel.Prologue;
31  import org.openoffice.setup.SetupData.PackageDescription;
32  import org.openoffice.setup.SetupData.SetupDataProvider;
33  import org.openoffice.setup.Util.Controller;
34  import org.openoffice.setup.Util.Dumper;
35  import org.openoffice.setup.Util.ModuleCtrl;
36  import org.openoffice.setup.Util.SystemManager;
37  
38  public class PrologueCtrl extends PanelController {
39  
40      private String helpFile;
41  
PrologueCtrl()42      public PrologueCtrl() {
43          super("Prologue", new Prologue());
44          helpFile = "String_Helpfile_Prologue";
45      }
46  
47      // public void beforeShow() {
duringShow()48      public void duringShow() {
49          getSetupFrame().setButtonEnabled(false, getSetupFrame().BUTTON_PREVIOUS);
50  
51          Thread t = new Thread() {
52              public void run() {
53                  InstallData installData = InstallData.getInstance();
54                  if ( ! installData.preInstallDone() ) {
55                      getSetupFrame().setButtonEnabled(false, getSetupFrame().BUTTON_NEXT);
56  
57                      Controller.checkPackagePathExistence(installData);
58                      Controller.checkPackageFormat(installData);
59  
60                      if (( installData.getOSType().equalsIgnoreCase("SunOS") ) && ( installData.isMultiLingual() )) {
61                          Controller.collectSystemLanguages(installData);
62                      }
63  
64                      PackageDescription packageData = SetupDataProvider.getPackageDescription();
65                      Installer installer = InstallerFactory.getInstance();
66                      installer.preInstall(packageData);
67  
68                      installData.setPreInstallDone(true);
69  
70                      if ( SystemManager.logModuleStates() ) {
71                          installData.setLogModuleStates(true);
72                      }
73  
74                      if ( installData.logModuleStates() ) {
75                          Dumper.logModuleStates(packageData, "Prologue Dialog");
76                      }
77  
78                      if (( installData.getOSType().equalsIgnoreCase("SunOS") ) && ( installData.isMultiLingual() )) {
79                          ModuleCtrl.checkLanguagesPackages(packageData, installData);
80  
81                          // int count = installData.getPreselectedLanguages();
82                          // System.err.println("Number of preselected language packages: " + count);
83  
84                          if ( installData.getPreselectedLanguages() == 0 ) {
85                              // Something mysterious happened. Setting all languages again.
86                              ModuleCtrl.setLanguagesPackages(packageData);
87                          }
88  
89                          if ( installData.logModuleStates() ) {
90                              Dumper.logModuleStates(packageData, "Prologue Dialog Language Selection");
91                          }
92                      }
93  
94                      if ( ! installData.isMultiLingual() ) {
95                          ModuleCtrl.setHiddenLanguageModuleDefaultSettings(packageData);
96  
97                          if ( installData.logModuleStates() ) {
98                              Dumper.logModuleStates(packageData, "after setHiddenLanguageModuleDefaultSettings");
99                          }
100                      }
101  
102                      if (( installData.isRootInstallation() ) && ( installData.getOSType().equalsIgnoreCase("SunOS") )) {
103                          // Check, if root has write access in /usr and /etc .
104                          // In sparse zones with imported directories this is not always the case.
105                          if ( Controller.reducedRootWritePrivileges() ) {
106                              ModuleCtrl.setIgnoreNonRelocatablePackages(packageData);
107                          }
108  
109                          if ( installData.logModuleStates() ) {
110                              Dumper.logModuleStates(packageData, "after setIgnoreNonRelocatablePackages");
111                          }
112                      }
113  
114                      if ( installData.isRootInstallation() ) {
115  
116                          // Setting installation directory!
117                          String dir = "/";
118                          installData.setInstallDir(dir);
119                          installData.setInstallDefaultDir(installData.getDefaultDir());
120  
121                          Controller.checkForNewerVersion(installData);
122  
123                          // Check Write privileges in installation directory (installData.getInstallDefaultDir())
124                          // If the directory exists, is has to be tested, whether the user has write access
125                          dir = installData.getInstallDefaultDir();
126  
127                          if ( SystemManager.exists_directory(dir) ) {
128                              if ( ! Controller.createdSubDirectory(dir) ) {
129                                  System.err.println("ERROR: No write privileges inside directory: " + dir);
130                                  System.exit(1);
131                              }
132                          }
133  
134                          // If the directory does not exist, is has to be tested, whether the user can create it
135                          if ( ! SystemManager.exists_directory(dir)) {
136                              if ( ! Controller.createdDirectory(dir) ) {
137                                  System.err.println("ERROR: No privileges to create directory: " + dir);
138                                  System.exit(1);
139                              }
140                          }
141  
142                          // Setting macro
143                          SetupDataProvider.setNewMacro("DIR", dir); // important for string replacement
144  
145                          // Calculate available disc space
146                          int discSpace = SystemManager.calculateDiscSpace(dir);
147                          installData.setAvailableDiscSpace(discSpace);
148  
149                          if ( ! installData.databaseAnalyzed()) {
150                              ModuleCtrl.defaultDatabaseAnalysis(installData);
151                              installData.setDatabaseAnalyzed(true);
152                          }
153                      }
154  
155                      getSetupFrame().setButtonEnabled(true, getSetupFrame().BUTTON_NEXT);
156                  }
157              }
158          };
159          t.start();
160      }
161  
afterShow(boolean nextButtonPressed)162      public boolean afterShow(boolean nextButtonPressed) {
163          boolean repeatDialog = false;
164          getSetupFrame().setButtonEnabled(true, getSetupFrame().BUTTON_PREVIOUS);
165          return repeatDialog;
166      }
167  
getNext()168      public String getNext() {
169          InstallData data = InstallData.getInstance();
170  
171          if ( data.hideEula() ) {
172              if ( data.isRootInstallation() ) {
173                  if ( data.olderVersionExists() ) {
174                      return new String("InstallationImminent");
175                  } else if ( data.sameVersionExists() ) {
176                      return new String("ChooseComponents");
177                  } else {
178                      return new String("ChooseInstallationType");
179                  }
180              } else {
181                  return new String("ChooseDirectory");
182              }
183          } else {
184              return new String("AcceptLicense");
185          }
186      }
187  
getPrevious()188      public String getPrevious() {
189          return null;
190      }
191  
getHelpFileName()192      public final String getHelpFileName() {
193          return this.helpFile;
194      }
195  
196  }
197