package org.eclipse.wazaabi.engine.swt.addressbook; import org.eclipse.wazaabi.engine.core.editparts.AbstractComponentEditPart; import org.eclipse.wazaabi.mm.core.annotations.Annotation; import org.eclipse.wazaabi.mm.core.annotations.AnnotationContent; import org.eclipse.wazaabi.mm.core.annotations.CoreAnnotationsFactory; import org.eclipse.wazaabi.mm.core.styles.BooleanRule; import org.eclipse.wazaabi.mm.core.styles.CoreStylesFactory; import org.eclipse.wazaabi.mm.core.styles.StringRule; import org.eclipse.wazaabi.mm.core.styles.collections.CoreCollectionsStylesFactory; import org.eclipse.wazaabi.mm.core.styles.collections.LookAndFeel; import org.eclipse.wazaabi.mm.core.styles.collections.LookAndFeelRule; import org.eclipse.wazaabi.mm.core.styles.collections.PathSelector; import org.eclipse.wazaabi.mm.core.styles.collections.WeightedColumnDescriptor; import org.eclipse.wazaabi.mm.core.widgets.Collection; import org.eclipse.wazaabi.mm.core.widgets.Container; import org.eclipse.wazaabi.mm.core.widgets.CoreWidgetsFactory; import org.eclipse.wazaabi.mm.core.widgets.Label; import org.eclipse.wazaabi.mm.core.widgets.TextComponent; import org.eclipse.wazaabi.mm.edp.events.EDPEventsFactory; import org.eclipse.wazaabi.mm.edp.events.Event; import org.eclipse.wazaabi.mm.edp.events.PropertyChangedEvent; import org.eclipse.wazaabi.mm.edp.handlers.Action; import org.eclipse.wazaabi.mm.edp.handlers.Binding; import org.eclipse.wazaabi.mm.edp.handlers.EDPHandlersFactory; import org.eclipse.wazaabi.mm.edp.handlers.EventHandler; import org.eclipse.wazaabi.mm.edp.handlers.StringParameter; import org.eclipse.wazaabi.mm.swt.styles.GridDataAlignment; import org.eclipse.wazaabi.mm.swt.styles.GridDataRule; import org.eclipse.wazaabi.mm.swt.styles.GridLayoutRule; import org.eclipse.wazaabi.mm.swt.styles.SWTStylesFactory; public class AddressBookUIHelper { public static Container createMasterUI() { Container master = CoreWidgetsFactory.eINSTANCE.createContainer(); master.setId("masterContainer"); GridLayoutRule grid = SWTStylesFactory.eINSTANCE.createGridLayoutRule(); grid.setPropertyName("layout"); master.getStyleRules().add(grid); GridDataRule gridData = SWTStylesFactory.eINSTANCE.createGridDataRule(); gridData.setPropertyName("layout-data"); gridData.setGrabExcessHorizontalSpace(true); gridData.setGrabExcessVerticalSpace(true); gridData.setVerticalAlignement(GridDataAlignment.FILL); gridData.setHorizontalAlignement(GridDataAlignment.FILL); master.getStyleRules().add(gridData); // ColorRule color = CoreStylesFactory.eINSTANCE.createColorRule(); // color.setPropertyName("background-color"); // color.setGreen(255); // master.getStyleRules().add(color); Collection collection = CoreWidgetsFactory.eINSTANCE.createCollection(); GridDataRule gridData1 = SWTStylesFactory.eINSTANCE.createGridDataRule(); gridData1.setPropertyName("layout-data"); gridData1.setGrabExcessHorizontalSpace(true); gridData1.setGrabExcessVerticalSpace(true); gridData1.setVerticalAlignement(GridDataAlignment.FILL); //gridData1.setHorizontalAlignement(GridDataAlignment.FILL); gridData1.setWidthHint(400); collection.getStyleRules().add(gridData1); Annotation inputAnnotation = CoreAnnotationsFactory.eINSTANCE.createAnnotation(); inputAnnotation.setSource("http://www.wazaabi.org/set-feature"); AnnotationContent cont1 = CoreAnnotationsFactory.eINSTANCE.createAnnotationContent(); cont1.setKey("feature-name"); cont1.setValue("input"); AnnotationContent cont2 = CoreAnnotationsFactory.eINSTANCE.createAnnotationContent(); cont2.setKey("type"); cont2.setValue("locationpath"); AnnotationContent cont3 = CoreAnnotationsFactory.eINSTANCE.createAnnotationContent(); cont3.setKey("value"); cont3.setValue("$datamodel"); inputAnnotation.getContents().add(cont1); inputAnnotation.getContents().add(cont2); inputAnnotation.getContents().add(cont3); collection.getAnnotations().add(inputAnnotation); LookAndFeelRule lookAndFeelRule = CoreCollectionsStylesFactory.eINSTANCE .createLookAndFeelRule(); lookAndFeelRule.setPropertyName("lookandfeel"); //$NON-NLS-1$ //lookAndFeelRule.setValue(LookAndFeel.TREE); lookAndFeelRule.setValue(LookAndFeel.TABLE); collection.getStyleRules().add(lookAndFeelRule); PathSelector pathSelector1 = CoreCollectionsStylesFactory.eINSTANCE .createPathSelector(); pathSelector1.setPropertyName("content-provider"); pathSelector1.setEClassifierName("AddressBook"); pathSelector1.getPaths().add("&persons"); PathSelector pathSelector2 = CoreCollectionsStylesFactory.eINSTANCE .createPathSelector(); pathSelector2.setPropertyName("label-renderer"); pathSelector2.setEClassifierName("Person"); pathSelector2.getPaths().add("@firstName"); pathSelector2.getPaths().add("@lastName"); PathSelector pathSelector3 = CoreCollectionsStylesFactory.eINSTANCE .createPathSelector(); pathSelector3.setPropertyName("content-provider"); pathSelector3.setEClassifierName("Person"); pathSelector3.getPaths().add("&addresses"); PathSelector pathSelector4 = CoreCollectionsStylesFactory.eINSTANCE .createPathSelector(); pathSelector4.setPropertyName("label-renderer"); pathSelector4.setEClassifierName("Address"); pathSelector4.getPaths().add("@city"); pathSelector4.getPaths().add("@country"); PathSelector pathSelector5 = CoreCollectionsStylesFactory.eINSTANCE .createPathSelector(); pathSelector5.setPropertyName("content-provider"); pathSelector5.setEClassifierName("Person"); pathSelector5.getPaths().add("&children"); collection.getStyleRules().add(pathSelector1); collection.getStyleRules().add(pathSelector2); collection.getStyleRules().add(pathSelector3); collection.getStyleRules().add(pathSelector4); collection.getStyleRules().add(pathSelector5); WeightedColumnDescriptor columnDescriptor1 = CoreCollectionsStylesFactory.eINSTANCE .createWeightedColumnDescriptor(); columnDescriptor1.setLabel("First Name"); columnDescriptor1.setPropertyName("column-descriptor"); columnDescriptor1.setWeight(100); WeightedColumnDescriptor columnDescriptor2 = CoreCollectionsStylesFactory.eINSTANCE .createWeightedColumnDescriptor(); columnDescriptor2.setLabel("Last Name"); columnDescriptor2.setPropertyName("column-descriptor"); columnDescriptor2.setWeight(100); collection.getStyleRules().add(columnDescriptor1); collection.getStyleRules().add(columnDescriptor2); EventHandler eventHandler = EDPHandlersFactory.eINSTANCE.createEventHandler(); Action action = EDPHandlersFactory.eINSTANCE.createAction(); action.setUri("platform:/plugin/org.eclipse.wazaabi.engine.swt.commons.addressbook/org.eclipse.wazaabi.engine.swt.commons.addressbook.handlers.MasterToDetailHandler"); PropertyChangedEvent ev = EDPEventsFactory.eINSTANCE.createPropertyChangedEvent(); ev.setPath("&selection"); eventHandler.getEvents().add(ev); eventHandler.getExecutables().add(action); collection.getHandlers().add(eventHandler); master.getChildren().add(collection); return master; } public static Container createPersonDetailUI() { Container personForm = CoreWidgetsFactory.eINSTANCE.createContainer(); GridDataRule gridData = SWTStylesFactory.eINSTANCE.createGridDataRule(); gridData.setPropertyName("layout-data"); gridData.setGrabExcessHorizontalSpace(true); gridData.setGrabExcessVerticalSpace(true); //gridData.setVerticalAlignement(GridDataAlignment.FILL); gridData.setHorizontalAlignement(GridDataAlignment.FILL); personForm.getStyleRules().add(gridData); GridLayoutRule grid = SWTStylesFactory.eINSTANCE.createGridLayoutRule(); grid.setPropertyName("layout"); grid.setNumColumns(2); grid.setHorizontalSpacing(0); grid.setVerticalSpacing(10); personForm.getStyleRules().add(grid); BooleanRule titleBorder = CoreStylesFactory.eINSTANCE.createBooleanRule(); titleBorder.setPropertyName("title-border"); titleBorder.setValue(true); personForm.getStyleRules().add(titleBorder); StringRule titleValue = CoreStylesFactory.eINSTANCE.createStringRule(); titleValue.setPropertyName(AbstractComponentEditPart.TITLE_VALUE_PROPERTY_NAME); titleValue.setValue("Person"); personForm.getStyleRules().add(titleValue); Label label1 = CoreWidgetsFactory.eINSTANCE.createLabel(); label1.setText("First name"); GridDataRule gridDataL1 = SWTStylesFactory.eINSTANCE.createGridDataRule(); gridDataL1.setPropertyName("layout-data"); gridDataL1.setVerticalAlignement(GridDataAlignment.CENTER); label1.getStyleRules().add(gridDataL1); personForm.getChildren().add(label1); TextComponent text1 = CoreWidgetsFactory.eINSTANCE.createTextComponent(); Binding bindingUi2m1 = EDPHandlersFactory.eINSTANCE.createBinding(); Event eventUi2m1 = EDPEventsFactory.eINSTANCE.createEvent(); eventUi2m1.setId("core:ui:text:modify"); bindingUi2m1.getEvents().add(eventUi2m1); StringParameter sourceUi2m1 = EDPHandlersFactory.eINSTANCE.createStringParameter(); sourceUi2m1.setName("source"); sourceUi2m1.setValue("@text"); bindingUi2m1.getParameters().add(sourceUi2m1); StringParameter targetUi2m1 = EDPHandlersFactory.eINSTANCE.createStringParameter(); targetUi2m1.setName("target"); targetUi2m1.setValue("$detailmodel/@firstName"); bindingUi2m1.getParameters().add(targetUi2m1); text1.getHandlers().add(bindingUi2m1); Binding bindingM2ui1 = EDPHandlersFactory.eINSTANCE.createBinding(); PropertyChangedEvent eventM2ui1 = EDPEventsFactory.eINSTANCE.createPropertyChangedEvent(); eventM2ui1.setPath("$detailmodel/@firstName"); bindingM2ui1.getEvents().add(eventM2ui1); Event eventM2uiRefresh1 = EDPEventsFactory.eINSTANCE.createEvent(); eventM2uiRefresh1.setId("core:ui:refresh"); bindingM2ui1.getEvents().add(eventM2uiRefresh1); StringParameter sourceM2ui1 = EDPHandlersFactory.eINSTANCE.createStringParameter(); sourceM2ui1.setName("source"); sourceM2ui1.setValue("$detailmodel/@firstName"); bindingM2ui1.getParameters().add(sourceM2ui1); StringParameter targetM2ui1 = EDPHandlersFactory.eINSTANCE.createStringParameter(); targetM2ui1.setName("target"); targetM2ui1.setValue("@text"); bindingM2ui1.getParameters().add(targetM2ui1); text1.getHandlers().add(bindingM2ui1); GridDataRule gridData1 = SWTStylesFactory.eINSTANCE.createGridDataRule(); gridData1.setPropertyName("layout-data"); gridData1.setGrabExcessHorizontalSpace(true); gridData1.setHorizontalAlignement(GridDataAlignment.FILL); //gridData1.setHorizontalSpan(1); text1.getStyleRules().add(gridData1); BooleanRule border1 = CoreStylesFactory.eINSTANCE.createBooleanRule(); border1.setPropertyName("border"); border1.setValue(true); text1.getStyleRules().add(border1); personForm.getChildren().add(text1); Label label2 = CoreWidgetsFactory.eINSTANCE.createLabel(); label2.setText("Last name"); GridDataRule gridDataL2 = SWTStylesFactory.eINSTANCE.createGridDataRule(); gridDataL2.setPropertyName("layout-data"); gridDataL2.setVerticalAlignement(GridDataAlignment.CENTER); label2.getStyleRules().add(gridDataL2); personForm.getChildren().add(label2); TextComponent text2 = CoreWidgetsFactory.eINSTANCE.createTextComponent(); Binding bindingUi2m2 = EDPHandlersFactory.eINSTANCE.createBinding(); Event eventUi2m2 = EDPEventsFactory.eINSTANCE.createEvent(); eventUi2m2.setId("core:ui:text:modify"); bindingUi2m2.getEvents().add(eventUi2m2); StringParameter sourceUi2m2 = EDPHandlersFactory.eINSTANCE.createStringParameter(); sourceUi2m2.setName("source"); sourceUi2m2.setValue("@text"); bindingUi2m2.getParameters().add(sourceUi2m2); StringParameter targetUi2m2 = EDPHandlersFactory.eINSTANCE.createStringParameter(); targetUi2m2.setName("target"); targetUi2m2.setValue("$detailmodel/@lastName"); bindingUi2m2.getParameters().add(targetUi2m2); text2.getHandlers().add(bindingUi2m2); Binding bindingM2ui2 = EDPHandlersFactory.eINSTANCE.createBinding(); PropertyChangedEvent eventM2ui2 = EDPEventsFactory.eINSTANCE.createPropertyChangedEvent(); eventM2ui2.setPath("$detailmodel/@lastName"); bindingM2ui2.getEvents().add(eventM2ui2); Event eventM2uiRefresh2 = EDPEventsFactory.eINSTANCE.createEvent(); eventM2uiRefresh2.setId("core:ui:refresh"); bindingM2ui2.getEvents().add(eventM2uiRefresh2); StringParameter sourceM2ui2 = EDPHandlersFactory.eINSTANCE.createStringParameter(); sourceM2ui2.setName("source"); sourceM2ui2.setValue("$detailmodel/@lastName"); bindingM2ui2.getParameters().add(sourceM2ui2); StringParameter targetM2ui2 = EDPHandlersFactory.eINSTANCE.createStringParameter(); targetM2ui2.setName("target"); targetM2ui2.setValue("@text"); bindingM2ui2.getParameters().add(targetM2ui2); text2.getHandlers().add(bindingM2ui2); GridDataRule gridData2 = SWTStylesFactory.eINSTANCE.createGridDataRule(); gridData2.setPropertyName("layout-data"); gridData2.setGrabExcessHorizontalSpace(true); gridData2.setHorizontalAlignement(GridDataAlignment.FILL); //gridData2.setHorizontalSpan(1); text2.getStyleRules().add(gridData2); BooleanRule border2 = CoreStylesFactory.eINSTANCE.createBooleanRule(); border2.setPropertyName("border"); border2.setValue(true); text2.getStyleRules().add(border2); personForm.getChildren().add(text2); return personForm; } public static Container createAddressDetailUI() { Container addressForm = CoreWidgetsFactory.eINSTANCE.createContainer(); GridDataRule gridData = SWTStylesFactory.eINSTANCE.createGridDataRule(); gridData.setPropertyName("layout-data"); gridData.setGrabExcessHorizontalSpace(true); gridData.setGrabExcessVerticalSpace(true); //gridData.setVerticalAlignement(GridDataAlignment.FILL); gridData.setHorizontalAlignement(GridDataAlignment.FILL); addressForm.getStyleRules().add(gridData); GridLayoutRule grid = SWTStylesFactory.eINSTANCE.createGridLayoutRule(); grid.setPropertyName("layout"); grid.setNumColumns(2); grid.setHorizontalSpacing(0); grid.setVerticalSpacing(10); addressForm.getStyleRules().add(grid); BooleanRule titleBorder = CoreStylesFactory.eINSTANCE.createBooleanRule(); titleBorder.setPropertyName("title-border"); titleBorder.setValue(true); addressForm.getStyleRules().add(titleBorder); StringRule titleValue = CoreStylesFactory.eINSTANCE.createStringRule(); titleValue.setPropertyName(AbstractComponentEditPart.TITLE_VALUE_PROPERTY_NAME); titleValue.setValue("Address"); addressForm.getStyleRules().add(titleValue); Label label1 = CoreWidgetsFactory.eINSTANCE.createLabel(); label1.setText("Street"); GridDataRule gridDataL1 = SWTStylesFactory.eINSTANCE.createGridDataRule(); gridDataL1.setPropertyName("layout-data"); gridDataL1.setVerticalAlignement(GridDataAlignment.CENTER); label1.getStyleRules().add(gridDataL1); addressForm.getChildren().add(label1); TextComponent text1 = CoreWidgetsFactory.eINSTANCE.createTextComponent(); Binding bindingUi2m1 = EDPHandlersFactory.eINSTANCE.createBinding(); Event eventUi2m1 = EDPEventsFactory.eINSTANCE.createEvent(); eventUi2m1.setId("core:ui:text:modify"); bindingUi2m1.getEvents().add(eventUi2m1); StringParameter sourceUi2m1 = EDPHandlersFactory.eINSTANCE.createStringParameter(); sourceUi2m1.setName("source"); sourceUi2m1.setValue("@text"); bindingUi2m1.getParameters().add(sourceUi2m1); StringParameter targetUi2m1 = EDPHandlersFactory.eINSTANCE.createStringParameter(); targetUi2m1.setName("target"); targetUi2m1.setValue("$detailmodel/@street"); bindingUi2m1.getParameters().add(targetUi2m1); text1.getHandlers().add(bindingUi2m1); Binding bindingM2ui1 = EDPHandlersFactory.eINSTANCE.createBinding(); PropertyChangedEvent eventM2ui1 = EDPEventsFactory.eINSTANCE.createPropertyChangedEvent(); eventM2ui1.setPath("$detailmodel/@street"); bindingM2ui1.getEvents().add(eventM2ui1); Event eventM2uiRefresh1 = EDPEventsFactory.eINSTANCE.createEvent(); eventM2uiRefresh1.setId("core:ui:refresh"); bindingM2ui1.getEvents().add(eventM2uiRefresh1); StringParameter sourceM2ui1 = EDPHandlersFactory.eINSTANCE.createStringParameter(); sourceM2ui1.setName("source"); sourceM2ui1.setValue("$detailmodel/@street"); bindingM2ui1.getParameters().add(sourceM2ui1); StringParameter targetM2ui1 = EDPHandlersFactory.eINSTANCE.createStringParameter(); targetM2ui1.setName("target"); targetM2ui1.setValue("@text"); bindingM2ui1.getParameters().add(targetM2ui1); text1.getHandlers().add(bindingM2ui1); GridDataRule gridData1 = SWTStylesFactory.eINSTANCE.createGridDataRule(); gridData1.setPropertyName("layout-data"); gridData1.setGrabExcessHorizontalSpace(true); gridData1.setHorizontalAlignement(GridDataAlignment.FILL); gridData1.setHorizontalSpan(1); text1.getStyleRules().add(gridData1); BooleanRule border1 = CoreStylesFactory.eINSTANCE.createBooleanRule(); border1.setPropertyName("border"); border1.setValue(true); text1.getStyleRules().add(border1); addressForm.getChildren().add(text1); Label label2 = CoreWidgetsFactory.eINSTANCE.createLabel(); label2.setText("City"); GridDataRule gridDataL2 = SWTStylesFactory.eINSTANCE.createGridDataRule(); gridDataL2.setPropertyName("layout-data"); gridDataL2.setVerticalAlignement(GridDataAlignment.CENTER); label2.getStyleRules().add(gridDataL2); addressForm.getChildren().add(label2); TextComponent text2 = CoreWidgetsFactory.eINSTANCE.createTextComponent(); Binding bindingUi2m2 = EDPHandlersFactory.eINSTANCE.createBinding(); Event eventUi2m2 = EDPEventsFactory.eINSTANCE.createEvent(); eventUi2m2.setId("core:ui:text:modify"); bindingUi2m2.getEvents().add(eventUi2m2); StringParameter sourceUi2m2 = EDPHandlersFactory.eINSTANCE.createStringParameter(); sourceUi2m2.setName("source"); sourceUi2m2.setValue("@text"); bindingUi2m2.getParameters().add(sourceUi2m2); StringParameter targetUi2m2 = EDPHandlersFactory.eINSTANCE.createStringParameter(); targetUi2m2.setName("target"); targetUi2m2.setValue("$detailmodel/@city"); bindingUi2m2.getParameters().add(targetUi2m2); text2.getHandlers().add(bindingUi2m2); Binding bindingM2ui2 = EDPHandlersFactory.eINSTANCE.createBinding(); PropertyChangedEvent eventM2ui2 = EDPEventsFactory.eINSTANCE.createPropertyChangedEvent(); eventM2ui2.setPath("$detailmodel/@city"); bindingM2ui2.getEvents().add(eventM2ui2); Event eventM2uiRefresh2 = EDPEventsFactory.eINSTANCE.createEvent(); eventM2uiRefresh2.setId("core:ui:refresh"); bindingM2ui2.getEvents().add(eventM2uiRefresh2); StringParameter sourceM2ui2 = EDPHandlersFactory.eINSTANCE.createStringParameter(); sourceM2ui2.setName("source"); sourceM2ui2.setValue("$detailmodel/@city"); bindingM2ui2.getParameters().add(sourceM2ui2); StringParameter targetM2ui2 = EDPHandlersFactory.eINSTANCE.createStringParameter(); targetM2ui2.setName("target"); targetM2ui2.setValue("@text"); bindingM2ui2.getParameters().add(targetM2ui2); text2.getHandlers().add(bindingM2ui2); GridDataRule gridData2 = SWTStylesFactory.eINSTANCE.createGridDataRule(); gridData2.setPropertyName("layout-data"); gridData2.setGrabExcessHorizontalSpace(true); gridData2.setHorizontalAlignement(GridDataAlignment.FILL); gridData2.setHorizontalSpan(1); text2.getStyleRules().add(gridData2); BooleanRule border2 = CoreStylesFactory.eINSTANCE.createBooleanRule(); border2.setPropertyName("border"); border2.setValue(true); text2.getStyleRules().add(border2); addressForm.getChildren().add(text2); return addressForm; } public static Container createEmptyDetailUI() { Container detail = CoreWidgetsFactory.eINSTANCE.createContainer(); detail.setId("detailContainer"); GridLayoutRule grid = SWTStylesFactory.eINSTANCE.createGridLayoutRule(); grid.setPropertyName("layout"); detail.getStyleRules().add(grid); // ColorRule color = CoreStylesFactory.eINSTANCE.createColorRule(); // color.setPropertyName("background-color"); // color.setRed(255); // detail.getStyleRules().add(color); GridDataRule gridData = SWTStylesFactory.eINSTANCE.createGridDataRule(); gridData.setPropertyName("layout-data"); gridData.setGrabExcessHorizontalSpace(true); gridData.setGrabExcessVerticalSpace(true); gridData.setVerticalAlignement(GridDataAlignment.FILL); gridData.setHorizontalAlignement(GridDataAlignment.FILL); detail.getStyleRules().add(gridData); return detail; } }