added the ability to choose between a generic "Add..." button, and specific buttons
diff --git a/modeling/plugins/org.eclipse.pde.ds.ui/src/org/eclipse/pde/ds/ui/internal/editor/PropertiesPage.java b/modeling/plugins/org.eclipse.pde.ds.ui/src/org/eclipse/pde/ds/ui/internal/editor/PropertiesPage.java
index be07060..8a1451b 100644
--- a/modeling/plugins/org.eclipse.pde.ds.ui/src/org/eclipse/pde/ds/ui/internal/editor/PropertiesPage.java
+++ b/modeling/plugins/org.eclipse.pde.ds.ui/src/org/eclipse/pde/ds/ui/internal/editor/PropertiesPage.java
@@ -8,17 +8,20 @@
* Contributors:
* Anyware Technologies - initial API and implementation
*
- * $Id: PropertiesPage.java,v 1.10 2009/07/07 09:36:47 bcabe Exp $
+ * $Id: PropertiesPage.java,v 1.11 2009/07/07 21:52:28 bcabe Exp $
*/
package org.eclipse.pde.ds.ui.internal.editor;
import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.emf.common.command.Command;
-import org.eclipse.emf.edit.command.DeleteCommand;
+import org.eclipse.emf.ecore.util.FeatureMapUtil;
+import org.eclipse.emf.edit.command.*;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.IWrapperItemProvider;
import org.eclipse.jface.databinding.viewers.ViewerProperties;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.*;
+import org.eclipse.pde.ds.scr.*;
import org.eclipse.pde.ds.ui.internal.editor.masterdetail.PropertiesMasterDetail;
import org.eclipse.pde.emfforms.editor.AbstractEmfFormPage;
import org.eclipse.pde.emfforms.editor.EmfFormEditor;
@@ -41,37 +44,40 @@
bindingContext.bindValue(ViewerProperties.input().observe(_propertiesMasterDetail.getTreeViewer()), getEditor().getInputObservable());
- /*
- _propertiesMasterDetail.getAddButtonProperty().addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- Object sel = ((IStructuredSelection) _propertiesMasterDetail.getTreeViewer().getSelection()).getFirstElement();
- int idx = CommandParameter.NO_INDEX;
- if (sel != null) {
- Object unwrappedElement = AdapterFactoryEditingDomain.unwrap(sel);
- idx = ((Component) getObservedValue().getValue()).getAllProperties().indexOf(unwrappedElement);
- }
+ _propertiesMasterDetail.getAddButtonProperty().addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ Object sel = ((IStructuredSelection) _propertiesMasterDetail.getTreeViewer().getSelection()).getFirstElement();
+ int idx = CommandParameter.NO_INDEX;
+ if (sel != null) {
+ Object unwrappedElement = ((IWrapperItemProvider) sel).getValue();
+ idx = ((Component) getEditor().getInputObservable().getValue()).getAllProperties().indexOf(unwrappedElement);
+ }
- Property p = ScrFactory.eINSTANCE.createProperty();
- p.setName("property" + System.currentTimeMillis()); //$NON-NLS-1$
- Entry entryP = FeatureMapUtil.createEntry(ScrPackage.Literals.COMPONENT__PROPERTY, p);
- Command command = AddCommand.create(editingDomain, getObservedValue().getValue(), null, entryP, idx);
- editingDomain.getCommandStack().execute(command);
+ Property p = ScrFactory.eINSTANCE.createProperty();
+ Command command = AddCommand.create(editingDomain, getEditor().getInputObservable().getValue(), ScrPackage.Literals.COMPONENT__ALL_PROPERTIES, FeatureMapUtil.createEntry(ScrPackage.Literals.COMPONENT__PROPERTY, p), idx);
+ editingDomain.getCommandStack().execute(command);
- getViewer().setSelection(new StructuredSelection(AdapterFactoryEditingDomain.getWrapper(p, editingDomain)), true);
- }
- });
+ getViewer().setSelection(new StructuredSelection(AdapterFactoryEditingDomain.getWrapper(p, editingDomain)), true);
+ }
+ });
- _propertiesMasterDetail.getAddButtonProperties().addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- Properties p = ScrFactory.eINSTANCE.createProperties();
- p.setEntry("properties" + System.currentTimeMillis()); //$NON-NLS-1$
- Command command = AddCommand.create(editingDomain, getObservedValue().getValue(), null, FeatureMapUtil.createEntry(ScrPackage.Literals.COMPONENT__PROPERTIES, p), 0);
- editingDomain.getCommandStack().execute(command);
+ _propertiesMasterDetail.getAddButtonProperties().addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ Object sel = ((IStructuredSelection) _propertiesMasterDetail.getTreeViewer().getSelection()).getFirstElement();
+ int idx = CommandParameter.NO_INDEX;
+ if (sel != null) {
+ Object unwrappedElement = ((IWrapperItemProvider) sel).getValue();
+ idx = ((Component) getEditor().getInputObservable().getValue()).getAllProperties().indexOf(unwrappedElement);
+ }
- getViewer().setSelection(new StructuredSelection(AdapterFactoryEditingDomain.getWrapper(p, editingDomain)), true);
- }
- });
- */
+ Properties p = ScrFactory.eINSTANCE.createProperties();
+ Command command = AddCommand.create(editingDomain, getEditor().getInputObservable().getValue(), ScrPackage.Literals.COMPONENT__ALL_PROPERTIES, FeatureMapUtil.createEntry(ScrPackage.Literals.COMPONENT__PROPERTIES, p), idx);
+ editingDomain.getCommandStack().execute(command);
+
+ getViewer().setSelection(new StructuredSelection(AdapterFactoryEditingDomain.getWrapper(p, editingDomain)), true);
+ }
+ });
+
_propertiesMasterDetail.getRemoveButton().addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
Object sel = ((IStructuredSelection) _propertiesMasterDetail.getTreeViewer().getSelection()).getFirstElement();
diff --git a/modeling/plugins/org.eclipse.pde.ds.ui/src/org/eclipse/pde/ds/ui/internal/editor/ServicesPage.java b/modeling/plugins/org.eclipse.pde.ds.ui/src/org/eclipse/pde/ds/ui/internal/editor/ServicesPage.java
index 9ba91e6..563f447 100644
--- a/modeling/plugins/org.eclipse.pde.ds.ui/src/org/eclipse/pde/ds/ui/internal/editor/ServicesPage.java
+++ b/modeling/plugins/org.eclipse.pde.ds.ui/src/org/eclipse/pde/ds/ui/internal/editor/ServicesPage.java
@@ -8,16 +8,18 @@
* Contributors:
* Anyware Technologies - initial API and implementation
*
- * $Id: ServicesPage.java,v 1.2 2009/07/07 09:36:47 bcabe Exp $
+ * $Id: ServicesPage.java,v 1.3 2009/07/07 21:52:28 bcabe Exp $
*/
package org.eclipse.pde.ds.ui.internal.editor;
import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.emf.common.command.Command;
-import org.eclipse.emf.edit.command.DeleteCommand;
+import org.eclipse.emf.edit.command.*;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.jface.databinding.viewers.ViewerProperties;
import org.eclipse.jface.viewers.*;
+import org.eclipse.pde.ds.scr.*;
import org.eclipse.pde.ds.ui.internal.editor.masterdetail.ServicesMasterDetail;
import org.eclipse.pde.emfforms.editor.AbstractEmfFormPage;
import org.eclipse.pde.emfforms.editor.EmfFormEditor;
@@ -39,28 +41,40 @@
final EditingDomain editingDomain = ((DSEditor) getEditor()).getEditingDomain();
bindingContext.bindValue(ViewerProperties.input().observe(_servicesMasterDetail.getTreeViewer()), getEditor().getInputObservable());
- /*
- _servicesMasterDetail.getBtnAddProvided().addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- Object sel = ((IStructuredSelection) getViewer().getSelection()).getFirstElement();
- Provide p = ScrFactory.eINSTANCE.createProvide();
- Command command = AddCommand.create(editingDomain, ((Component) getObservedValue().getValue()).getService(), null, p);
- editingDomain.getCommandStack().execute(command);
- getViewer().setSelection(new StructuredSelection(AdapterFactoryEditingDomain.getWrapper(p, editingDomain)), true);
- }
- });
+ _servicesMasterDetail.getBtnAddProvided().addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ Object sel = ((IStructuredSelection) _servicesMasterDetail.getTreeViewer().getSelection()).getFirstElement();
+ int idx = CommandParameter.NO_INDEX;
+ if (sel != null) {
+ Object unwrappedElement = AdapterFactoryEditingDomain.unwrap(sel);
+ idx = ((Component) getEditor().getInputObservable().getValue()).getService().getProvide().indexOf(unwrappedElement);
+ }
- _servicesMasterDetail.getBtnAddRequired().addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- Reference r = ScrFactory.eINSTANCE.createReference();
- r.setName("ref" + System.currentTimeMillis()); //$NON-NLS-1$
- Command command = AddCommand.create(editingDomain, getObservedValue().getValue(), null, FeatureMapUtil.createEntry(ScrPackage.Literals.COMPONENT__REFERENCE, r), 0);
- editingDomain.getCommandStack().execute(command);
+ Provide p = ScrFactory.eINSTANCE.createProvide();
+ Command command = AddCommand.create(editingDomain, ((Component) getEditor().getInputObservable().getValue()).getService(), ScrPackage.Literals.SERVICE__PROVIDE, p, idx);
+ editingDomain.getCommandStack().execute(command);
- getViewer().setSelection(new StructuredSelection(AdapterFactoryEditingDomain.getWrapper(r, editingDomain)), true);
- }
- });*/
+ getViewer().setSelection(new StructuredSelection(AdapterFactoryEditingDomain.getWrapper(p, editingDomain)), true);
+ }
+ });
+
+ _servicesMasterDetail.getBtnAddRequired().addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ Object sel = ((IStructuredSelection) _servicesMasterDetail.getTreeViewer().getSelection()).getFirstElement();
+ int idx = CommandParameter.NO_INDEX;
+ if (sel != null) {
+ Object unwrappedElement = AdapterFactoryEditingDomain.unwrap(sel);
+ idx = ((Component) getEditor().getInputObservable().getValue()).getReference().indexOf(unwrappedElement);
+ }
+
+ Reference r = ScrFactory.eINSTANCE.createReference();
+ Command command = AddCommand.create(editingDomain, getEditor().getInputObservable().getValue(), ScrPackage.Literals.COMPONENT__REFERENCE, r, idx);
+ editingDomain.getCommandStack().execute(command);
+
+ getViewer().setSelection(new StructuredSelection(AdapterFactoryEditingDomain.getWrapper(r, editingDomain)), true);
+ }
+ });
_servicesMasterDetail.getRemoveButton().addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
diff --git a/modeling/plugins/org.eclipse.pde.ds.ui/src/org/eclipse/pde/ds/ui/internal/editor/masterdetail/PropertiesMasterDetail.java b/modeling/plugins/org.eclipse.pde.ds.ui/src/org/eclipse/pde/ds/ui/internal/editor/masterdetail/PropertiesMasterDetail.java
index 0d5fd3c..6c8d70e 100644
--- a/modeling/plugins/org.eclipse.pde.ds.ui/src/org/eclipse/pde/ds/ui/internal/editor/masterdetail/PropertiesMasterDetail.java
+++ b/modeling/plugins/org.eclipse.pde.ds.ui/src/org/eclipse/pde/ds/ui/internal/editor/masterdetail/PropertiesMasterDetail.java
@@ -8,7 +8,7 @@
* Contributors:
* Anyware Technologies - initial API and implementation
*
- * $Id: PropertiesMasterDetail.java,v 1.11 2009/07/13 19:45:41 bcabe Exp $
+ * $Id: PropertiesMasterDetail.java,v 1.12 2009/07/18 14:42:41 bcabe Exp $
*/
package org.eclipse.pde.ds.ui.internal.editor.masterdetail;
@@ -22,6 +22,7 @@
import org.eclipse.pde.emfforms.editor.EmfFormEditor;
import org.eclipse.pde.emfforms.editor.EmfMasterDetailBlock;
import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.forms.IDetailsPage;
public class PropertiesMasterDetail extends EmfMasterDetailBlock {
@@ -31,6 +32,7 @@
public PropertiesMasterDetail(EmfFormEditor<?> editor) {
super(editor, "Properties");
+ useGenericAddButton = false;
}
public IDetailsPage getPage(Object key) {
@@ -45,6 +47,12 @@
return null;
}
+ @Override
+ protected void createCustomAddButtons(Composite parent) {
+ addButtonProperty = createButton(parent, "Add Property");
+ addButtonProperties = createButton(parent, "Add Properties");
+ }
+
public Button getAddButtonProperty() {
return addButtonProperty;
}
diff --git a/modeling/plugins/org.eclipse.pde.ds.ui/src/org/eclipse/pde/ds/ui/internal/editor/masterdetail/ServicesMasterDetail.java b/modeling/plugins/org.eclipse.pde.ds.ui/src/org/eclipse/pde/ds/ui/internal/editor/masterdetail/ServicesMasterDetail.java
index 5bb95ab..54ad52d 100644
--- a/modeling/plugins/org.eclipse.pde.ds.ui/src/org/eclipse/pde/ds/ui/internal/editor/masterdetail/ServicesMasterDetail.java
+++ b/modeling/plugins/org.eclipse.pde.ds.ui/src/org/eclipse/pde/ds/ui/internal/editor/masterdetail/ServicesMasterDetail.java
@@ -8,17 +8,16 @@
* Contributors:
* Anyware Technologies - initial API and implementation
*
- * $Id: ServicesMasterDetail.java,v 1.6 2009/07/18 14:42:41 bcabe Exp $
+ * $Id: ServicesMasterDetail.java,v 1.7 2009/07/18 15:29:53 bcabe Exp $
*/
package org.eclipse.pde.ds.ui.internal.editor.masterdetail;
import java.util.ArrayList;
import java.util.List;
-import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
-import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
-import org.eclipse.jface.viewers.*;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.pde.ds.scr.*;
import org.eclipse.pde.ds.ui.internal.editor.detailpart.services.ProvideDetailsPart;
import org.eclipse.pde.ds.ui.internal.editor.detailpart.services.ReferenceDetailsPart;
@@ -30,16 +29,12 @@
import org.eclipse.ui.forms.IManagedForm;
public class ServicesMasterDetail extends EmfMasterDetailBlock {
-
- private TreeViewer _viewer;
- private EditingDomain _editingDomain;
- private DataBindingContext _databindingContext;
-
private Button _btnAddProvided;
private Button _btnAddRequired;
public ServicesMasterDetail(EmfFormEditor<?> editor) {
super(editor, "Services");
+ useGenericAddButton = false;
}
@Override
@@ -63,7 +58,6 @@
return l.toArray();
}
});
-
}
public IDetailsPage getPage(Object key) {
@@ -78,6 +72,12 @@
return null;
}
+ @Override
+ protected void createCustomAddButtons(Composite parent) {
+ _btnAddRequired = createButton(parent, "Add Reference");
+ _btnAddProvided = createButton(parent, "Add Provided");
+ }
+
public Button getBtnAddProvided() {
return _btnAddProvided;
}
diff --git a/modeling/plugins/org.eclipse.pde.emfforms/src/org/eclipse/pde/emfforms/editor/EmfMasterDetailBlock.java b/modeling/plugins/org.eclipse.pde.emfforms/src/org/eclipse/pde/emfforms/editor/EmfMasterDetailBlock.java
index ebbdfaa..dd57271 100644
--- a/modeling/plugins/org.eclipse.pde.emfforms/src/org/eclipse/pde/emfforms/editor/EmfMasterDetailBlock.java
+++ b/modeling/plugins/org.eclipse.pde.emfforms/src/org/eclipse/pde/emfforms/editor/EmfMasterDetailBlock.java
@@ -8,7 +8,7 @@
* Contributors:
* Anyware Technologies - initial API and implementation
*
- * $Id: EmfMasterDetailBlock.java,v 1.9 2009/07/18 20:13:00 bcabe Exp $
+ * $Id: EmfMasterDetailBlock.java,v 1.10 2009/07/18 20:26:56 bcabe Exp $
*/
package org.eclipse.pde.emfforms.editor;
@@ -34,11 +34,12 @@
public abstract class EmfMasterDetailBlock extends MasterDetailsBlock implements IDetailsPageProvider, IMenuListener {
+ protected EmfFormEditor<?> parentEditor;
+ protected boolean useGenericAddButton = true;
private String title;
private TreeViewer treeViewer;
private Button addButton;
private Button removeButton;
- protected EmfFormEditor<?> parentEditor;
public EmfMasterDetailBlock(EmfFormEditor<?> editor, String title) {
this.title = title;
@@ -65,13 +66,12 @@
Composite buttonComposite = new Composite(client, SWT.NONE);
GridLayoutFactory.fillDefaults().numColumns(1).applyTo(buttonComposite);
- addButton = new Button(buttonComposite, SWT.FLAT | SWT.PUSH);
- GridDataFactory.fillDefaults().align(SWT.FILL, SWT.BEGINNING).grab(true, false).applyTo(addButton);
- addButton.setText("Add..."); //$NON-NLS-1$
+ if (useGenericAddButton)
+ addButton = createButton(buttonComposite, "Add...");
- removeButton = new Button(buttonComposite, SWT.FLAT | SWT.PUSH);
- GridDataFactory.fillDefaults().align(SWT.FILL, SWT.BEGINNING).grab(true, false).applyTo(removeButton);
- removeButton.setText("Remove"); //$NON-NLS-1$
+ createCustomAddButtons(buttonComposite);
+
+ removeButton = createButton(buttonComposite, "Remove"); //$NON-NLS-1$
GridDataFactory.fillDefaults().grab(false, false).applyTo(buttonComposite);
@@ -104,6 +104,14 @@
section.setClient(client);
}
+ protected Button createButton(Composite parent, String btnText) {
+ Button btn = new Button(parent, SWT.FLAT | SWT.PUSH);
+ GridDataFactory.fillDefaults().align(SWT.FILL, SWT.BEGINNING).grab(true, false).applyTo(btn);
+ btn.setText(btnText); //$NON-NLS-1$
+
+ return btn;
+ }
+
/**
* Return a ViewerFilter to apply on the treeViewer
*
@@ -129,10 +137,17 @@
return treeViewer;
}
- public Button getAddButton() {
+ /**
+ * @return The "Add..." button that can be used to hook an element creation wizard, or <code>null</code> if the {@link EmfMasterDetailBlock#useGenericAddButton} flag is set to <code>false</code>
+ */
+ public Button getGenericAddButton() {
return addButton;
}
+ protected void createCustomAddButtons(Composite parent) {
+ // Should be overriden by clients wanting to contribute their own "add" button(s)
+ }
+
public Button getRemoveButton() {
return removeButton;
}