📄 qmainwindowtranslator.java
字号:
/* This file is part of ui2swt.
*
* $Revision: 1.3 $
* $Date: 2007/01/14 10:35:39 $
* $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.swt;
import ui2swt.Action;
import ui2swt.ClassDefinition;
import ui2swt.Translator;
import ui2swt.UIDefinition;
import ui2swt.Widget;
public class QMainWindowTranslator extends AbstractWidgetTranslator
{
private static final String COOL_BAR_VAR = "l_coolBar";
private static final String COOL_ITEM_VAR = "l_coolItem";
private static final String COOL_ITEM_SIZE_VAR = "l_coolItemSize";
private static final String COOL_ITEM_PREFERRED_SIZE_VAR = "l_coolItemPreferredSize";
//
//
//
public QMainWindowTranslator()
{}
public void translateChildren(
Translator iTranslator,
UIDefinition iUIDefinition,
Widget iWidget,
Widget[] iChildren,
ClassDefinition iClassDefinition )
{
this.translateActions(
iTranslator,
iUIDefinition,
iWidget,
iClassDefinition);
this.translateMenuBar(
iTranslator,
iUIDefinition,
iWidget,
iClassDefinition);
this.translateToolBars(
iTranslator,
iUIDefinition,
iWidget,
iClassDefinition);
super.translateChildren(
iTranslator,
iUIDefinition,
iWidget,
iChildren,
iClassDefinition);
this.layoutChildren(
iUIDefinition,
iWidget,
iClassDefinition);
}
//
//
//
protected void setProperties(
UIDefinition iUIDefinition,
Widget iWidget )
{
SWTWidgetHelper.setAttributeProperties(iUIDefinition, iWidget);
SWTWidgetHelper.setExpandProperties(iUIDefinition, iWidget);
SWTWidgetHelper.setMinimumSizeProperties(iUIDefinition, iWidget);
SWTShellHelper.setAttributeProperties(iUIDefinition, iWidget);
SWTShellHelper.setDefaultExpandProperties(iUIDefinition, iWidget);
}
protected void generateConstructCode(
UIDefinition iUIDefinition,
Widget iWidget,
ClassDefinition iClassDefinition )
{
SWTShellHelper.generateConstructCode(
iUIDefinition,
iWidget,
iClassDefinition);
this.generateLayoutCode(
iUIDefinition,
iWidget,
iClassDefinition);
}
protected void generateSetFieldsCode(
UIDefinition iUIDefinition,
Widget iWidget,
ClassDefinition iClassDefinition )
{
SWTWidgetHelper.generateSetEnabledCode(
iUIDefinition,
iWidget,
iClassDefinition);
SWTWidgetHelper.generateSetTitleCode(
iUIDefinition,
iWidget,
iClassDefinition);
SWTWidgetHelper.generateSetSizeCode(
iUIDefinition,
iWidget,
iClassDefinition);
SWTWidgetHelper.generateSetToolTipCode(
iUIDefinition,
iWidget,
iClassDefinition);
}
//
//
//
private void generateLayoutCode(
UIDefinition iUIDefinition,
Widget iWidget,
ClassDefinition iClassDefinition )
{
String widgetVar = iWidget.getProperty(SWTWidgetHelper.SWT_VAR);
iClassDefinition
.addImport("org.eclipse.swt.layout.FillLayout")
.getConstructor()
.addMethodCall1(widgetVar, "setLayout", "new FillLayout(SWT.VERTICAL)");
}
//
//
//
private void translateActions(
Translator iTranslator,
UIDefinition iUIDefinition,
Widget iWidget,
ClassDefinition iClassDefinition )
{
Action[] actions = iUIDefinition.getActions();
for ( int i = 0; i < actions.length; i++ )
{
SWTActionHelper.translate(
iUIDefinition,
actions[i],
iClassDefinition);
}
}
private void translateMenuBar(
Translator iTranslator,
UIDefinition iUIDefinition,
Widget iWidget,
ClassDefinition iClassDefinition )
{
Widget menuBar = iUIDefinition.getMenuBar();
if ( menuBar != null )
{
menuBar.setProperty(
SWTWidgetHelper.SWT_PARENT_VAR,
iWidget.getProperty(SWTWidgetHelper.SWT_VAR));
iTranslator.translateWidget(iUIDefinition, menuBar, iClassDefinition);
}
}
private void translateToolBars(
Translator iTranslator,
UIDefinition iUIDefinition,
Widget iWidget,
ClassDefinition iClassDefinition )
{
Widget[] toolBars = iUIDefinition.getToolBars();
if ( toolBars.length > 0 )
{
String parentVar = iWidget.getProperty(SWTWidgetHelper.SWT_VAR);
iClassDefinition
.addImport("org.eclipse.swt.SWT")
.addImport("org.eclipse.swt.widgets.CoolBar")
.addImport("org.eclipse.swt.widgets.Event")
.addImport("org.eclipse.swt.widgets.Listener")
.getConstructor()
.addLocalVariable("CoolBar", COOL_BAR_VAR)
.addVariableInstantiation2(COOL_BAR_VAR, "CoolBar", parentVar, "SWT.NONE")
.addStatement(COOL_BAR_VAR+".addListener(SWT.Resize, new Listener()")
.addStatement("{")
.addStatement(" public void handleEvent(Event event)")
.addStatement(" {")
.addStatement(" "+parentVar+".layout();")
.addStatement(" }")
.addStatement("});");
for ( int i = 0; i < toolBars.length; i++ )
{
Widget toolBar = toolBars[i];
toolBar.setProperty(SWTWidgetHelper.SWT_PARENT_VAR, COOL_BAR_VAR);
iTranslator.translateWidget(iUIDefinition, toolBar, iClassDefinition);
String toolBarVar = toolBar.getProperty(SWTWidgetHelper.SWT_VAR);
iClassDefinition
.addImport("org.eclipse.swt.SWT")
.addImport("org.eclipse.swt.widgets.CoolItem")
.addImport("org.eclipse.swt.graphics.Point")
.getConstructor()
.addMethodCall0(toolBarVar, "pack")
.addLocalVariable("CoolItem", COOL_ITEM_VAR)
.addLocalVariable("Point", COOL_ITEM_SIZE_VAR)
.addLocalVariable("Point", COOL_ITEM_PREFERRED_SIZE_VAR)
.addVariableAssignment(COOL_ITEM_SIZE_VAR, toolBarVar+".getSize()")
.addVariableInstantiation2(COOL_ITEM_VAR, "CoolItem", COOL_BAR_VAR, "SWT.NONE")
.addMethodCall1(COOL_ITEM_VAR, "setControl", toolBarVar)
.addVariableAssignment(COOL_ITEM_PREFERRED_SIZE_VAR, COOL_ITEM_VAR+".computeSize("+COOL_ITEM_SIZE_VAR+".x,"+COOL_ITEM_SIZE_VAR+".y)")
.addMethodCall1(COOL_ITEM_VAR, "setPreferredSize", COOL_ITEM_PREFERRED_SIZE_VAR);
}
}
}
private void layoutChildren(
UIDefinition iUIDefinition,
Widget iWidget,
ClassDefinition iClassDefinition )
{
String widgetVar = iWidget.getProperty(SWTWidgetHelper.SWT_VAR);
if ( iUIDefinition.hasToolBars() )
{
String childVar = COOL_BAR_VAR;
String dataVar = SWTHelper.getLocalVariableName("FormData");
iClassDefinition
.addImport("org.eclipse.swt.layout.FormLayout")
.addImport("org.eclipse.swt.layout.FormData")
.addImport("org.eclipse.swt.layout.FormAttachment")
.getConstructor()
.addMethodCall1(widgetVar, "setLayout", "new FormLayout()")
.addLocalVariable("FormData", dataVar)
.addVariableInstantiation0(dataVar, "FormData")
.addVariableFieldAssignment(dataVar, "top", "new FormAttachment(0)")
.addVariableFieldAssignment(dataVar, "left", "new FormAttachment(0)")
.addVariableFieldAssignment(dataVar, "right", "new FormAttachment(100)")
.addMethodCall1(COOL_BAR_VAR, "setLayoutData", dataVar);
Widget[] children = iWidget.getChildren();
for ( int i = 0; i < children.length; i++ )
{
String previousChildVar = childVar;
childVar = children[i].getProperty(SWTWidgetHelper.SWT_VAR);
iClassDefinition.getConstructor()
.addVariableInstantiation0(dataVar, "FormData")
.addVariableFieldAssignment(dataVar, "top", "new FormAttachment("+previousChildVar+")")
.addVariableFieldAssignment(dataVar, "left", "new FormAttachment(0)")
.addVariableFieldAssignment(dataVar, "right", "new FormAttachment(100)");
if ( i == (children.length - 1) )
{
iClassDefinition.getConstructor()
.addVariableFieldAssignment(dataVar, "bottom", "new FormAttachment(100)");
}
iClassDefinition.getConstructor()
.addMethodCall1(childVar, "setLayoutData", dataVar);
}
}
else
{
iClassDefinition
.addImport("org.eclipse.swt.layout.FillLayout")
.getConstructor()
.addMethodCall1(widgetVar, "setLayout", "new FillLayout()");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -