[Schmitzm-commits] r889 - in trunk/src/schmitzm: lang swing

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Thu Jun 3 13:16:05 CEST 2010


Author: mojays
Date: 2010-06-03 13:16:04 +0200 (Thu, 03 Jun 2010)
New Revision: 889

Modified:
   trunk/src/schmitzm/lang/ResourceProvider.java
   trunk/src/schmitzm/swing/ResourceProviderManagerFrame.java
Log:
Auto-Reset functionality in ResourceProvider.
License header in ResourceProviderManagerFrame corrected.

Modified: trunk/src/schmitzm/lang/ResourceProvider.java
===================================================================
--- trunk/src/schmitzm/lang/ResourceProvider.java	2010-06-03 10:48:43 UTC (rev 888)
+++ trunk/src/schmitzm/lang/ResourceProvider.java	2010-06-03 11:16:04 UTC (rev 889)
@@ -88,6 +88,20 @@
 	 * Konstruktor von {@link ResourceProvider} automatisch befuellt.<br>
 	 */
 	private static final SortableVector<ResourceProvider> RESOURCE_PROVIDER_SORTABLE = new SortableVector<ResourceProvider>();
+	/**
+	 * Wenn {@code true}, wird {@link ResourceProvider#resetResourceBundle(String, String)}
+	 * automatisch fuer jeden instanziierten {@link ResourceProvider} aufgefuehrt.
+	 * Als Reset-Bundle wird {@link #autoResetBundle} verwendet und als Prefix der
+	 * Name des Original-Bundles.<br>
+	 * Default: {@code false}
+	 */
+	private static boolean autoReset = false;
+    /**
+     * Name des Reset-Bundles, welches automatisch fuer jeden instanziieren
+     * {@link ResourceProvider} gesetzt wird, sofern {@link #autoReset} aktiviert
+     * ist.
+     */
+	private static String  autoResetBundle = null;
 	
 	/** Enthaelt alle instanziierten {@link ResourceProvider} gemappt
 	 *  nach ihrem "defaultResourceBundle".
@@ -159,6 +173,11 @@
         this.missingResourceString = missingResourceString;
         // Registrieren des neuen ResourceProvider
         RESOURCE_PROVIDER.put(defaultResourceBundle, this);
+        // Wenn Auto-Reset aktiviert, automatisch das Alternativ-Bundle
+        // setzen, mit dem Original-Bundle als Prefix
+        if ( autoReset )
+          resetResourceBundle(autoResetBundle, getDefaultBundleSimpleName());
+        
         // Registrieren des neuen ResourceProvider als sortierbare Liste
         RESOURCE_PROVIDER_SORTABLE.add(this);
     }
@@ -571,12 +590,45 @@
 	}
 
 	/**
+     * Liefert den "einfachen" Bundle-Namen ohne das Package. Wenn ein Alternativ-Bundle
+     * gesetzt wurde, wird dessen Name zurueckgegeben.
+     */
+    public String getBundleSimpleName() {
+       return getSimpleNameFromBundle( getBundleName() );
+    }
+    
+    /**
+     * Liefert das Bundle-Package ohne den Bundle-Namen. Wenn ein Alternativ-Bundle
+     * gesetzt wurde, wird dessen Package zurueckgegeben.
+     */
+    public String getBundlePackage() {
+      return getPackageFromBundle( getBundleName() );
+    }
+    
+
+	/**
 	 * Liefert den Namen des Standard-Resource-Bundle.
 	 */
 	public String getDefaultBundleName() {
 		return defaultResourceBundle;
 	}
 
+    /**
+     * Liefert den "einfachen" Bundle-Namen ohne das Package. Wenn ein Alternativ-Bundle
+     * gesetzt wurde, wird dessen Name zurueckgegeben.
+     */
+    public String getDefaultBundleSimpleName() {
+       return getSimpleNameFromBundle( getDefaultBundleName() );
+    }
+    
+    /**
+     * Liefert das Bundle-Package ohne den Bundle-Namen. Wenn ein Alternativ-Bundle
+     * gesetzt wurde, wird dessen Package zurueckgegeben.
+     */
+    public String getDefaultBundlePackage() {
+      return getPackageFromBundle( getDefaultBundleName() );
+    }
+
 	/**
 	 * Liefert die Standard-Sprache des Resource-Bundles ("Fall-Back").
 	 */
@@ -631,8 +683,31 @@
 		}
 		return false;
 	}
+	
+    /**
+     * Liefert den "einfachen" Bundle-Namen ohne das Package. Wenn ein Alternativ-Bundle
+     * gesetzt wurde, wird dessen Name zurueckgegeben.
+     */
+    public static String getSimpleNameFromBundle(String fullBundleName) {
+       int lastDotIdx = fullBundleName.lastIndexOf(".");
+       if (lastDotIdx >= 0  )
+         fullBundleName = fullBundleName.substring(lastDotIdx + 1);
+       return fullBundleName;
+    }
+    
+    /**
+     * Liefert das Bundle-Package ohne den Bundle-Namen. Wenn ein Alternativ-Bundle
+     * gesetzt wurde, wird dessen Package zurueckgegeben.
+     */
+    public String getPackageFromBundle(String fullBundleName) {
+      int lastDotIdx = fullBundleName.lastIndexOf(".");
+      String bundlePackage = "";
+      if (lastDotIdx >= 0  )
+          bundlePackage = fullBundleName.substring(0, lastDotIdx).replace(".","/");
+      return bundlePackage;
+    }
 
-	/**
+    /**
 	 * Liefert die Property-Datei ({@code .properties}) fuer ein Resource
 	 * Bundle.
 	 * 
@@ -655,16 +730,8 @@
 	 */
 	public static File getPropertyFile(ResourceProvider provider, Locale l, File rootPath)
 			throws URISyntaxException, MalformedURLException {
-		String bundlePath = provider.getBundleName();
-		String bundlePackage= "";
-		String bundleName = bundlePath;
-
-		int lastDotIdx = bundlePath.lastIndexOf(".");
-		if (lastDotIdx >= 0  ) {
-			bundleName = bundlePath.substring(lastDotIdx + 1);
-			bundlePackage = bundlePath.substring(0, lastDotIdx).replace(".",
-			"/");
-		}
+		String bundlePackage = provider.getBundlePackage();
+		String bundleName = provider.getBundleSimpleName();
 		
 		// determine the exact package URL on the file system
         String newBundleName = bundleName + "_" + l.toString() + ".properties";
@@ -740,37 +807,22 @@
 	  return RESOURCE_PROVIDER_SORTABLE;
 	}
 	
-//	/**
-//	 * Setzt alternative ResourceBundles für jeden bisher registrierten
-//	 * ResourceProvider. Das alternative Bundle wird ohne die Packagebezeichung
-//	 * im Classpath als Datei erwartet.
-//	 * 
-//	 * @param prefix
-//	 *            <code>null</code> 
-//	 */
-//	public static void resetAllRegisteredResourceBundles() {
-//		// Enabling user-translated locales that are searched in the classpath
-//		for (ResourceProvider rp : RESOURCE_PROVIDER_SORTABLE) {
-//			String filename = rp.getBundleName();
-//			if (filename.contains("."))
-//				filename = filename.substring(filename.lastIndexOf('.') + 1);
-//			rp.resetResourceBundle(filename);
-//		}
-//	}
-
 	/**
-	 * Setzt einen alternativen ResourceBundle für all bisher registrierten
-	 * ResourceProviders.
-	 * 
-	 * @param bundle
-	 *            neue Bundle
+	 * (De)Aktiviert, dass jeder instanziiere {@link ResourceProvider} automatisch
+	 * auf ein alternatives Bundle resettet wird (mittels {@link ResourceProvider#resetResourceBundle(String, String)}).
+     * Als Prefix wird jeweils der Name des Original-Bundles verwendet. 
+	 * @param enabled   (de)aktiviert die Auto-Reset-Funktion
+	 * @param bundle    Bundle fuer das Reset
+	 * @param backdated wenn {@code true}, wird das Reset auch auf alle bereits
+	 *                  registrierten (instanziierten) {@link ResourceProvider}
+	 *                  ausgefuehrt
 	 */
-	public static void resetAllRegisteredResourceBundles(String bundle) {
-		// Enabling user-translated locales that are searched in the classpath
-		for (ResourceProvider rp : RESOURCE_PROVIDER_SORTABLE) {
-			rp.resetResourceBundle(bundle, rp.getBundleName());
-		}
+	public static void setAutoResetResourceBundle(boolean enabled, String bundle, boolean backdated) {
+	  autoReset = enabled;
+	  autoResetBundle = bundle;
+	  if ( backdated )
+	    for (ResourceProvider rp : RESOURCE_PROVIDER_SORTABLE)
+	      rp.resetResourceBundle(bundle, rp.getDefaultBundleSimpleName() );
 	}
 	
-	
 }

Modified: trunk/src/schmitzm/swing/ResourceProviderManagerFrame.java
===================================================================
--- trunk/src/schmitzm/swing/ResourceProviderManagerFrame.java	2010-06-03 10:48:43 UTC (rev 888)
+++ trunk/src/schmitzm/swing/ResourceProviderManagerFrame.java	2010-06-03 11:16:04 UTC (rev 889)
@@ -1,14 +1,33 @@
-/** XULU - This file is part of the eXtendable Unified Land Use Modelling Platform (XULU)
+/*******************************************************************************
+ * Copyright (c) 2009 Martin O. J. Schmitz.
+ * 
+ * This file is part of the SCHMITZM library - a collection of utility 
+ * classes based on Java 1.6, focusing (not only) on Java Swing 
+ * and the Geotools library.
+ * 
+ * The SCHMITZM project is hosted at:
+ * http://wald.intevation.org/projects/schmitzm/
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 3
+ * of the License, or (at your option) any later version.
+ * 
+ * This program 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 General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public License (license.txt)
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ * or try this link: http://www.gnu.org/licenses/lgpl.html
+ * 
+ * Contributors:
+ *     Martin O. J. Schmitz - initial API and implementation
+ *     Stefan A. Tzeggai - additional utility classes
+ ******************************************************************************/
 
-    This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
-    This library 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 for more details.
-    You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
-
-    Diese Bibliothek ist freie Software; Sie dürfen sie unter den Bedingungen der GNU Lesser General Public License, wie von der Free Software Foundation veröffentlicht, weiterverteilen und/oder modifizieren; entweder gemäß Version 2.1 der Lizenz oder (nach Ihrer Option) jeder späteren Version.
-    Diese Bibliothek wird in der Hoffnung weiterverbreitet, daß sie nützlich sein wird, jedoch OHNE IRGENDEINE GARANTIE, auch ohne die implizierte Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. Mehr Details finden Sie in der GNU Lesser General Public License.
-    Sie sollten eine Kopie der GNU Lesser General Public License zusammen mit dieser Bibliothek erhalten haben; falls nicht, schreiben Sie an die Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA.
- **/
-
 package schmitzm.swing;
 
 import java.awt.AWTEvent;



More information about the Schmitzm-commits mailing list