559255: MAT Calcite results can't be added to the compare basket
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=559255
Change-Id: I35a34b3989cf70a5f1f81fc022022c45ebdec4b4
diff --git a/plugins/org.eclipse.mat.ui.rcp/src/org/eclipse/mat/ui/rcp/actions/SnapshotHistoryIntroContentProvider.java b/plugins/org.eclipse.mat.ui.rcp/src/org/eclipse/mat/ui/rcp/actions/SnapshotHistoryIntroContentProvider.java
index 9b8e5d8..f147b08 100644
--- a/plugins/org.eclipse.mat.ui.rcp/src/org/eclipse/mat/ui/rcp/actions/SnapshotHistoryIntroContentProvider.java
+++ b/plugins/org.eclipse.mat.ui.rcp/src/org/eclipse/mat/ui/rcp/actions/SnapshotHistoryIntroContentProvider.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 SAP AG.
+ * Copyright (c) 2008, 2019 SAP AG and IBM Corporation.
* 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
@@ -7,6 +7,7 @@
*
* Contributors:
* SAP AG - initial API and implementation
+ * Andrew Johnson (IBM Corporation) - alt text
*******************************************************************************/
package org.eclipse.mat.ui.rcp.actions;
@@ -135,7 +136,7 @@
: RESOURCE_ICON;
buffer.append("<li style=\"image\" value=\"bullet\">"); //$NON-NLS-1$
- buffer.append("<img src =\"").append(icon).append("\"/>"); //$NON-NLS-1$ //$NON-NLS-2$
+ buffer.append("<img src =\"").append(icon).append("\" alt=\"\">"); //$NON-NLS-1$ //$NON-NLS-2$
buffer.append("<a href=\"http://org.eclipse.ui.intro/runAction?" //$NON-NLS-1$
+ "standby=true&pluginId=org.eclipse.mat.ui.rcp&" //$NON-NLS-1$
+ "class=org.eclipse.mat.ui.rcp.actions.OpenEditorAction&param="); //$NON-NLS-1$
diff --git a/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/compare/CompareBasketView.java b/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/compare/CompareBasketView.java
index 2ccf59f..ed0a1e4 100644
--- a/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/compare/CompareBasketView.java
+++ b/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/compare/CompareBasketView.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010, 2012 SAP AG and IBM Corporation
+ * Copyright (c) 2010, 2019 SAP AG and IBM Corporation
* 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
@@ -48,6 +48,7 @@
import org.eclipse.mat.ui.accessibility.AccessibleCompositeAdapter;
import org.eclipse.mat.ui.actions.QueryDropDownMenuAction;
import org.eclipse.mat.ui.editor.AbstractEditorPane;
+import org.eclipse.mat.ui.editor.CompositeHeapEditorPane;
import org.eclipse.mat.ui.editor.MultiPaneEditor;
import org.eclipse.mat.ui.internal.panes.QueryResultPane;
import org.eclipse.mat.ui.internal.panes.TableResultPane;
@@ -159,6 +160,14 @@
{
AbstractEditorPane pane = resultPane(state, editor);
ComparedResult entry = null;
+ if (pane != null)
+ {
+ QueryResult qr = pane.getAdapter(QueryResult.class);
+ if (qr != null && qr.getSubject() instanceof IResultTree)
+ entry = new ComparedResult(state, editor, (IResultTree)qr.getSubject());
+ if (qr != null && qr.getSubject() instanceof IResultTable)
+ entry = new ComparedResult(state, editor, (IResultTable)qr.getSubject());
+ }
if (pane instanceof HistogramPane)
{
entry = new ComparedResult(state, editor, ((HistogramPane) pane).getHistogram());
@@ -196,6 +205,14 @@
public static boolean accepts(PaneState state, MultiPaneEditor editor)
{
AbstractEditorPane pane = resultPane(state, editor);
+ if (pane != null)
+ {
+ QueryResult qr = pane.getAdapter(QueryResult.class);
+ if (qr != null && qr.getSubject() instanceof IResultTree)
+ return true;
+ if (qr != null && qr.getSubject() instanceof IResultTable)
+ return true;
+ }
return (pane instanceof HistogramPane) || (pane instanceof TableResultPane) ||
pane instanceof QueryResultPane &&
((QueryResultPane) pane).getSrcQueryResult().getSubject() instanceof IResultTree;
@@ -206,12 +223,14 @@
AbstractEditorPane pane;
if (state.isActive() && state.getType() == PaneState.PaneType.COMPOSITE_CHILD)
{
- state = state.getParentPaneState();
- pane = editor.getEditor(state);
+ PaneState pstate = state.getParentPaneState();
+ pane = editor.getEditor(pstate);
if (pane instanceof OQLPane)
pane = ((OQLPane)pane).getEmbeddedPane();
- else
- pane = null;
+ else if (pane instanceof CompositeHeapEditorPane)
+ {
+ pane = ((CompositeHeapEditorPane)pane);
+ }
}
else
{
diff --git a/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/editor/AbstractEditorPane.java b/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/editor/AbstractEditorPane.java
index fe73568..c580049 100644
--- a/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/editor/AbstractEditorPane.java
+++ b/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/editor/AbstractEditorPane.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 SAP AG and others.
+ * Copyright (c) 2008, 2019 SAP AG, IBM Corporation and others.
* 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
@@ -7,6 +7,7 @@
*
* Contributors:
* SAP AG - initial API and implementation
+ * Andrew Johnson (IBM Corporation) - MAT Calcite
*******************************************************************************/
package org.eclipse.mat.ui.editor;
@@ -111,8 +112,7 @@
public void setFocus()
{}
- @SuppressWarnings("unchecked")
- public Object getAdapter(Class adapter)
+ public <T> T getAdapter(Class<T> adapter)
{
return null;
}
diff --git a/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/editor/CompositeHeapEditorPane.java b/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/editor/CompositeHeapEditorPane.java
index 080ecd1..913efdc 100644
--- a/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/editor/CompositeHeapEditorPane.java
+++ b/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/editor/CompositeHeapEditorPane.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 SAP AG.
+ * Copyright (c) 2008, 2019 SAP AG and IBM Corporation.
* 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
@@ -7,6 +7,7 @@
*
* Contributors:
* SAP AG - initial API and implementation
+ * Andrew Johnson (IBM Corporation) - MAT Calcite
*******************************************************************************/
package org.eclipse.mat.ui.editor;
@@ -159,6 +160,13 @@
}
}
+ public <T> T getAdapter(Class<T> adapter)
+ {
+ if (embeddedPane != null)
+ return embeddedPane.getAdapter(adapter);
+ return super.getAdapter(adapter);
+ }
+
@Override
public void contributeToToolBar(IToolBarManager manager)
{
diff --git a/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/internal/panes/QueryResultPane.java b/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/internal/panes/QueryResultPane.java
index e37289e..7df9ce3 100644
--- a/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/internal/panes/QueryResultPane.java
+++ b/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/internal/panes/QueryResultPane.java
@@ -380,4 +380,16 @@
return srcQueryResult;
}
+ public <T> T getAdapter(Class<T> adapter)
+ {
+ if (adapter.isAssignableFrom(srcQueryResult.getClass()))
+ {
+ return (adapter.cast(srcQueryResult));
+ }
+ if (adapter.isAssignableFrom(srcQueryResult.getSubject().getClass()))
+ {
+ return (adapter.cast(srcQueryResult.getSubject()));
+ }
+ return super.getAdapter(adapter);
+ }
}
diff --git a/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/internal/panes/QueryTextResultPane.java b/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/internal/panes/QueryTextResultPane.java
index 6e828c9..d5710b5 100644
--- a/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/internal/panes/QueryTextResultPane.java
+++ b/plugins/org.eclipse.mat.ui/src/org/eclipse/mat/ui/internal/panes/QueryTextResultPane.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 SAP AG.
+ * Copyright (c) 2008, 2019 SAP AG and IBM Corporation.
* 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
@@ -7,6 +7,7 @@
*
* Contributors:
* SAP AG - initial API and implementation
+ * Andrew Johnson (IBM Corporation) - MAT Calcite
*******************************************************************************/
package org.eclipse.mat.ui.internal.panes;
@@ -254,6 +255,19 @@
throw new UnsupportedOperationException();
}
+ public <T> T getAdapter(Class<T> adapter)
+ {
+ if (adapter.isAssignableFrom(queryResult.getClass()))
+ {
+ return (adapter.cast(queryResult));
+ }
+ if (adapter.isAssignableFrom(queryResult.getSubject().getClass()))
+ {
+ return (adapter.cast(queryResult.getSubject()));
+ }
+ return super.getAdapter(adapter);
+ }
+
@Override
public void dispose()
{