[537506] Filter the sections of a tab using the contributor id

Sections were used in tabs without regard to their contributors id

Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=537506
Change-Id: I96541937b89e7799442737ef804a3164a930ab4b
Signed-off-by: Axel Richard <axel.richard@obeo.fr>
diff --git a/plugins/org.eclipse.eef.properties.ui.legacy/src/org/eclipse/eef/properties/ui/legacy/internal/extension/impl/LegacyPropertySectionItemDescriptor.java b/plugins/org.eclipse.eef.properties.ui.legacy/src/org/eclipse/eef/properties/ui/legacy/internal/extension/impl/LegacyPropertySectionItemDescriptor.java
index 5b68954..5df97fb 100644
--- a/plugins/org.eclipse.eef.properties.ui.legacy/src/org/eclipse/eef/properties/ui/legacy/internal/extension/impl/LegacyPropertySectionItemDescriptor.java
+++ b/plugins/org.eclipse.eef.properties.ui.legacy/src/org/eclipse/eef/properties/ui/legacy/internal/extension/impl/LegacyPropertySectionItemDescriptor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2015 Obeo.
+ * Copyright (c) 2015, 2018 Obeo.
  * 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
@@ -13,6 +13,7 @@
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
@@ -207,4 +208,20 @@
 		}
 		return inputTypes;
 	}
+
+	/**
+	 * Get the contributor Id of the section.
+	 *
+	 * @return the contributor Id of the section, or <code>null</code> if it doesn't exist.
+	 */
+	public String getContributionId() {
+		// @formatter:off
+		return Optional.ofNullable(this.configurationElement)
+				.map(IConfigurationElement::getParent)
+				.filter(IConfigurationElement.class::isInstance)
+				.map(IConfigurationElement.class::cast)
+				.map(element -> element.getAttribute(LegacyPropertySectionsRegistryEventListener.CONTRIBUTOR_ID_ATTR))
+				.orElse(null);
+		// @formatter:on
+	}
 }
diff --git a/plugins/org.eclipse.eef.properties.ui.legacy/src/org/eclipse/eef/properties/ui/legacy/internal/extension/impl/LegacyPropertySectionRegistry.java b/plugins/org.eclipse.eef.properties.ui.legacy/src/org/eclipse/eef/properties/ui/legacy/internal/extension/impl/LegacyPropertySectionRegistry.java
index 4887934..d7d7190 100644
--- a/plugins/org.eclipse.eef.properties.ui.legacy/src/org/eclipse/eef/properties/ui/legacy/internal/extension/impl/LegacyPropertySectionRegistry.java
+++ b/plugins/org.eclipse.eef.properties.ui.legacy/src/org/eclipse/eef/properties/ui/legacy/internal/extension/impl/LegacyPropertySectionRegistry.java
@@ -86,9 +86,14 @@
 
 		for (IItemDescriptor itemDescriptor : values) {
 			if (itemDescriptor instanceof IEEFSectionDescriptor) {
+				String legacyContributorId = null;
+				if (itemDescriptor instanceof LegacyPropertySectionItemDescriptor) {
+					legacyContributorId = ((LegacyPropertySectionItemDescriptor) itemDescriptor).getContributionId();
+				}
 				String tab = ((IEEFSectionDescriptor) itemDescriptor).getTargetTab();
 				String sectionTargetTabId = tab;
-				if (tabId.equals(sectionTargetTabId)) {
+				if (((legacyContributorId != null && legacyContributorId.equals(contributorId)) || legacyContributorId == null)
+						&& tabId.equals(sectionTargetTabId)) {
 					String key = sectionTargetTabId + itemDescriptor.getId();
 					eefSectionDescriptors.put(key, (IEEFSectionDescriptor) itemDescriptor);
 				}