ability to filter create sibling actions
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 efecfb2..0d5fd3c 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,10 +8,11 @@
  * Contributors:
  *     Anyware Technologies - initial API and implementation
  *
- * $Id: PropertiesMasterDetail.java,v 1.10 2009/07/07 09:36:46 bcabe Exp $
+ * $Id: PropertiesMasterDetail.java,v 1.11 2009/07/13 19:45:41 bcabe Exp $
  */
 package org.eclipse.pde.ds.ui.internal.editor.masterdetail;
 
+import org.eclipse.emf.ecore.util.FeatureMap;
 import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
 import org.eclipse.jface.viewers.*;
 import org.eclipse.pde.ds.scr.Properties;
@@ -64,10 +65,16 @@
 	}
 
 	@Override
-	protected IFilter getContextMenuFilter() {
+	protected IFilter getCreateSiblingContextMenuFilter() {
 		return new IFilter() {
+
 			public boolean select(Object toTest) {
+				if (toTest instanceof FeatureMap.Entry) {
+					Object val = ((FeatureMap.Entry) toTest).getValue();
+					return (val instanceof Property || val instanceof Properties);
+				}
 				return true;
+
 			}
 		};
 	}
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 a3851c7..1fc7ca9 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,12 +8,10 @@
  * Contributors:
  *     Anyware Technologies - initial API and implementation
  *
- * $Id: ServicesMasterDetail.java,v 1.4 2009/07/07 21:52:28 bcabe Exp $
+ * $Id: ServicesMasterDetail.java,v 1.5 2009/07/13 19:45:41 bcabe Exp $
  */
 package org.eclipse.pde.ds.ui.internal.editor.masterdetail;
 
-import org.eclipse.pde.ds.scr.Properties;
-
 import java.util.ArrayList;
 import java.util.List;
 import org.eclipse.core.databinding.DataBindingContext;
@@ -92,12 +90,13 @@
 	public IDetailsPage getPage(Object key) {
 		if (key instanceof Class<?>) {
 			if (Reference.class.isAssignableFrom((Class<?>) key)) {
-			return new ReferenceDetailsPart(parentEditor);
-		}
+				return new ReferenceDetailsPart(parentEditor);
+			}
 			if (Provide.class.isAssignableFrom((Class<?>) key)) {
-						return new ProvideDetailsPart(parentEditor);
+				return new ProvideDetailsPart(parentEditor);
+			}
 		}
-		}		return null;
+		return null;
 	}
 
 	public Button getBtnAddProvided() {
@@ -109,15 +108,6 @@
 	}
 
 	@Override
-	protected IFilter getContextMenuFilter() {
-		return new IFilter() {
-			public boolean select(Object toTest) {
-				return true;
-			}
-		};
-	}
-
-	@Override
 	protected ViewerFilter getTreeFilter() {
 		return new ViewerFilter() {
 			@Override
diff --git a/modeling/plugins/org.eclipse.pde.emfforms/src/org/eclipse/pde/emfforms/editor/EmfActionBarContributor.java b/modeling/plugins/org.eclipse.pde.emfforms/src/org/eclipse/pde/emfforms/editor/EmfActionBarContributor.java
index df43f2e..33f9915 100644
--- a/modeling/plugins/org.eclipse.pde.emfforms/src/org/eclipse/pde/emfforms/editor/EmfActionBarContributor.java
+++ b/modeling/plugins/org.eclipse.pde.emfforms/src/org/eclipse/pde/emfforms/editor/EmfActionBarContributor.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     Anyware Technologies - initial API and implementation
  *
- * $Id: EmfActionBarContributor.java,v 1.3 2009/07/17 14:33:24 bcabe Exp $
+ * $Id: EmfActionBarContributor.java,v 1.4 2009/07/18 13:16:58 bcabe Exp $
  */
 package org.eclipse.pde.emfforms.editor;
 
@@ -60,13 +60,11 @@
 		}
 	};
 
-	/** The filter. */
-	private IFilter filter = new IFilter() {
+	/** The filter for create child actions . */
+	private IFilter createChildMenuFilter = AcceptAllFilter.getInstance();
 
-		public boolean select(Object toTest) {
-			return true;
-		}
-	};
+	/** The filter for create sibling actions. */
+	private IFilter createSiblingMenuFilter = AcceptAllFilter.getInstance();
 
 	private String menuID;
 
@@ -212,7 +210,7 @@
 		Collection<IAction> actions = new ArrayList<IAction>();
 		if (childDescriptors != null) {
 			for (Object descriptor : childDescriptors) {
-				if (this.filter.select(((CommandParameter) descriptor).value))
+				if (this.createChildMenuFilter.select(((CommandParameter) descriptor).value))
 					actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
 			}
 		}
@@ -232,7 +230,8 @@
 		Collection<IAction> actions = new ArrayList<IAction>();
 		if (descriptors != null) {
 			for (Object descriptor : descriptors) {
-				actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+				if (this.createSiblingMenuFilter.select(((CommandParameter) descriptor).value))
+					actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
 			}
 		}
 		return actions;
@@ -284,11 +283,21 @@
 	}
 
 	/**
-	 * Sets the filter.
+	 * Sets the filter used to selection actions to display in the create child menu.
 	 * 
 	 * @param filter the new filter
 	 */
-	public void setFilter(IFilter filter) {
-		this.filter = filter;
+	public void setCreateChildMenuFilter(IFilter filter) {
+		this.createChildMenuFilter = filter;
 	}
+
+	/**
+	 * Sets the filter used to selection actions to display in the create sibling menu.
+	 * 
+	 * @param filter the new filter
+	 */
+	public void setCreateSiblingMenuFilter(IFilter filter) {
+		this.createSiblingMenuFilter = filter;
+	}
+
 }
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 b572573..c6838f5 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.5 2009/07/13 19:45:40 bcabe Exp $
+ * $Id: EmfMasterDetailBlock.java,v 1.6 2009/07/17 14:33:54 bcabe Exp $
  */
 package org.eclipse.pde.emfforms.editor;
 
@@ -145,12 +145,26 @@
 		Menu menu = contextMenu.createContextMenu(viewer.getControl());
 		viewer.getControl().setMenu(menu);
 		IEditorActionBarContributor actionBarContributor = parentEditor.getEditorSite().getActionBarContributor();
-		if (actionBarContributor != null && actionBarContributor instanceof EmfActionBarContributor)
-			((EmfActionBarContributor) actionBarContributor).setFilter(getContextMenuFilter());
+		if (actionBarContributor != null && actionBarContributor instanceof EmfActionBarContributor) {
+			((EmfActionBarContributor) actionBarContributor).setCreateChildMenuFilter(getCreateChildContextMenuFilter());
+			((EmfActionBarContributor) actionBarContributor).setCreateSiblingMenuFilter(getCreateSiblingContextMenuFilter());
+		}
 		parentEditor.getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
 	}
 
-	protected abstract IFilter getContextMenuFilter();
+	/**
+	 * TODO doc
+	 */
+	protected IFilter getCreateChildContextMenuFilter() {
+		return AcceptAllFilter.getInstance();
+	}
+
+	/**
+	 * TODO doc
+	 */
+	protected IFilter getCreateSiblingContextMenuFilter() {
+		return AcceptAllFilter.getInstance();
+	}
 
 	public void menuAboutToShow(IMenuManager manager) {
 		if (parentEditor.getEditorSite().getActionBarContributor() != null)