diff --git a/bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF
index 78f0ab8..3b5551f 100644
--- a/bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.e4.ui.workbench;singleton:=true
-Bundle-Version: 1.3.1.qualifier
+Bundle-Version: 1.3.2.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -21,8 +21,7 @@ Require-Bundle: org.eclipse.e4.ui.model.workbench;bundle-version="1.0.0",
org.eclipse.core.expressions;bundle-version="[3.4.200,4.0.0)",
org.eclipse.e4.ui.di;bundle-version="0.9.0",
org.eclipse.emf.ecore.xmi;bundle-version="2.7.0",
- org.eclipse.e4.core.di.extensions,
- org.eclipse.jface;bundle-version="3.11.0"
+ org.eclipse.e4.core.di.extensions
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Export-Package: org.eclipse.e4.ui.internal.workbench;
diff --git a/bundles/org.eclipse.e4.ui.workbench/pom.xml b/bundles/org.eclipse.e4.ui.workbench/pom.xml
index cc4fb87..94cca22 100644
--- a/bundles/org.eclipse.e4.ui.workbench/pom.xml
+++ b/bundles/org.eclipse.e4.ui.workbench/pom.xml
@@ -19,6 +19,6 @@
org.eclipse.e4
org.eclipse.e4.ui.workbench
- 1.3.1-SNAPSHOT
+ 1.3.2-SNAPSHOT
eclipse-plugin
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelServiceImpl.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelServiceImpl.java
index 671f8e5..619ab7d 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelServiceImpl.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelServiceImpl.java
@@ -59,7 +59,6 @@ import org.eclipse.e4.ui.workbench.modeling.EPlaceholderResolver;
import org.eclipse.e4.ui.workbench.modeling.ElementMatcher;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.jface.resource.ImageDescriptor;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventHandler;
@@ -69,10 +68,6 @@ import org.osgi.service.event.EventHandler;
public class ModelServiceImpl implements EModelService {
private static String HOSTED_ELEMENT = "HostedElement"; //$NON-NLS-1$
- private static final String COMPATIBILITY_VIEW_URI = "bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView"; //$NON-NLS-1$
-
- private static final String TAG_LABEL = "label"; //$NON-NLS-1$
-
private IEclipseContext appContext;
/** Factory which is able to create {@link MApplicationElement}s in a generic way. */
@@ -417,13 +412,13 @@ public class ModelServiceImpl implements EModelService {
MUIElement appElement = refWin == null ? null : refWin.getParent();
if (appElement instanceof MApplication) {
- handleNullRefPlaceHolders(element, refWin, true);
+ getNullRefPlaceHolders(element, refWin, true);
}
return element;
}
- private void handleNullRefPlaceHolders(MUIElement element, MWindow refWin, boolean resolveAlways) {
+ private List getNullRefPlaceHolders(MUIElement element, MWindow refWin, boolean resolveAlways) {
// use appContext as MApplication.getContext() is null during the
// processing of
// the model processor classes
@@ -451,56 +446,16 @@ public class ModelServiceImpl implements EModelService {
nullRefList.add(ph);
}
}
- if (!resolveAlways) {
- List partList = findElements(element, null, MPart.class, null);
- for (MPart part : partList) {
- if (COMPATIBILITY_VIEW_URI.equals(part.getContributionURI()) && part.getIconURI() == null) {
- part.getTransientData().put(IPresentationEngine.OVERRIDE_ICON_IMAGE_KEY,
- ImageDescriptor.getMissingImageDescriptor().createImage());
- }
- }
- }
- for (MPlaceholder ph : nullRefList) {
- replacePlaceholder(ph);
- }
- return;
+ return nullRefList;
}
/**
* @param element
* @param refWin
+ * @return list of null referencing place holders
*/
- public void handleNullRefPlaceHolders(MUIElement element, MWindow refWin) {
- handleNullRefPlaceHolders(element, refWin, false);
- }
-
- private void replacePlaceholder(MPlaceholder ph) {
- MPart part = createModelElement(MPart.class);
- part.setElementId(ph.getElementId());
- part.getTransientData().put(IPresentationEngine.OVERRIDE_ICON_IMAGE_KEY,
- ImageDescriptor.getMissingImageDescriptor().createImage());
- String label = (String) ph.getTransientData().get(TAG_LABEL);
- if (label != null) {
- part.setLabel(label);
- } else {
- part.setLabel(getLabel(ph.getElementId()));
- }
- part.setContributionURI(COMPATIBILITY_VIEW_URI);
- part.setCloseable(true);
- MElementContainer curParent = ph.getParent();
- int curIndex = curParent.getChildren().indexOf(ph);
- curParent.getChildren().remove(curIndex);
- curParent.getChildren().add(curIndex, part);
- if (curParent.getSelectedElement() == ph) {
- curParent.setSelectedElement(part);
- }
- }
-
- private String getLabel(String str) {
- int index = str.lastIndexOf('.');
- if (index == -1)
- return str;
- return str.substring(index + 1);
+ public List getNullRefPlaceHolders(MUIElement element, MWindow refWin) {
+ return getNullRefPlaceHolders(element, refWin, false);
}
@Override
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java
index a51cdcc..2a0a16a 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java
@@ -3462,6 +3462,10 @@ public class WorkbenchPage implements IWorkbenchPage {
if (!revert) {
dummyPerspective = (MPerspective) modelService.cloneSnippet(application, desc.getId(),
window);
+ if (dummyPerspective != null) {
+ handleNullRefPlaceHolders(dummyPerspective, window);
+ }
+
}
if (dummyPerspective == null) {
@@ -4017,7 +4021,7 @@ public class WorkbenchPage implements IWorkbenchPage {
MPerspectiveStack perspectives = getPerspectiveStack();
for (MPerspective mperspective : perspectives.getChildren()) {
if (mperspective.getElementId().equals(perspective.getId())) {
- ((ModelServiceImpl) modelService).handleNullRefPlaceHolders(mperspective, window);
+ handleNullRefPlaceHolders(mperspective, window);
}
}
return;
@@ -4033,7 +4037,7 @@ public class WorkbenchPage implements IWorkbenchPage {
// this perspective already exists, switch to this one
perspectives.setSelectedElement(mperspective);
mperspective.getContext().activate();
- ((ModelServiceImpl) modelService).handleNullRefPlaceHolders(mperspective, window);
+ handleNullRefPlaceHolders(mperspective, window);
return;
}
}
@@ -4059,7 +4063,7 @@ public class WorkbenchPage implements IWorkbenchPage {
reader.extendLayout(getExtensionTracker(), perspective.getId(), modelLayout);
}
- ((ModelServiceImpl) modelService).handleNullRefPlaceHolders(modelPerspective, window);
+ handleNullRefPlaceHolders(modelPerspective, window);
modelPerspective.setLabel(perspective.getLabel());
@@ -4088,6 +4092,54 @@ public class WorkbenchPage implements IWorkbenchPage {
UIEvents.publishEvent(UIEvents.UILifeCycle.PERSPECTIVE_OPENED, modelPerspective);
}
+ private void handleNullRefPlaceHolders(MUIElement element, MWindow refWin) {
+ List nullRefList = ((ModelServiceImpl) modelService).getNullRefPlaceHolders(element, refWin);
+
+ List partList = modelService.findElements(element, null, MPart.class, null);
+ for (MPart part : partList) {
+ if (CompatibilityPart.COMPATIBILITY_VIEW_URI.equals(part.getContributionURI())
+ && part.getIconURI() == null) {
+ part.getTransientData().put(IPresentationEngine.OVERRIDE_ICON_IMAGE_KEY,
+ ImageDescriptor.getMissingImageDescriptor().createImage());
+ }
+ }
+
+ if (nullRefList != null && nullRefList.size() > 0) {
+ for (MPlaceholder ph : nullRefList) {
+ replacePlaceholder(ph);
+ }
+ }
+ }
+
+ private void replacePlaceholder(MPlaceholder ph) {
+ MPart part = modelService.createModelElement(MPart.class);
+ part.setElementId(ph.getElementId());
+ part.getTransientData().put(IPresentationEngine.OVERRIDE_ICON_IMAGE_KEY,
+ ImageDescriptor.getMissingImageDescriptor().createImage());
+ String label = (String) ph.getTransientData().get(IWorkbenchConstants.TAG_LABEL);
+ if (label != null) {
+ part.setLabel(label);
+ } else {
+ part.setLabel(getLabel(ph.getElementId()));
+ }
+ part.setContributionURI(CompatibilityPart.COMPATIBILITY_VIEW_URI);
+ part.setCloseable(true);
+ MElementContainer curParent = ph.getParent();
+ int curIndex = curParent.getChildren().indexOf(ph);
+ curParent.getChildren().remove(curIndex);
+ curParent.getChildren().add(curIndex, part);
+ if (curParent.getSelectedElement() == ph) {
+ curParent.setSelectedElement(part);
+ }
+ }
+
+ private String getLabel(String str) {
+ int index = str.lastIndexOf('.');
+ if (index == -1)
+ return str;
+ return str.substring(index + 1);
+ }
+
void perspectiveActionSetChanged(Perspective perspective, IActionSetDescriptor descriptor,
int changeType) {
if (perspective == getActivePerspective()) {
diff --git a/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF
index 86bdd85..13059fd 100644
--- a/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.ui.workbench; singleton:=true
-Bundle-Version: 3.107.1.qualifier
+Bundle-Version: 3.107.2.qualifier
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.ui.internal.WorkbenchPlugin
Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.ui.workbench/pom.xml b/bundles/org.eclipse.ui.workbench/pom.xml
index 59164b9..f377b34 100644
--- a/bundles/org.eclipse.ui.workbench/pom.xml
+++ b/bundles/org.eclipse.ui.workbench/pom.xml
@@ -19,7 +19,7 @@
org.eclipse.ui
org.eclipse.ui.workbench
- 3.107.1-SNAPSHOT
+ 3.107.2-SNAPSHOT
eclipse-plugin