summaryrefslogtreecommitdiff
path: root/javainstaller2/src/JavaSetup/org/openoffice/setup/Controller/ChooseDirectoryCtrl.java
diff options
context:
space:
mode:
Diffstat (limited to 'javainstaller2/src/JavaSetup/org/openoffice/setup/Controller/ChooseDirectoryCtrl.java')
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/Controller/ChooseDirectoryCtrl.java256
1 files changed, 256 insertions, 0 deletions
diff --git a/javainstaller2/src/JavaSetup/org/openoffice/setup/Controller/ChooseDirectoryCtrl.java b/javainstaller2/src/JavaSetup/org/openoffice/setup/Controller/ChooseDirectoryCtrl.java
new file mode 100755
index 000000000000..4a3bfab8452e
--- /dev/null
+++ b/javainstaller2/src/JavaSetup/org/openoffice/setup/Controller/ChooseDirectoryCtrl.java
@@ -0,0 +1,256 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package org.openoffice.setup.Controller;
+
+import java.awt.Dimension;
+import org.openoffice.setup.InstallData;
+import org.openoffice.setup.Installer.Installer;
+import org.openoffice.setup.Installer.InstallerFactory;
+import org.openoffice.setup.PanelController;
+import org.openoffice.setup.Panel.ChooseDirectory;
+import org.openoffice.setup.ResourceManager;
+import org.openoffice.setup.SetupData.SetupDataProvider;
+import org.openoffice.setup.Util.InstallChangeCtrl;
+import org.openoffice.setup.Util.LogManager;
+import org.openoffice.setup.Util.SystemManager;
+import java.io.File;
+import java.util.Vector;
+import javax.swing.JDialog;
+import javax.swing.JOptionPane;
+import org.openoffice.setup.Dialogs.DatabaseDialog;
+import org.openoffice.setup.SetupData.PackageDescription;
+import org.openoffice.setup.Util.Controller;
+import org.openoffice.setup.Util.Dumper;
+import org.openoffice.setup.Util.Informer;
+import org.openoffice.setup.Util.ModuleCtrl;
+import org.openoffice.setup.Util.PackageCollector;
+
+public class ChooseDirectoryCtrl extends PanelController {
+
+ private String helpFile;
+
+ public ChooseDirectoryCtrl() {
+ super("ChooseDirectory", new ChooseDirectory());
+ helpFile = "String_Helpfile_ChooseDirectory";
+ }
+
+ public String getNext() {
+
+ InstallData data = InstallData.getInstance();
+
+ if ( data.olderVersionExists() ) {
+ return new String("InstallationImminent");
+ } else if ( data.sameVersionExists() ) {
+ return new String("ChooseComponents");
+ } else {
+ return new String("ChooseInstallationType");
+ }
+ }
+
+ public String getPrevious() {
+ InstallData data = InstallData.getInstance();
+
+ if ( data.hideEula() ) {
+ return new String("Prologue");
+ } else {
+ return new String("AcceptLicense");
+ }
+ }
+
+ public final String getHelpFileName () {
+ return this.helpFile;
+ }
+
+ private String removeEndingDelimiter(String s) {
+ s.trim();
+ if (( s.endsWith("/")) || ( s.endsWith("\\"))) {
+ // removing the last character
+ s = s.substring(0, s.length() - 1);
+ }
+ // mask spaces
+ // s.replaceAll(" ", "\\ ");
+
+ return s;
+ }
+
+ public void beforeShow() {
+ ChooseDirectory panel = (ChooseDirectory)getPanel();
+ InstallData data = InstallData.getInstance();
+
+ if ( data.getInstallDir() == null ) {
+ String installDir = data.getDefaultDir();
+
+ if ( data.isUserInstallation() ) {
+ // System.getenv only supported in Java 1.5, property set in shell script
+ // if (( System.getenv("HOME") != null ) && ( ! System.getenv("HOME").equals(""))) {
+ // rootDir = System.getenv("HOME");
+ // }
+ if (( System.getProperty("HOME") != null ) && ( ! System.getProperty("HOME").equals("") )) {
+ installDir = System.getProperty("user.home");
+ }
+ }
+ data.setInstallDir(installDir);
+ }
+
+ panel.setDirectory(data.getInstallDir());
+ }
+
+ public boolean afterShow(boolean nextButtonPressed) {
+ boolean repeatDialog = false;
+ ChooseDirectory panel = (ChooseDirectory)getPanel();
+ String dir = panel.getDirectory();
+ dir = removeEndingDelimiter(dir);
+ InstallData data = InstallData.getInstance();
+ data.setInstallDir(dir);
+
+ File installDefaultDir = new File(dir, data.getDefaultDir());
+ data.setInstallDefaultDir(installDefaultDir.getPath());
+
+ SetupDataProvider.setNewMacro("DIR", installDefaultDir.getPath()); // important for string replacement
+ // SetupDataProvider.dumpMacros();
+
+ // Check existence of directory. Try to create, if it does not exist.
+ // If successufully created, calculate available disc space
+
+ if ( nextButtonPressed ) {
+
+ // If the directory exists, is has to be tested, whether the user has write access
+
+ if ( SystemManager.exists_directory(dir) ) {
+ if ( ! Controller.createdSubDirectory(dir) ) {
+ repeatDialog= true;
+ }
+ }
+
+ // If the directory does not exist, is has to be tested, whether the user can create it
+
+ if ( ! SystemManager.exists_directory(dir)) {
+ String title = ResourceManager.getString("String_ChooseDirectory4_Question_Title");
+ String message = null;
+ message = ResourceManager.getString("String_ChooseDirectory5_Question_Message");
+
+ int returnValue = JOptionPane.showConfirmDialog(null, message, title, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
+
+ if ( returnValue == JOptionPane.YES_OPTION ) {
+ if ( ! Controller.createdDirectory(dir) ) {
+ repeatDialog= true;
+ }
+ }
+ else if (returnValue == JOptionPane.NO_OPTION) {
+ repeatDialog = true;
+ }
+ }
+
+ // Additional tasks, if the directory is okay
+
+ if ( ! repeatDialog ) {
+ // Calculate available disc space
+ int discSpace = SystemManager.calculateDiscSpace(dir);
+ data.setAvailableDiscSpace(discSpace);
+
+ Installer installer = InstallerFactory.getInstance();
+
+ // Is this a new directory, or one that was already set before.
+ // In this case, the database does not need to be evaluated again.
+ // -> Testing, whether the database path has changed. This can
+ // only happen in user installations.
+ if ( data.isUserInstallation() ) {
+ String oldDatabasePath = data.getDatabasePath();
+ // Setting the database path
+ installer.defineDatabasePath();
+
+ if (( oldDatabasePath == null ) || ( ! oldDatabasePath.equals(data.getDatabasePath()))) {
+ data.setDatabaseAnalyzed(false);
+ data.setDatabaseQueried(false);
+ } else {
+ data.setDatabaseAnalyzed(true);
+ }
+ }
+
+ // In installations with user privileges, now it can be controlled,
+ // if there are products installed in the selected directory.
+ // Therefore the directory selection dialog has to be shown before.
+ // In installations with root privileges, this can only be checked,
+ // before the destination directory can be set, because it is fix.
+ if ( data.isUserInstallation() ) {
+ LogManager.setCommandsHeaderLine("Checking change installation");
+ InstallChangeCtrl.checkInstallChange(data);
+ // InstallChangeCtrl.checkInstallChange(data, panel);
+ }
+
+ // At this point it is clear, whether the update-Package is installed or not.
+ // If it is installed, it is also clear, in which version it is installed.
+ // Therefore the following dialog is also defined.
+
+ if ( data.newerVersionExists() ) {
+ // This can happen only in installation with user privileges.
+ // Installations with root privileges have cancelled installation
+ // already at first dialog.
+ // Possibility to select a new directory, in which no
+ // newer product exists
+ String message = ResourceManager.getString("String_Newer_Version_Installed_Found") + "\n" + data.getInstallDir() + "\n" +
+ ResourceManager.getString("String_Newer_Version_Database") + ": " + data.getDatabasePath() + "\n" +
+ ResourceManager.getString("String_Newer_Version_Tip");
+ String title = ResourceManager.getString("String_Error");
+ Informer.showErrorMessage(message, title);
+
+ repeatDialog = true;
+ }
+
+ // If an older version is found, and the update is forbidden, the user
+ // can select another installation directory.
+
+ if ( data.olderVersionExists() && data.dontUpdate() ) {
+ // This can happen only in installation with user privileges.
+ // Installations with root privileges have cancelled installation
+ // already at first dialog (InstallChangeCtrl.java).
+ // Possibility to select a new directory, in which no
+ // older product exists
+ String message = ResourceManager.getString("String_Older_Version_Installed_Found") + "\n" + data.getInstallDir() + "\n" +
+ ResourceManager.getString("String_Newer_Version_Database") + ": " + data.getDatabasePath() + "\n" +
+ ResourceManager.getString("String_Newer_Version_Tip");
+ String title = ResourceManager.getString("String_Error");
+ Informer.showErrorMessage(message, title);
+
+ repeatDialog = true;
+ }
+
+ if ( ! repeatDialog ) {
+
+ if ( ! data.databaseAnalyzed()) {
+ ModuleCtrl.defaultDatabaseAnalysis(data);
+ data.setDatabaseAnalyzed(true);
+ }
+ }
+ }
+ }
+
+ return repeatDialog;
+ }
+
+}