Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Scholz2016-08-01 17:01:52 +0000
committerSimon Scholz2016-08-01 20:25:06 +0000
commit3faaf4f807de3d0dcdec0d0626a04c58f3c95f14 (patch)
tree6a4cd459bb66a347ed739b8f72e62755dea1942b
parent34c072e10435c307f9c72f8e936592def816554d (diff)
downloadeclipse.platform.ui-3faaf4f807de3d0dcdec0d0626a04c58f3c95f14.tar.gz
eclipse.platform.ui-3faaf4f807de3d0dcdec0d0626a04c58f3c95f14.tar.xz
eclipse.platform.ui-3faaf4f807de3d0dcdec0d0626a04c58f3c95f14.zip
Bug 495917 - "Next/Previous View" commands throw NPE when editor is notI20160802-0800
in editor area Change-Id: I80c9b5092fc17d693aed240310528cdea0a55206 Signed-off-by: Simon Scholz <simon.scholz@vogella.com>
-rw-r--r--bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleViewHandler.java46
1 files changed, 36 insertions, 10 deletions
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleViewHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleViewHandler.java
index de732b4cb7c..e9659d0c0c6 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleViewHandler.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CycleViewHandler.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM Corporation - initial API and implementation
* Lars Vogel <Lars.Vogel@gmail.com> - Bug 440810
- * Simon Scholz <simon.scholz@vogella.com> - Bug 454143, 461063
+ * Simon Scholz <simon.scholz@vogella.com> - Bug 454143, 461063, 495917
* Friederike Schertel <friederike@schertel.org> - Bug 478336
******************************************************************************/
@@ -25,6 +25,7 @@ import org.eclipse.e4.ui.workbench.modeling.EModelService;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.ui.IEditorPart;
@@ -32,6 +33,7 @@ import org.eclipse.ui.IWorkbenchCommandConstants;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.commands.ICommandService;
+import org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor;
/**
* This handler is used to switch between parts using the keyboard.
@@ -70,15 +72,7 @@ public class CycleViewHandler extends CycleBaseHandler {
if (part.getTags().contains("Editor")) { //$NON-NLS-1$
if (includeEditor.getAndSet(false)) {
- IEditorPart activeEditor = page.getActiveEditor();
- TableItem item = new TableItem(table, SWT.NONE);
- item.setText(WorkbenchMessages.CyclePartAction_editor);
- item.setImage(activeEditor.getTitleImage());
- if (activeEditor.getSite() instanceof PartSite) {
- item.setData(((PartSite) activeEditor.getSite()).getPartReference());
- } else {
- item.setData(part);
- }
+ createEditorItem(table, page, part);
}
} else {
TableItem item = new TableItem(table, SWT.NONE);
@@ -97,6 +91,38 @@ public class CycleViewHandler extends CycleBaseHandler {
}
+ private void createEditorItem(Table table, WorkbenchPage page, MPart part) {
+ Object object = part.getObject();
+ TableItem item = new TableItem(table, SWT.NONE);
+ item.setText(WorkbenchMessages.CyclePartAction_editor);
+ if (object instanceof CompatibilityEditor) {
+ IEditorPart editor = ((CompatibilityEditor) object).getEditor();
+ item.setImage(editor.getTitleImage());
+ if (editor.getSite() instanceof PartSite) {
+ item.setData(((PartSite) editor.getSite()).getPartReference());
+ return;
+ }
+ } else {
+ item.setImage(getImage(page, part));
+ }
+ item.setData(part);
+ }
+
+ private Image getImage(WorkbenchPage page, MPart part) {
+ Object renderer = part.getRenderer();
+ if (renderer instanceof SWTPartRenderer) {
+ SWTPartRenderer partRenderer = (SWTPartRenderer) renderer;
+ return partRenderer.getImage(part);
+ }
+ WorkbenchWindow wbw = (WorkbenchWindow) page.getWorkbenchWindow();
+ if (wbw.getModel().getRenderer() instanceof SWTPartRenderer) {
+ SWTPartRenderer partRenderer = (SWTPartRenderer) wbw.getModel().getRenderer();
+ return partRenderer.getImage(part);
+ }
+
+ return null;
+ }
+
@Override
protected ParameterizedCommand getBackwardCommand() {
return getParametrizedCommand(IWorkbenchCommandConstants.WINDOW_PREVIOUS_VIEW);

Back to the top