blob: 63a527d5c8661804043cbf3105feec3ea2580b91 [file] [log] [blame]
/*
* Copyright (c) 2008, 2009 Borland Software Corp.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Artem Tikhomirov (Borland) - initial API and implementation
*/
«IMPORT 'http://www.eclipse.org/gmf/2008/Widget'»
«EXTENSION Widgets»
// TODO pass only those widgets that would be accessed from outside
// (i.e. listeners/enablement code) to minimize number of class fields
«DEFINE Fields FOR Sequence(widget::Widget)-»
«FOREACH allWidgets(self) AS w
private «EXPAND className FOR w» «fieldName(w)»;
«ENDFOREACH»«REM»XXX think of an alternative Button myR1, myR2, myR3 to save some line count«ENDREM»
«ENDDEFINE»
«DEFINE className FOR widget::Widget»«ERROR 'Abstract className FOR Widget'»«ENDDEFINE»
«DEFINE className FOR widget::TextEntry»Text«ENDDEFINE»
«DEFINE className FOR widget::CheckBox»Button«ENDDEFINE»
«DEFINE className FOR widget::RadioButton»Button«ENDDEFINE»
«DEFINE className FOR widget::Spin»Spinner«ENDDEFINE»
«DEFINE className FOR widget::Composite»Composite«ENDDEFINE»
«DEFINE className FOR widget::Group»Group«ENDDEFINE»
«DEFINE className FOR widget::Combo»Combo«ENDDEFINE»
«DEFINE Main(compositeVar : String, formToolkit : String/*var or accessor*/) FOR Sequence(widget::Widget)-»
«EXPAND Visuals(compositeVar, formToolkit) FOREACH self
«ENDDEFINE»
«DEFINE ExtraMethods(extendedToolkit : Boolean, formToolkitAccess : String) FOR Sequence(widget::Widget)-»
«IF createsAnyLabel(self
private org.eclipse.swt.widgets.Label createLabel(org.eclipse.swt.widgets.Composite parent, String label) {
org.eclipse.swt.widgets.Label l = new org.eclipse.swt.widgets.Label(parent, SWT.NONE);
if (label != null) l.setText(label);
«formToolkitAccess».adapt(l, false, false);
return l;
}
«ENDIF
«IF not allWidgets(self)[widget::Group]->isEmpty() /* the only reason to have that method even with extended toolkit is null check for label*/»
private org.eclipse.swt.widgets.Group createGroup(org.eclipse.swt.widgets.Composite parent, String label) {
org.eclipse.swt.widgets.Group g = new org.eclipse.swt.widgets.Group(parent, SWT.SHADOW_NONE);
if (label != null) g.setText(label);
«formToolkitAccess».adapt(g, false, false);
«formToolkitAccess».paintBordersFor(g);
return g;
}
«ENDIF
«ENDDEFINE»
/////////////////////////////////////////////////////////////////////////////////
// Create UI elements
// @param compositeVar, formToolkit - never null
«DEFINE Visuals(compositeVar : String, formToolkit : String) FOR widget::Widget»«ERROR 'abstract Visuals'»«ENDDEFINE»
«DEFINE Visuals(compositeVar : String, formToolkit : String) FOR widget::TextEntry
«IF label <> null
createLabelcompositeVar», "«label»");
«ENDIF
«fieldName(self = «formToolkit».createTextcompositeVar», null);
«ENDDEFINE»
«DEFINE Visuals(compositeVar : String, formToolkit : String) FOR widget::RadioButton
«fieldName(self = «formToolkit».createButtoncompositeVar», «EXPAND nullOrString(label)», SWT.RADIO);
«ENDDEFINE»
«DEFINE Visuals(compositeVar : String, formToolkit : String) FOR widget::CheckBox
«fieldName(self = «formToolkit».createButtoncompositeVar», «EXPAND nullOrString(label)», SWT.CHECK);
«ENDDEFINE»
«DEFINE Visuals(compositeVar : String, formToolkit : String) FOR widget::Spin
«IF label <> null
createLabelcompositeVar», "«label»");
«ENDIF
«fieldName(self = new SpinnercompositeVar», SWT.FLAT);
«fieldName(self)».setMinimumminimum»);
«fieldName(self)».setMaximummaximum»);
«fieldName(self)».setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER); // @see #145837
«ENDDEFINE»
«DEFINE Visuals(compositeVar : String, formToolkit : String) FOR widget::Composite
«fieldName(self = «formToolkit».createCompositecompositeVar»);
«formToolkit».paintBordersForfieldName(self)»);
«EXPAND Visuals(fieldName(self), formToolkit) FOREACH children
«IF layout <> null»«EXPAND Layout::Main(fieldName(self)) FOR layout»«ENDIF
«ENDDEFINE»
«DEFINE Visuals(compositeVar : String, formToolkit : String) FOR widget::Group
«fieldName(self = createGroupcompositeVar», «EXPAND nullOrString(label)»);
«EXPAND Visuals(fieldName(self), formToolkit) FOREACH children
«IF layout <> null»«EXPAND Layout::Main(fieldName(self)) FOR layout»«ENDIF
«ENDDEFINE»
«DEFINE Visuals(compositeVar : String, formToolkit : String) FOR widget::Combo
«IF label <> null
createLabelcompositeVar», "«label»");
«ENDIF
«fieldName(self = new CombocompositeVar», SWT.FLAT | SWT.READ_ONLY);
«fieldName(self)».setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER);
«formToolkit».adaptfieldName(self)», false, false);
«ENDDEFINE»
«DEFINE nullOrString(label : String) FOR OclAny»«IF label <> null»"«label»"«ELSE»null«ENDIF»«ENDDEFINE»