1 11 package org.eclipse.ui.views.markers.internal; 12 13 import java.util.ArrayList ; 14 15 import org.eclipse.core.commands.ExecutionException; 16 import org.eclipse.core.commands.operations.IUndoableOperation; 17 import org.eclipse.core.resources.IMarker; 18 import org.eclipse.core.runtime.CoreException; 19 import org.eclipse.core.runtime.IAdaptable; 20 import org.eclipse.core.runtime.IProgressMonitor; 21 import org.eclipse.jface.dialogs.ErrorDialog; 22 import org.eclipse.jface.viewers.ISelectionProvider; 23 import org.eclipse.jface.viewers.IStructuredSelection; 24 import org.eclipse.ui.PlatformUI; 25 import org.eclipse.ui.actions.SelectionProviderAction; 26 import org.eclipse.ui.ide.undo.WorkspaceUndoUtil; 27 import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin; 28 29 34 public abstract class MarkerSelectionProviderAction extends 35 SelectionProviderAction { 36 37 43 public MarkerSelectionProviderAction(ISelectionProvider provider, 44 String text) { 45 super(provider, text); 46 47 } 48 49 54 IMarker[] getSelectedMarkers() { 55 56 return getSelectedMarkers(getStructuredSelection()); 57 } 58 59 66 IMarker[] getSelectedMarkers(IStructuredSelection structured) { 67 Object [] selection = structured.toArray(); 68 ArrayList markers = new ArrayList (); 69 for (int i = 0; i < selection.length; i++) { 70 Object object = selection[i]; 71 if (!(object instanceof MarkerNode)) { 72 return new IMarker[0]; } 74 MarkerNode marker = (MarkerNode) object; 75 if (marker.isConcrete()) { 76 markers.add(((ConcreteMarker) object).getMarker()); 77 } 78 } 79 80 return (IMarker[]) markers.toArray(new IMarker[markers.size()]); 81 } 82 83 88 IMarker getSelectedMarker() { 89 90 ConcreteMarker selection = (ConcreteMarker) getStructuredSelection() 91 .getFirstElement(); 92 return selection.getMarker(); 93 } 94 95 98 void execute(IUndoableOperation operation, String title, 99 IProgressMonitor monitor, IAdaptable uiInfo) { 100 try { 101 PlatformUI.getWorkbench().getOperationSupport() 102 .getOperationHistory().execute(operation, monitor, uiInfo); 103 } catch (ExecutionException e) { 104 if (e.getCause() instanceof CoreException) { 105 ErrorDialog 106 .openError(WorkspaceUndoUtil.getShell(uiInfo), title, 107 null, ((CoreException) e.getCause()) 108 .getStatus()); 109 } else { 110 IDEWorkbenchPlugin.log(title, e); 111 } 112 } 113 } 114 } 115 | Popular Tags |