/************************************************************************* * * 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 * * 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); } } }