diff options
author | Thomas Schindl | 2010-12-23 20:50:40 +0000 |
---|---|---|
committer | Thomas Schindl | 2010-12-23 20:50:40 +0000 |
commit | 5be56acdce001f8f29cb42d6c32c3b0c306e2ec4 (patch) | |
tree | f585b10f3421e2a929e6c1087e606d9f41f82445 | |
parent | 11a2a6d5a052cac14f79e163747f3714abbcfab4 (diff) | |
download | org.eclipse.e4.tools-5be56acdce001f8f29cb42d6c32c3b0c306e2ec4.tar.gz org.eclipse.e4.tools-5be56acdce001f8f29cb42d6c32c3b0c306e2ec4.tar.xz org.eclipse.e4.tools-5be56acdce001f8f29cb42d6c32c3b0c306e2ec4.zip |
Bug 325864 - [ModelTooling] Add support for MArea
7 files changed, 510 insertions, 3 deletions
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java index 996576d9..db5e2faf 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java @@ -517,6 +517,22 @@ public class Messages extends NLS { public static String VRootBindingContexts_TreeLabelDescription; public static String VRootBindingContexts_Contexts; + public static String AreaEditor_Label; + public static String AreaEditor_Description; + public static String AreaEditor_Orientation; + public static String AreaEditor_Horizontal; + public static String AreaEditor_SelectedElement; + public static String AreaEditor_ContainerData; + public static String AreaEditor_Controls; + public static String AreaEditor_Vertical; + public static String AreaEditor_LabelLabel; + public static String AreaEditor_Tooltip; + public static String AreaEditor_IconURI; + + public static String AreaIconDialogEditor_ShellTitle; + public static String AreaIconDialogEditor_DialogTitle; + public static String AreaIconDialogEditor_DialogMessage; + static { NLS.initializeMessages(Messages.class.getName(), Messages.class); } diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties index c185ac9c..9d41de56 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties @@ -509,4 +509,20 @@ CommandToStringConverter_None=<None> VRootBindingContexts_AddContext=Add Binding Context VRootBindingContexts_TreeLabel=Binding Context VRootBindingContexts_TreeLabelDescription=Binding Context Bla Bla Bla -VRootBindingContexts_Contexts=Binding Contexts
\ No newline at end of file +VRootBindingContexts_Contexts=Binding Contexts + +AreaEditor_Label=Area +AreaEditor_Description=Area Bla Bla Bla +AreaEditor_Orientation=Orientation +AreaEditor_Horizontal=Horizontal +AreaEditor_SelectedElement=Selected Element +AreaEditor_ContainerData=Container Data +AreaEditor_Controls=Controls +AreaEditor_Vertical=Vertical +AreaEditor_LabelLabel=Label +AreaEditor_Tooltip=Tooltip +AreaEditor_IconURI=Icon URI + +AreaIconDialogEditor_ShellTitle=Area Icon Search +AreaIconDialogEditor_DialogTitle=Area Icon Search +AreaIconDialogEditor_DialogMessage=Search for GIF, PNG and JPG icons in the current project
\ No newline at end of file diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java index efe9305e..df16938b 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java @@ -54,6 +54,7 @@ import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor; import org.eclipse.e4.tools.emf.ui.internal.ShadowComposite; import org.eclipse.e4.tools.emf.ui.internal.common.component.AddonsEditor; import org.eclipse.e4.tools.emf.ui.internal.common.component.ApplicationEditor; +import org.eclipse.e4.tools.emf.ui.internal.common.component.AreaEditor; import org.eclipse.e4.tools.emf.ui.internal.common.component.BindingContextEditor; import org.eclipse.e4.tools.emf.ui.internal.common.component.BindingTableEditor; import org.eclipse.e4.tools.emf.ui.internal.common.component.CategoryEditor; @@ -654,6 +655,7 @@ public class ModelEditor { registerEditor(BasicPackageImpl.Literals.WINDOW, new WindowEditor(modelProvider.getEditingDomain(), this, project)); registerEditor(BasicPackageImpl.Literals.TRIMMED_WINDOW, new TrimmedWindowEditor(modelProvider.getEditingDomain(), this, project)); registerEditor(BasicPackageImpl.Literals.PART_SASH_CONTAINER, new PartSashContainerEditor(modelProvider.getEditingDomain(), this)); + registerEditor(AdvancedPackageImpl.Literals.AREA, new AreaEditor(modelProvider.getEditingDomain(), this, project)); registerEditor(BasicPackageImpl.Literals.PART_STACK, new PartStackEditor(modelProvider.getEditingDomain(), this)); registerEditor(BasicPackageImpl.Literals.INPUT_PART, new InputPartEditor(modelProvider.getEditingDomain(), this, project)); registerEditor(BasicPackageImpl.Literals.TRIM_BAR, new TrimBarEditor(modelProvider.getEditingDomain(), this)); diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/AreaEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/AreaEditor.java new file mode 100644 index 00000000..b0227e57 --- /dev/null +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/AreaEditor.java @@ -0,0 +1,432 @@ +/******************************************************************************* + * Copyright (c) 2010 BestSolution.at and others. + * 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: + * Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation + ******************************************************************************/ +package org.eclipse.e4.tools.emf.ui.internal.common.component; + +import java.net.MalformedURLException; +import java.net.URL; +import java.util.List; +import org.eclipse.core.databinding.observable.list.IObservableList; +import org.eclipse.core.databinding.observable.value.WritableValue; +import org.eclipse.core.databinding.property.list.IListProperty; +import org.eclipse.core.resources.IProject; +import org.eclipse.e4.tools.emf.ui.common.EStackLayout; +import org.eclipse.e4.tools.emf.ui.common.ImageTooltip; +import org.eclipse.e4.tools.emf.ui.common.Util; +import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor; +import org.eclipse.e4.tools.emf.ui.internal.Messages; +import org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider; +import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor; +import org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.AreaIconDialogEditor; +import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl; +import org.eclipse.e4.ui.model.application.ui.MElementContainer; +import org.eclipse.e4.ui.model.application.ui.MUIElement; +import org.eclipse.e4.ui.model.application.ui.MUILabel; +import org.eclipse.e4.ui.model.application.ui.advanced.MArea; +import org.eclipse.e4.ui.model.application.ui.advanced.impl.AdvancedPackageImpl; +import org.eclipse.e4.ui.model.application.ui.basic.MPart; +import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer; +import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl; +import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl; +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.databinding.EMFDataBindingContext; +import org.eclipse.emf.databinding.EMFProperties; +import org.eclipse.emf.databinding.FeaturePath; +import org.eclipse.emf.databinding.IEMFListProperty; +import org.eclipse.emf.databinding.edit.EMFEditProperties; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.edit.command.AddCommand; +import org.eclipse.emf.edit.command.RemoveCommand; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.jface.databinding.swt.IWidgetValueProperty; +import org.eclipse.jface.databinding.swt.WidgetProperties; +import org.eclipse.jface.databinding.viewers.IViewerValueProperty; +import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; +import org.eclipse.jface.databinding.viewers.ViewerProperties; +import org.eclipse.jface.viewers.ArrayContentProvider; +import org.eclipse.jface.viewers.ComboViewer; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; + +public class AreaEditor extends AbstractComponentEditor { + + private Composite composite; + private EMFDataBindingContext context; + + private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN); + private EStackLayout stackLayout; + private IProject project; + + public AreaEditor(EditingDomain editingDomain, ModelEditor editor, IProject project) { + super(editingDomain, editor); + this.project = project; + } + + @Override + public Image getImage(Object element, Display display) { + boolean horizontal = ((MPartSashContainer) element).isHorizontal(); + + if (!horizontal) { + MUIElement uiElement = (MUIElement) element; + if (uiElement.isToBeRendered() && uiElement.isVisible()) { + try { + return loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.tools.emf.ui/icons/full/modelelements/PartSashContainer_vertical.gif")); //$NON-NLS-1$ + } catch (MalformedURLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } else { + try { + return loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.tools.emf.ui/icons/full/modelelements/tbr/PartSashContainer_vertical.gif")); //$NON-NLS-1$ + } catch (MalformedURLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + + if (horizontal) { + MUIElement uiElement = (MUIElement) element; + if (uiElement.isToBeRendered() && uiElement.isVisible()) { + try { + return loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.tools.emf.ui/icons/full/modelelements/PartSashContainer.gif")); //$NON-NLS-1$ + } catch (MalformedURLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } else { + try { + return loadSharedImage(display, new URL("platform:/plugin/org.eclipse.e4.tools.emf.ui/icons/full/modelelements/tbr/PartSashContainer.gif")); //$NON-NLS-1$ + } catch (MalformedURLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + return null; + } + + @Override + public String getLabel(Object element) { + return Messages.AreaEditor_Label; + } + + @Override + public String getDescription(Object element) { + return Messages.AreaEditor_Description; + } + + @Override + public Composite getEditor(Composite parent, Object object) { + if (composite == null) { + context = new EMFDataBindingContext(); + if (getEditor().isModelFragment()) { + composite = new Composite(parent, SWT.NONE); + stackLayout = new EStackLayout(); + composite.setLayout(stackLayout); + createForm(composite, context, getMaster(), false); + createForm(composite, context, getMaster(), true); + } else { + composite = createForm(parent, context, getMaster(), false); + } + } + + if (getEditor().isModelFragment()) { + Control topControl; + if (Util.isImport((EObject) object)) { + topControl = composite.getChildren()[1]; + } else { + topControl = composite.getChildren()[0]; + } + + if (stackLayout.topControl != topControl) { + stackLayout.topControl = topControl; + composite.layout(true, true); + } + } + + getMaster().setValue(object); + return composite; + } + + private Composite createForm(Composite parent, final EMFDataBindingContext context, WritableValue master, boolean isImport) { + parent = new Composite(parent, SWT.NONE); + GridLayout gl = new GridLayout(3, false); + gl.horizontalSpacing = 10; + parent.setLayout(gl); + + if (getEditor().isShowXMIId() || getEditor().isLiveModel()) { + ControlFactory.createXMIId(parent, this); + } + + IWidgetValueProperty textProp = WidgetProperties.text(SWT.Modify); + + if (isImport) { + ControlFactory.createFindImport(parent, this, context); + return parent; + } + + // ------------------------------------------------------------ + { + Label l = new Label(parent, SWT.NONE); + l.setText(Messages.ModelTooling_Common_Id); + l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); + + Text t = new Text(parent, SWT.BORDER); + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.horizontalSpan = 2; + t.setLayoutData(gd); + context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(getMaster())); + } + + ControlFactory.createTextField(parent, Messages.AreaEditor_LabelLabel, master, context, textProp, EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__LABEL)); + ControlFactory.createTextField(parent, Messages.ModelTooling_UIElement_AccessibilityPhrase, getMaster(), context, textProp, EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__ACCESSIBILITY_PHRASE)); + ControlFactory.createTextField(parent, Messages.AreaEditor_Tooltip, master, context, textProp, EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__TOOLTIP)); + + // ------------------------------------------------------------ + { + Label l = new Label(parent, SWT.NONE); + l.setText(Messages.AreaEditor_IconURI); + l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); + + final Text t = new Text(parent, SWT.BORDER); + t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__ICON_URI).observeDetail(master)); + + new ImageTooltip(t) { + + @Override + protected URI getImageURI() { + MUILabel part = (MUILabel) getMaster().getValue(); + String uri = part.getIconURI(); + if (uri == null || uri.trim().length() == 0) { + return null; + } + return URI.createURI(part.getIconURI()); + } + }; + + final Button b = new Button(parent, SWT.PUSH | SWT.FLAT); + b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false)); + b.setImage(getImage(t.getDisplay(), SEARCH_IMAGE)); + b.setText(Messages.ModelTooling_Common_FindEllipsis); + b.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + AreaIconDialogEditor dialog = new AreaIconDialogEditor(b.getShell(), project, getEditingDomain(), (MPart) getMaster().getValue()); + dialog.open(); + } + }); + } + + // ------------------------------------------------------------ + { + Label l = new Label(parent, SWT.NONE); + l.setText(Messages.AreaEditor_Orientation); + l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); + + ComboViewer viewer = new ComboViewer(parent); + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.horizontalSpan = 2; + viewer.getControl().setLayoutData(gd); + viewer.setContentProvider(new ArrayContentProvider()); + viewer.setLabelProvider(new LabelProvider() { + @Override + public String getText(Object element) { + return ((Boolean) element).booleanValue() ? Messages.AreaEditor_Horizontal : Messages.AreaEditor_Vertical; + } + }); + viewer.setInput(new Boolean[] { Boolean.TRUE, Boolean.FALSE }); + IViewerValueProperty vProp = ViewerProperties.singleSelection(); + context.bindValue(vProp.observe(viewer), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.GENERIC_TILE__HORIZONTAL).observeDetail(getMaster())); + } + + ControlFactory.createSelectedElement(parent, this, context, Messages.AreaEditor_SelectedElement); + + // ------------------------------------------------------------ + { + Label l = new Label(parent, SWT.NONE); + l.setText(Messages.AreaEditor_ContainerData); + l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); + + Text t = new Text(parent, SWT.BORDER); + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.horizontalSpan = 2; + t.setLayoutData(gd); + context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__CONTAINER_DATA).observeDetail(master)); + } + + { + Label l = new Label(parent, SWT.NONE); + l.setText(Messages.AreaEditor_Controls); + l.setLayoutData(new GridData(GridData.END, GridData.BEGINNING, false, false)); + + final TableViewer viewer = new TableViewer(parent); + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.heightHint = 200; + viewer.getControl().setLayoutData(gd); + ObservableListContentProvider cp = new ObservableListContentProvider(); + viewer.setContentProvider(cp); + viewer.setLabelProvider(new ComponentLabelProvider(getEditor())); + + IEMFListProperty prop = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN); + viewer.setInput(prop.observeDetail(getMaster())); + + Composite buttonComp = new Composite(parent, SWT.NONE); + buttonComp.setLayoutData(new GridData(GridData.FILL, GridData.END, false, false)); + gl = new GridLayout(2, false); + gl.marginLeft = 0; + gl.marginRight = 0; + gl.marginWidth = 0; + gl.marginHeight = 0; + buttonComp.setLayout(gl); + + Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); + b.setText(Messages.ModelTooling_Common_Up); + b.setImage(getImage(b.getDisplay(), ARROW_UP)); + b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1)); + b.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (!viewer.getSelection().isEmpty()) { + IStructuredSelection s = (IStructuredSelection) viewer.getSelection(); + if (s.size() == 1) { + Object obj = s.getFirstElement(); + MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue(); + int idx = container.getChildren().indexOf(obj) - 1; + if (idx >= 0) { + if (Util.moveElementByIndex(getEditingDomain(), (MUIElement) obj, getEditor().isLiveModel(), idx)) { + viewer.setSelection(new StructuredSelection(obj)); + } + } + + } + } + } + }); + + b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); + b.setText(Messages.ModelTooling_Common_Down); + b.setImage(getImage(b.getDisplay(), ARROW_DOWN)); + b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1)); + b.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (!viewer.getSelection().isEmpty()) { + IStructuredSelection s = (IStructuredSelection) viewer.getSelection(); + if (s.size() == 1) { + Object obj = s.getFirstElement(); + MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue(); + int idx = container.getChildren().indexOf(obj) + 1; + if (idx < container.getChildren().size()) { + if (Util.moveElementByIndex(getEditingDomain(), (MUIElement) obj, getEditor().isLiveModel(), idx)) { + viewer.setSelection(new StructuredSelection(obj)); + } + } + + } + } + } + }); + + final ComboViewer childrenDropDown = new ComboViewer(buttonComp); + childrenDropDown.getControl().setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false)); + childrenDropDown.setContentProvider(new ArrayContentProvider()); + childrenDropDown.setLabelProvider(new LabelProvider() { + @Override + public String getText(Object element) { + EClass eclass = (EClass) element; + return eclass.getName(); + } + }); + childrenDropDown.setInput(new EClass[] { BasicPackageImpl.Literals.PART_SASH_CONTAINER, BasicPackageImpl.Literals.PART_STACK, BasicPackageImpl.Literals.PART, BasicPackageImpl.Literals.INPUT_PART, AdvancedPackageImpl.Literals.AREA, AdvancedPackageImpl.Literals.PLACEHOLDER }); + childrenDropDown.setSelection(new StructuredSelection(BasicPackageImpl.Literals.PART_SASH_CONTAINER)); + + b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); + b.setImage(getImage(b.getDisplay(), TABLE_ADD_IMAGE)); + b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false)); + b.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (!childrenDropDown.getSelection().isEmpty()) { + EClass eClass = (EClass) ((IStructuredSelection) childrenDropDown.getSelection()).getFirstElement(); + EObject eObject = EcoreUtil.create(eClass); + setElementId(eObject); + + Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, eObject); + + if (cmd.canExecute()) { + getEditingDomain().getCommandStack().execute(cmd); + getEditor().setSelection(eObject); + } + } + } + }); + + b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); + b.setText(Messages.ModelTooling_Common_Remove); + b.setImage(getImage(b.getDisplay(), TABLE_DELETE_IMAGE)); + b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1)); + b.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (!viewer.getSelection().isEmpty()) { + List<?> elements = ((IStructuredSelection) viewer.getSelection()).toList(); + + Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, elements); + if (cmd.canExecute()) { + getEditingDomain().getCommandStack().execute(cmd); + } + } + } + }); + } + + ControlFactory.createCheckBox(parent, Messages.ModelTooling_UIElement_ToBeRendered, getMaster(), context, WidgetProperties.selection(), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__TO_BE_RENDERED)); + ControlFactory.createCheckBox(parent, Messages.ModelTooling_UIElement_Visible, getMaster(), context, WidgetProperties.selection(), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__VISIBLE)); + + ControlFactory.createStringListWidget(parent, this, Messages.ModelTooling_ApplicationElement_Tags, ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__TAGS, VERTICAL_LIST_WIDGET_INDENT); + + return parent; + } + + @Override + public IObservableList getChildList(Object element) { + return ELEMENT_CONTAINER__CHILDREN.observe(element); + } + + @Override + public String getDetailLabel(Object element) { + MArea o = (MArea) element; + return o.getLabel(); + } + + @Override + public FeaturePath[] getLabelProperties() { + return new FeaturePath[] { FeaturePath.fromList(UiPackageImpl.Literals.UI_LABEL__LABEL), FeaturePath.fromList(UiPackageImpl.Literals.GENERIC_TILE__HORIZONTAL), FeaturePath.fromList(UiPackageImpl.Literals.UI_ELEMENT__TO_BE_RENDERED) }; + } +} diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartSashContainerEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartSashContainerEditor.java index fb7562e8..9835cbce 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartSashContainerEditor.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartSashContainerEditor.java @@ -316,7 +316,7 @@ public class PartSashContainerEditor extends AbstractComponentEditor { return eclass.getName(); } }); - childrenDropDown.setInput(new EClass[] { BasicPackageImpl.Literals.PART_SASH_CONTAINER, BasicPackageImpl.Literals.PART_STACK, BasicPackageImpl.Literals.PART, BasicPackageImpl.Literals.INPUT_PART, AdvancedPackageImpl.Literals.PLACEHOLDER }); + childrenDropDown.setInput(new EClass[] { BasicPackageImpl.Literals.PART_SASH_CONTAINER, BasicPackageImpl.Literals.PART_STACK, BasicPackageImpl.Literals.PART, BasicPackageImpl.Literals.INPUT_PART, AdvancedPackageImpl.Literals.AREA, AdvancedPackageImpl.Literals.PLACEHOLDER }); childrenDropDown.setSelection(new StructuredSelection(BasicPackageImpl.Literals.PART_SASH_CONTAINER)); b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/AreaIconDialogEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/AreaIconDialogEditor.java new file mode 100644 index 00000000..e918099a --- /dev/null +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/dialogs/AreaIconDialogEditor.java @@ -0,0 +1,41 @@ +/******************************************************************************* + * Copyright (c) 2010 BestSolution.at and others. + * 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: + * Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation + ******************************************************************************/ +package org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs; + +import org.eclipse.core.resources.IProject; +import org.eclipse.e4.tools.emf.ui.internal.Messages; +import org.eclipse.e4.ui.model.application.ui.basic.MPart; +import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.swt.widgets.Shell; + +public class AreaIconDialogEditor extends AbstractIconDialog { + + public AreaIconDialogEditor(Shell parentShell, IProject project, EditingDomain editingDomain, MPart element) { + super(parentShell, project, editingDomain, element, UiPackageImpl.Literals.UI_LABEL__ICON_URI); + } + + @Override + protected String getShellTitle() { + return Messages.AreaIconDialogEditor_ShellTitle; + } + + @Override + protected String getDialogTitle() { + return Messages.AreaIconDialogEditor_DialogTitle; + } + + @Override + protected String getDialogMessage() { + return Messages.AreaIconDialogEditor_DialogMessage; + } + +} diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowControlEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowControlEditor.java index 4f4e3b97..dd353195 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowControlEditor.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowControlEditor.java @@ -176,7 +176,7 @@ public class VWindowControlEditor extends AbstractComponentEditor { return eclass.getName(); } }); - childrenDropDown.setInput(new EClass[] { AdvancedPackageImpl.Literals.PERSPECTIVE_STACK, BasicPackageImpl.Literals.PART_SASH_CONTAINER, BasicPackageImpl.Literals.PART_STACK, BasicPackageImpl.Literals.PART, BasicPackageImpl.Literals.INPUT_PART }); + childrenDropDown.setInput(new EClass[] { AdvancedPackageImpl.Literals.PERSPECTIVE_STACK, BasicPackageImpl.Literals.PART_SASH_CONTAINER, BasicPackageImpl.Literals.PART_STACK, BasicPackageImpl.Literals.PART, BasicPackageImpl.Literals.INPUT_PART, AdvancedPackageImpl.Literals.AREA }); childrenDropDown.setSelection(new StructuredSelection(AdvancedPackageImpl.Literals.PERSPECTIVE_STACK)); b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); |