summaryrefslogtreecommitdiff
path: root/javainstaller2/src/JavaSetup/org/openoffice/setup/ResourceManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'javainstaller2/src/JavaSetup/org/openoffice/setup/ResourceManager.java')
-rwxr-xr-xjavainstaller2/src/JavaSetup/org/openoffice/setup/ResourceManager.java171
1 files changed, 171 insertions, 0 deletions
diff --git a/javainstaller2/src/JavaSetup/org/openoffice/setup/ResourceManager.java b/javainstaller2/src/JavaSetup/org/openoffice/setup/ResourceManager.java
new file mode 100755
index 000000000000..e0c28b96b512
--- /dev/null
+++ b/javainstaller2/src/JavaSetup/org/openoffice/setup/ResourceManager.java
@@ -0,0 +1,171 @@
+/*************************************************************************
+ *
+ * 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;
+
+import org.openoffice.setup.SetupData.SetupDataProvider;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.PropertyResourceBundle;
+import java.util.ResourceBundle;
+import javax.swing.ImageIcon;
+
+public class ResourceManager {
+
+ static PropertyResourceBundle stringResourceBundle;
+ static PropertyResourceBundle fileNameResourceBundle;
+ static HashMap setupFiles = new HashMap(); // required, because it is not possible to set values in fileNameResourceBundle
+
+ private ResourceManager() {
+ }
+
+ static public void checkFileExistence(File htmlDirectory) {
+
+ for (Enumeration e = fileNameResourceBundle.getKeys(); e.hasMoreElements(); ) {
+ String key = (String) e.nextElement();
+ String fileName = (String)(fileNameResourceBundle.getObject(key));
+
+ if ( ! fileName.endsWith("html") ) {
+ // no check of existence for non-html files
+ setupFiles.put(key, fileName);
+ // System.err.println("Using file: " + fileName);
+ }
+
+ if ( fileName.endsWith("html") ) {
+ boolean fileExists = true;
+
+ File file = new File(htmlDirectory, fileName);
+ File newFile = null;
+
+ if ( file.exists() ) {
+ setupFiles.put(key, fileName);
+ // System.err.println("Using file: " + fileName);
+ } else {
+ fileExists = false;
+ // try to use english version
+ int pos1 = fileName.lastIndexOf("_");
+
+ if ( pos1 > 0 ) {
+ int pos2 = fileName.lastIndexOf(".");
+ String newFileName = fileName.substring(0, pos1) + fileName.substring(pos2, fileName.length());
+ newFile = new File(htmlDirectory, newFileName);
+ if ( newFile.exists() ) {
+ fileExists = true;
+ setupFiles.put(key, newFileName);
+ // System.err.println("Using file: " + fileName);
+ } else {
+ // Introducing fallback to a very special simple html page
+ String simplePage = "Excuse.html";
+ File simpleFile = new File(htmlDirectory, simplePage);
+ if ( simpleFile.exists() ) {
+ fileExists = true;
+ setupFiles.put(key, simplePage);
+ // System.err.println("Using file: " + fileName);
+ }
+ }
+ }
+ }
+
+ if ( ! fileExists ) {
+ if ( newFile != null ) {
+ System.err.println("ERROR: Neither file \"" + file.getPath() +
+ "\" nor file \"" + newFile.getPath() + "\" do exist!");
+ } else {
+ System.err.println("ERROR: File \"" + file.getPath() + "\" does not exist!");
+ }
+ System.exit(1);
+ }
+ }
+ }
+ }
+
+ static public String getString(String key) {
+ String value = (String)(stringResourceBundle.getObject(key));
+ if (value != null && (value.indexOf('$') >= 0)) {
+ value = SetupDataProvider.replaceMacros(value);
+ }
+ return value;
+ }
+
+ static public String getFileName(String key) {
+ String value = (String)setupFiles.get(key);
+ // String value = (String)(fileNameResourceBundle.getObject(key));
+ return value;
+ }
+
+ static public ImageIcon getIcon(String key) {
+
+ String name = getFileName(key);
+
+ try {
+ Class c = Class.forName("org.openoffice.setup.ResourceManager");
+ URL url = c.getResource(name);
+ if (url != null) {
+ return new ImageIcon(url);
+ } else {
+ System.err.println("Error: file not found: " + name);
+ }
+ } catch (ClassNotFoundException e) {
+ System.err.println(e);
+ }
+
+ return new ImageIcon();
+ }
+
+ static public ImageIcon getIconFromPath(File file) {
+
+ try {
+ URL url = file.toURL();
+ if (url != null) {
+ return new ImageIcon(url);
+ } else {
+ System.err.println("Error: file not found: " + file.getPath());
+ }
+ } catch (MalformedURLException e) {
+ System.err.println(e);
+ }
+
+ return new ImageIcon();
+ }
+
+ static {
+ Locale locale = Locale.getDefault();
+ System.err.println("System locale: " + locale );
+ try {
+ stringResourceBundle = (PropertyResourceBundle) ResourceBundle.getBundle("org.openoffice.setup.setupstrings", locale);
+ fileNameResourceBundle = (PropertyResourceBundle) ResourceBundle.getBundle("org.openoffice.setup.setupfiles", locale);
+ } catch (MissingResourceException ex) {
+ ex.printStackTrace();
+ System.exit(1);
+ }
+ }
+}