diff options
Diffstat (limited to 'javainstaller2/src/JavaSetup/org/openoffice/setup/ResourceManager.java')
-rwxr-xr-x | javainstaller2/src/JavaSetup/org/openoffice/setup/ResourceManager.java | 171 |
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); + } + } +} |