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