improved buttons customizability
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 79a1aa5..c7c8e1f 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.14 2009/08/07 16:41:55 bcabe Exp $
+ * $Id: PropertiesMasterDetail.java,v 1.15 2009/08/21 17:40:59 bcabe Exp $
*/
package org.eclipse.pde.ds.ui.internal.editor.masterdetail;
@@ -31,7 +31,7 @@
private Button addButtonProperties;
public PropertiesMasterDetail(EmfFormEditor<?> editor) {
- super(editor, "Properties", EmfMasterDetailBlock.NO_BUTTONS);
+ super(editor, "Properties", EmfMasterDetailBlock.USE_CUSTOM_PUSH_BUTTONS);
}
public IDetailsPage getPage(Object key) {
@@ -50,6 +50,7 @@
protected void createCustomButtons(Composite parent) {
addButtonProperty = createButton(parent, "Add Property");
addButtonProperties = createButton(parent, "Add Properties");
+ setRemoveButton(createButton(parent, "Remove"));
}
public Button getAddButtonProperty() {
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 9e0e20f..38bc1b6 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,7 +8,7 @@
* Contributors:
* Anyware Technologies - initial API and implementation
*
- * $Id: ServicesMasterDetail.java,v 1.9 2009/08/07 16:41:55 bcabe Exp $
+ * $Id: ServicesMasterDetail.java,v 1.10 2009/08/21 17:40:59 bcabe Exp $
*/
package org.eclipse.pde.ds.ui.internal.editor.masterdetail;
@@ -33,7 +33,7 @@
private Button _btnAddRequired;
public ServicesMasterDetail(EmfFormEditor<?> editor) {
- super(editor, "Services", EmfMasterDetailBlock.NO_BUTTONS);
+ super(editor, "Services", EmfMasterDetailBlock.USE_CUSTOM_PUSH_BUTTONS);
}
@Override
@@ -75,6 +75,7 @@
protected void createCustomButtons(Composite parent) {
_btnAddRequired = createButton(parent, "Add Reference");
_btnAddProvided = createButton(parent, "Add Provided");
+ setRemoveButton(createButton(parent, "Remove"));
}
public Button getBtnAddProvided() {
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 865f445..6722b4a 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.15 2009/09/02 14:11:43 bcabe Exp $
+ * $Id: EmfMasterDetailBlock.java,v 1.16 2009/09/11 21:18:00 bcabe Exp $
*/
package org.eclipse.pde.emfforms.editor;
@@ -45,9 +45,29 @@
protected EmfFormEditor<?> parentEditor;
+ /**
+ * Style constant to indicate that no generic buttons (neither toolbar nor push) should be displayed
+ */
public static final int NO_BUTTONS = 0;
+
+ /**
+ * Style constant to indicate whether generic toolbar buttons should be displayed or not
+ */
public static final int USE_GENERIC_TOOLBAR_BUTTONS = 1 << 0;
+
+ /**
+ * Style constant to indicate whether generic push buttons should be displayed on the
+ * right-hand side of the tree viewer or not
+ */
public static final int USE_GENERIC_PUSH_BUTTONS = 1 << 1;
+
+ /**
+ * Style constant to indicate whether custom push buttons should be displayed on the
+ * right-hand side of the tree viewer or not.
+ * If the flag is set, the {@link EmfMasterDetailBlock#createCustomButtons(Composite)} will be called.
+ */
+ public static final int USE_CUSTOM_PUSH_BUTTONS = 1 << 2;
+
protected int buttonOption = USE_GENERIC_TOOLBAR_BUTTONS;
private String title;
@@ -92,10 +112,13 @@
Composite buttonComposite = new Composite(client, SWT.NONE);
GridLayoutFactory.fillDefaults().numColumns(1).applyTo(buttonComposite);
- addButton = createButton(buttonComposite, "Add"); //$NON-NLS-1$
- removeButton = createButton(buttonComposite, "Remove"); //$NON-NLS-1$
+ if (showGenericPushButtons())
+ addButton = createButton(buttonComposite, "Add"); //$NON-NLS-1$
+ if (showCustomPushButtons())
+ createCustomButtons(buttonComposite);
+ if (showGenericPushButtons())
+ removeButton = createButton(buttonComposite, "Remove"); //$NON-NLS-1$
- createCustomButtons(buttonComposite);
GridDataFactory.fillDefaults().grab(false, false).applyTo(buttonComposite);
}
@@ -155,7 +178,7 @@
// ActionBarContributor's global handlers
configureActionBarManagement();
- if (showPushButtons()) {
+ if (getRemoveButton() != null) {
DataBindingContext bindingContext = new DataBindingContext();
@@ -225,7 +248,15 @@
}
private boolean showPushButtons() {
- return (buttonOption & USE_GENERIC_PUSH_BUTTONS) > 0;
+ return showCustomPushButtons() || showGenericPushButtons();
+ }
+
+ private boolean showCustomPushButtons() {
+ return ((buttonOption & USE_CUSTOM_PUSH_BUTTONS) > 0);
+ }
+
+ private boolean showGenericPushButtons() {
+ return ((buttonOption & USE_GENERIC_PUSH_BUTTONS) > 0);
}
private boolean showToolbarButtons() {
@@ -290,6 +321,14 @@
return removeButton;
}
+ public void setAddButton(Button addButton) {
+ this.addButton = addButton;
+ }
+
+ public void setRemoveButton(Button removeButton) {
+ this.removeButton = removeButton;
+ }
+
protected void createContextMenuFor(StructuredViewer viewer) {
MenuManager contextMenu = new MenuManager("#PopUp"); //$NON-NLS-1$
contextMenu.add(new Separator("additions")); //$NON-NLS-1$