📄 translator.java
字号:
/* This file is part of ui2swt.
*
* $Revision: 1.2 $
* $Date: 2007/01/14 10:34:56 $
* $Name: $
*
* Copyright (C) 2006-2007 James Forbes, All Rights Reserved.
*
* This software is provided 'as-is', without any express or implied warranty.
* In no event will the authors be held liable for any damages arising from the
* use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software in
* a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source distribution.
*/
package ui2swt;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
public class Translator
{
private static final String WIDGET_TRANSLATE_PREFIX = "ui2swt.widget.translator.";
private static final String WIDGET_TRANSLATE_DEFAULT = "ui2swt.widget.translator.default";
private static final String LAYOUT_TRANSLATE_PREFIX = "ui2swt.layout.translator.";
private static final String LAYOUT_TRANSLATE_DEFAULT = "ui2swt.layout.translator.default";
private Properties properties;
private Map widgetTranslatorMap;
private Map layoutTranslatorMap;
//
//
//
public Translator( Properties iProperties )
{
this.properties = iProperties;
this.widgetTranslatorMap = new HashMap();
this.layoutTranslatorMap = new HashMap();
}
//
//
//
public void translate(
UIDefinition iUIDefinition,
ClassDefinition iClassDefinition )
{
// Translate the root widget item
this.translateWidget(
iUIDefinition,
iUIDefinition.getRootWidget(),
iClassDefinition);
}
public void translateWidget(
UIDefinition iUIDefinition,
Widget iWidget,
ClassDefinition iClassDefinition )
{
WidgetTranslator widgetTranslator = this.getWidgetTranslator(iWidget);
widgetTranslator.translate(this, iUIDefinition, iWidget, iClassDefinition);
Layout layout = iWidget.getLayout();
Widget[] children = iWidget.getChildren();
if ( layout == null )
{
widgetTranslator.translateChildren(this, iUIDefinition, iWidget, children, iClassDefinition);
}
else
{
LayoutTranslator layoutTranslator = this.getLayoutTranslator(layout);
layoutTranslator.preTranslate(iUIDefinition, layout, iWidget, children, iClassDefinition);
layoutTranslator.translate(this, iUIDefinition, layout, iWidget, iClassDefinition);
widgetTranslator.translateChildren(this, iUIDefinition, iWidget, children, iClassDefinition);
layoutTranslator.postTranslate(iUIDefinition, layout, iWidget, children, iClassDefinition);
}
}
//
//
//
private WidgetTranslator getWidgetTranslator( Widget iWidget )
{
String widgetClassName = iWidget.getClassName();
WidgetTranslator translator =
(WidgetTranslator)(this.widgetTranslatorMap.get(widgetClassName));
if ( translator == null )
{
String propertyName = WIDGET_TRANSLATE_PREFIX+widgetClassName;
String className = this.properties.getProperty(propertyName);
if ( className == null )
{
className = this.properties.getProperty(WIDGET_TRANSLATE_DEFAULT);
}
if ( className != null )
{
try
{
translator = (WidgetTranslator)(Class.forName(className).newInstance());
this.widgetTranslatorMap.put(widgetClassName, translator);
}
catch ( ClassNotFoundException iE )
{
throw new RuntimeException("ERROR: Could not load translator class: "+className);
}
catch ( InstantiationException iE )
{
throw new RuntimeException("ERROR: Could not instantiate translator class: "+className);
}
catch ( IllegalAccessException iE )
{
throw new RuntimeException("ERROR: Could not instantiate translator class: "+className);
}
}
else
{
throw new RuntimeException("ERROR: Missing widget translator property: "+propertyName);
}
}
return translator;
}
private LayoutTranslator getLayoutTranslator( Layout iLayout )
{
String layoutClassName = iLayout.getClassName();
LayoutTranslator translator =
(LayoutTranslator)(this.layoutTranslatorMap.get(layoutClassName));
if ( translator == null )
{
String propertyName = LAYOUT_TRANSLATE_PREFIX+layoutClassName;
String className = this.properties.getProperty(propertyName);
if ( className == null )
{
className = this.properties.getProperty(LAYOUT_TRANSLATE_DEFAULT);
}
if ( className != null )
{
try
{
translator = (LayoutTranslator)(Class.forName(className).newInstance());
this.layoutTranslatorMap.put(layoutClassName, translator);
}
catch ( ClassNotFoundException iE )
{
throw new RuntimeException("ERROR: Could not load translator class: "+className);
}
catch ( InstantiationException iE )
{
throw new RuntimeException("ERROR: Could not instantiate translator class: "+className);
}
catch ( IllegalAccessException iE )
{
throw new RuntimeException("ERROR: Could not instantiate translator class: "+className);
}
}
else
{
throw new RuntimeException("ERROR: Missing layout translator property: "+propertyName);
}
}
return translator;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -