From 83e8c95ea7d257166d350a59bfd81e9833ec14fd Mon Sep 17 00:00:00 2001 From: clemenso Date: Thu, 5 Nov 2009 19:05:14 +0000 Subject: [#484] European Language support git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@535 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4 --- bkucommon/pom.xml | 10 +++- .../at/gv/egiz/bku/viewer/ResourceFontLoader.java | 61 ++++++++++++++++++++++ .../at/gv/egiz/bku/viewer/ValidatorFactory.java | 23 ++++++-- 3 files changed, 87 insertions(+), 7 deletions(-) create mode 100644 bkucommon/src/main/java/at/gv/egiz/bku/viewer/ResourceFontLoader.java (limited to 'bkucommon') diff --git a/bkucommon/pom.xml b/bkucommon/pom.xml index bb696fba..e878f155 100644 --- a/bkucommon/pom.xml +++ b/bkucommon/pom.xml @@ -49,13 +49,19 @@ at.gv.egiz utils - 1.2.8-SNAPSHOT + ${version} at.gv.egiz STALExt - 1.2.8-SNAPSHOT + ${version} + + + at.gv.egiz + BKUCommonGUI + ${version} + commons-logging commons-logging diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ResourceFontLoader.java b/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ResourceFontLoader.java new file mode 100644 index 00000000..8cab581d --- /dev/null +++ b/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ResourceFontLoader.java @@ -0,0 +1,61 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package at.gv.egiz.bku.viewer; + +import at.gv.egiz.bku.gui.viewer.FontProviderException; +import at.gv.egiz.bku.gui.viewer.FontProvider; +import java.awt.Font; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Loads font(s) as classpath resource. + * Loaded fonts are shared within all instances in this VM (classloader) + * @author Clemens Orthacker + */ +public class ResourceFontLoader implements FontProvider { + + public static final String FONT_RESOURCE = "DejaVuLGCSansMono.ttf"; + + protected final static Log log = LogFactory.getLog(ResourceFontLoader.class); + + /** TextValidator and (local) SecureViewerDialog (see LocalStalFactory) use ResourceFontLoader, load resource only once */ + protected static Font font; + + /** + * + * @return + * @throws FontProviderException encapsulating FontFormatException (if resource doesn't contain the plain format) + * or IOException (if resource cannot be retrieved) + */ + @Override + public Font getFont() throws FontProviderException { + if (font == null) { + try { + if (log.isDebugEnabled()) { + log.debug("loading " + getClass().getClassLoader().getResource(FONT_RESOURCE)); + } + font = Font.createFont(Font.PLAIN, getClass().getClassLoader().getResourceAsStream(FONT_RESOURCE)); + } catch (Exception ex) { + log.error("failed to load font", ex); + throw new FontProviderException("failed to load font", ex); + } + } + log.trace("font resource loaded"); + return font; + } +} diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidatorFactory.java b/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidatorFactory.java index e16a261e..ad9bf6bb 100644 --- a/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidatorFactory.java +++ b/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidatorFactory.java @@ -17,6 +17,8 @@ package at.gv.egiz.bku.viewer; import java.io.IOException; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; import java.net.URL; import java.util.Collections; import java.util.Enumeration; @@ -108,14 +110,25 @@ public class ValidatorFactory { return null; } - + + /** + * + * @throws InvocationTargetException if className's (nullary) constructor throws exception + */ private Validator createValidatorInstance(String className) throws ClassNotFoundException, InstantiationException, - IllegalAccessException { - + IllegalAccessException, NoSuchMethodException, InvocationTargetException { + try { - Class implClass = classLoader.loadClass(className); - return (Validator) implClass.newInstance(); + Constructor implConstructor = classLoader.loadClass(className).getConstructor((Class[])null); + return (Validator) implConstructor.newInstance((Object[])null); + } catch (InvocationTargetException ex) { + //ex from constructor + log.error("Failed to initialize validator class '" + className + "': " + ex.getCause().getMessage(), ex.getCause()); + throw ex; + } catch (NoSuchMethodException ex) { + log.error("Validator class '" + className + "' has no nullary constructor", ex); + throw ex; } catch (ClassNotFoundException e) { log.error("Validator class '" + className + "' not found.", e); throw e; -- cgit v1.2.3