Bug 558671 - Extract OpenAndLinkWithEditorHelper from QuickFixPage
Extracted class ShowMarkers to be provided with E3 handler with
`Consumer<StructuredViewer> showMarkers` parameter
Change-Id: I52747ce88bee7886740308e60f5adda05e9109f0
Signed-off-by: Alexander Fedorov <alexander.fedorov@arsysop.ru>
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/QuickFixHandler.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/QuickFixHandler.java
index 96e9a14..99477c2 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/QuickFixHandler.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/QuickFixHandler.java
@@ -32,6 +32,7 @@
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.operation.IRunnableContext;
import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.jface.wizard.WizardDialog;
@@ -146,8 +147,9 @@
String description = NLS.bind(
MarkerMessages.MarkerResolutionDialog_Description,
markerDescription);
+ Consumer<StructuredViewer> showMarkers = v -> new ShowMarkers(v, view.getSite());
Consumer<Throwable> reporter = t -> StatusManager.getManager().handle(StatusUtil.newError(t));
- Wizard wizard = new QuickFixWizard(description, selectedMarkers, resolutionsMap, view.getSite(), reporter);
+ Wizard wizard = new QuickFixWizard(description, selectedMarkers, resolutionsMap, showMarkers, reporter);
wizard.setWindowTitle(MarkerMessages.resolveMarkerAction_dialogTitle);
WizardDialog dialog = new QuickFixWizardDialog(view.getSite().getShell(), wizard);
dialog.open();
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/QuickFixPage.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/QuickFixPage.java
index 628cbe5..70017c5 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/QuickFixPage.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/QuickFixPage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2019 IBM Corporation and others.
+ * Copyright (c) 2007, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -10,7 +10,7 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
- * Alexander Fedorov <alexander.fedorov@arsysop.ru> - Bug 558623, Bug 558673
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - ongoing support
*******************************************************************************/
package org.eclipse.ui.internal.views.markers;
@@ -18,8 +18,8 @@
import java.util.Collection;
import java.util.Map;
import java.util.Optional;
+import java.util.function.Consumer;
-import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
@@ -27,12 +27,12 @@
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.viewers.TableLayout;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
@@ -56,11 +56,7 @@
import org.eclipse.ui.IMarkerResolution;
import org.eclipse.ui.IMarkerResolution2;
import org.eclipse.ui.IMarkerResolutionRelevance;
-import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.ui.OpenAndLinkWithEditorHelper;
-import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
import org.eclipse.ui.views.markers.internal.MarkerMessages;
import org.eclipse.ui.views.markers.internal.Util;
@@ -77,25 +73,25 @@
private TableViewer resolutionsList;
private CheckboxTableViewer markersTable;
- private IWorkbenchPartSite site;
private IMarker[] selectedMarkers;
+ private final Consumer<StructuredViewer> showMarkers;
/**
* Create a new instance of the receiver.
*
* @param problemDescription the description of the problem being fixed
- * @param selectedMarkers the selected markers
- * @param resolutions {@link Map} with key of {@link IMarkerResolution} and value of
- * {@link Collection} of {@link IMarker}
- * @param site The IWorkbenchPartSite to show markers
+ * @param selectedMarkers the selected markers
+ * @param resolutions {@link Map} with key of {@link IMarkerResolution}
+ * and value of {@link Collection} of {@link IMarker}
+ * @param showMarkers the consumer to show markers
*/
public QuickFixPage(String problemDescription, IMarker[] selectedMarkers, Map<IMarkerResolution, Collection<IMarker>> resolutions,
- IWorkbenchPartSite site) {
+ Consumer<StructuredViewer> showMarkers) {
super(problemDescription);
this.selectedMarkers= selectedMarkers;
this.resolutions = resolutions;
- this.site = site;
+ this.showMarkers = showMarkers;
setTitle(MarkerMessages.resolveMarkerAction_dialogTitle);
setMessage(problemDescription);
}
@@ -367,36 +363,7 @@
}
});
-
- new OpenAndLinkWithEditorHelper(markersTable) {
-
- { setLinkWithEditor(false); }
-
- @Override
- protected void activate(ISelection selection) {
- open(selection, true);
- }
-
- /** Not supported*/
- @Override
- protected void linkToEditor(ISelection selection) {
- }
-
- @Override
- protected void open(ISelection selection, boolean activate) {
- if (selection.isEmpty())
- return;
- IMarker marker = (IMarker) ((IStructuredSelection) selection)
- .getFirstElement();
- if (marker != null && marker.getResource() instanceof IFile) {
- try {
- IDE.openEditor(site.getPage(), marker, activate);
- } catch (PartInitException e) {
- MarkerSupportInternalUtilities.showViewError(e);
- }
- }
- }
- };
+ showMarkers.accept(markersTable);
markersTable.setInput(this);
}
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/QuickFixWizard.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/QuickFixWizard.java
index 550d2cd..31baf7e 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/QuickFixWizard.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/QuickFixWizard.java
@@ -26,10 +26,10 @@
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.e4.ui.internal.workspace.markers.Translation;
import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IMarkerResolution;
-import org.eclipse.ui.IWorkbenchPartSite;
import org.eclipse.ui.internal.ide.IDEInternalWorkbenchImages;
import org.eclipse.ui.views.markers.WorkbenchMarkerResolution;
import org.eclipse.ui.views.markers.internal.MarkerMessages;
@@ -45,7 +45,7 @@
private IMarker[] selectedMarkers;
private Map<IMarkerResolution, Collection<IMarker>> resolutionMap;
private String description;
- private IWorkbenchPartSite partSite;
+ private final Consumer<StructuredViewer> showMarkers;
private final Consumer<Throwable> reporter;
private QuickFixPage quickFixPage;
@@ -56,18 +56,18 @@
* @param selectedMarkers the markers that were selected
* @param resolutions Map key {@link IMarkerResolution} value
* {@link IMarker} []
- * @param site the {@link IWorkbenchPartSite} to open the markers in
+ * @param showMarkers the consumer to show markers
* @param reporter used to report failures during
* {@link Wizard#performFinish()} call
*/
public QuickFixWizard(String description, IMarker[] selectedMarkers,
- Map<IMarkerResolution, Collection<IMarker>> resolutions, IWorkbenchPartSite site,
+ Map<IMarkerResolution, Collection<IMarker>> resolutions, Consumer<StructuredViewer> showMarkers,
Consumer<Throwable> reporter) {
Objects.requireNonNull(reporter);
this.selectedMarkers= selectedMarkers;
this.resolutionMap = resolutions;
this.description = description;
- this.partSite = site;
+ this.showMarkers = showMarkers;
this.reporter = reporter;
setDefaultPageImageDescriptor(IDEInternalWorkbenchImages
.getImageDescriptor(IDEInternalWorkbenchImages.IMG_DLGBAN_QUICKFIX_DLG));
@@ -76,7 +76,7 @@
@Override
public void addPages() {
- quickFixPage = new QuickFixPage(description, selectedMarkers, resolutionMap, partSite);
+ quickFixPage = new QuickFixPage(description, selectedMarkers, resolutionMap, showMarkers);
addPage(quickFixPage);
}
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/ShowMarkers.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/ShowMarkers.java
new file mode 100644
index 0000000..4716bf4
--- /dev/null
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/views/markers/ShowMarkers.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2020 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Alexander Fedorov <alexander.fedorov@arsysop.ru> - ongoing support
+ *******************************************************************************/
+package org.eclipse.ui.internal.views.markers;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.ui.IWorkbenchPartSite;
+import org.eclipse.ui.OpenAndLinkWithEditorHelper;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.ide.IDE;
+
+/**
+ * @since 3.4
+ *
+ */
+final class ShowMarkers extends OpenAndLinkWithEditorHelper {
+
+ private final IWorkbenchPartSite partSite;
+
+ /**
+ * @param viewer
+ */
+ ShowMarkers(StructuredViewer viewer, IWorkbenchPartSite partSite) {
+ super(viewer);
+ this.partSite = partSite;
+ setLinkWithEditor(false);
+ }
+
+ @Override
+ protected void activate(ISelection selection) {
+ open(selection, true);
+ }
+
+ /** Not supported*/
+ @Override
+ protected void linkToEditor(ISelection selection) {
+ }
+
+ @Override
+ protected void open(ISelection selection, boolean activate) {
+ IStructuredSelection structured = (IStructuredSelection) selection;
+ Object first = structured.getFirstElement();
+ if (!(first instanceof IMarker)) {
+ return;
+ }
+ IMarker marker = (IMarker) first;
+ if (marker.getResource() instanceof IFile) {
+ try {
+ IDE.openEditor(partSite.getPage(), marker, activate);
+ } catch (PartInitException e) {
+ MarkerSupportInternalUtilities.showViewError(e);
+ }
+ }
+ }
+}
\ No newline at end of file