[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[e4-dev] UI model and ESE hotel room
|
Hi,
I've been toying with an EMF model of a toolkit. There are many issues that come up:
- how much does it abstract from swt (e.g. TabFolder/Tab)
- how does it handle toolkit-specific objects like layout data and styling info
- can you model "unknown" controls (GenericControl)
- how do you add toolkit-specific meta-data, to help the mapping code (annotations)
I've attached the "current" model, which in some way or another addresses all
these. Comments are welcome.
ESE: I waited until I got an accept for my position paper before trying to book
a hotel room... which was a bit late. Anybody who knows someone who has a room,
but have decided not to come?
Hallvard
<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="swt"
nsURI="http://no.hal/diamodl/toolkit/swt.ecore" nsPrefix="diamodl.toolkit.swt">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="javaPackage" value="org.eclipse.swt.widgets"/>
</eAnnotations>
<eClassifiers xsi:type="ecore:EDataType" name="RuntimeEvent" instanceClassName="java.util.EventObject"/>
<eClassifiers xsi:type="ecore:EDataType" name="Color" instanceClassName="org.eclipse.swt.graphics.Color"/>
<eClassifiers xsi:type="ecore:EDataType" name="Font" instanceClassName="org.eclipse.swt.graphics.Font"/>
<eClassifiers xsi:type="ecore:EDataType" name="Layout" instanceClassName="org.eclipse.swt.widgets.Layout"/>
<eClassifiers xsi:type="ecore:EDataType" name="LayoutData" instanceClassName="java.lang.Object"/>
<eClassifiers xsi:type="ecore:EDataType" name="Alignment" instanceClassName="int"/>
<eClassifiers xsi:type="ecore:EClass" name="Style">
<eStructuralFeatures xsi:type="ecore:EReference" name="layoutData" containment="true">
<eGenericType eClassifier="#//SharedObject">
<eTypeArguments eClassifier="#//LayoutData"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="backgroundColor" containment="true">
<eGenericType eClassifier="#//SharedObject">
<eTypeArguments eClassifier="#//Color"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="foregroundColor" containment="true">
<eGenericType eClassifier="#//SharedObject">
<eTypeArguments eClassifier="#//Color"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="font" containment="true">
<eGenericType eClassifier="#//SharedObject">
<eTypeArguments eClassifier="#//Font"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="textAlignment" eType="#//Alignment"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="verticalAlignment" eType="#//Alignment"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="horizontalAlignment" eType="#//Alignment"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Styled">
<eStructuralFeatures xsi:type="ecore:EReference" name="style" eType="#//Style"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Control" abstract="true" eSuperTypes="#//Styled">
<eStructuralFeatures xsi:type="ecore:EReference" name="composite" eType="#//AbstractComposite"
eOpposite="#//AbstractComposite/children"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="enabled" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
defaultValueLiteral="true">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="access" value="property"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="visible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
defaultValueLiteral="true">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="access" value="property"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Label" eSuperTypes="#//Control">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="text" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="access" value="property"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Text" eSuperTypes="#//Control">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="modify" eType="#//RuntimeEvent"
transient="true">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="access" value="event"/>
<details key="invalidates" value="text"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="keyUp" eType="#//RuntimeEvent"
transient="true">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="access" value="event"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="text" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="access" value="property"/>
<details key="invalidatedBy" value="modify"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="List" abstract="true" eSuperTypes="#//Control">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="items" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="access" value="property"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="selectionEvent" eType="#//RuntimeEvent"
transient="true">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="access" value="event"/>
<details key="invalidates" value="selection"/>
<details key="realName" value="selection"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SingleSelectionList" eSuperTypes="#//List">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="style" value="SINGLE"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="selection" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="access" value="getSelectionIndex setSelection"/>
<details key="invalidatedBy" value="selectionEvent"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MultipleSelectionList" eSuperTypes="#//List">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="style" value="MULTI"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="selection" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="access" value="getSelectionIndices setSelection"/>
<details key="invalidatedBy" value="selection"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Browser" eSuperTypes="#//Control">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="javaPackage" value="org.eclipse.swt.browser"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="location" eType="#//RuntimeEvent"
transient="true">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="access" value="event"/>
<details key="invalidates" value="url text"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="url" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="access" value="property"/>
<details key="invalidatedBy" value="location"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="text" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="access" value="property"/>
<details key="invalidatedBy" value="location"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Button" abstract="true" eSuperTypes="#//Control">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="javaClass" value="Button"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="text" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="selectionEvent" eType="#//RuntimeEvent"
transient="true">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="access" value="event"/>
<details key="invalidates" value="selection"/>
<details key="realName" value="selection"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PushButton" eSuperTypes="#//Button">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="style" value="PUSH"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CheckBox" eSuperTypes="#//Button">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="style" value="CHECK"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="selection" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="access" value="property"/>
<details key="invalidatedBy" value="selectionEvent"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ToggleButton" eSuperTypes="#//Button">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="style" value="TOGGLE"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="selection" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="access" value="property"/>
<details key="invalidatedBy" value="selectionEvent"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AbstractComposite" abstract="true">
<eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
eType="#//Control" containment="true" eOpposite="#//Control/composite"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Composite" eSuperTypes="#//AbstractComposite">
<eStructuralFeatures xsi:type="ecore:EReference" name="layout" containment="true">
<eGenericType eClassifier="#//SharedObject">
<eTypeArguments eClassifier="#//Layout"/>
</eGenericType>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TitledComposite" abstract="true" eSuperTypes="#//Composite">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="title" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
<eAnnotations source="http://www.eclipse.org/swt">
<details key="access" value="property"/>
<details key="realName" value="text"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="GroupBox" eSuperTypes="#//TitledComposite"/>
<eClassifiers xsi:type="ecore:EClass" name="TabFolder" eSuperTypes="#//AbstractComposite"/>
<eClassifiers xsi:type="ecore:EClass" name="Tab" eSuperTypes="#//TitledComposite"/>
<eClassifiers xsi:type="ecore:EClass" name="SharedObject">
<eTypeParameters name="T"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value">
<eGenericType eTypeParameter="#//SharedObject/T"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="GenericControl" eSuperTypes="#//Control">
<eStructuralFeatures xsi:type="ecore:EReference" name="properties" upperBound="-1"
eType="#//TypeNameValueTuple"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SharedImmediate" eSuperTypes="#//SharedObject">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="data" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SharedBean">
<eStructuralFeatures xsi:type="ecore:EReference" name="properties" upperBound="-1"
eType="#//TypeNameValueTuple"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TypeNameValueTuple">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="javaClass">
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaClass">
<eTypeArguments/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="data" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eClassifiers>
</ecore:EPackage>