diff options
author | Andrew M Finkbeiner | 2012-08-16 15:40:47 +0000 |
---|---|---|
committer | Roberto E. Escobar | 2012-08-16 15:40:47 +0000 |
commit | 580d24131679ca99e2c6045f5aea4b84c00561eb (patch) | |
tree | c3d856b2665441846be2e906d369127028b4a8c5 | |
parent | 69bd659e604af66270bc915194998b0ba9a7e6bd (diff) | |
download | org.eclipse.osee-580d24131679ca99e2c6045f5aea4b84c00561eb.tar.gz org.eclipse.osee-580d24131679ca99e2c6045f5aea4b84c00561eb.tar.xz org.eclipse.osee-580d24131679ca99e2c6045f5aea4b84c00561eb.zip |
bug[ats_0390M]: Add clear markers safety net and popup menu action
6 files changed, 167 insertions, 9 deletions
diff --git a/plugins/org.eclipse.osee.ote.ui.markers/build.properties b/plugins/org.eclipse.osee.ote.ui.markers/build.properties index 34d2e4d2dad..e9863e281ea 100644 --- a/plugins/org.eclipse.osee.ote.ui.markers/build.properties +++ b/plugins/org.eclipse.osee.ote.ui.markers/build.properties @@ -1,4 +1,5 @@ source.. = src/ output.. = bin/ bin.includes = META-INF/,\ - . + .,\ + plugin.xml diff --git a/plugins/org.eclipse.osee.ote.ui.markers/plugin.xml b/plugins/org.eclipse.osee.ote.ui.markers/plugin.xml new file mode 100644 index 00000000000..1605d8e2578 --- /dev/null +++ b/plugins/org.eclipse.osee.ote.ui.markers/plugin.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + <extension + point="org.eclipse.ui.popupMenus"> + <objectContribution + adaptable="true" + id="org.eclipse.osee.ote.ui.markers.contribution1" + nameFilter="*" + objectClass="org.eclipse.core.resources.IResource"> + <action + enablesFor="+" + label="Clear OTE Markers" + class="org.eclipse.osee.ote.ui.markers.ClearOteMarkerActionView" + menubarPath="org.eclipse.osee.ote.ui.test.manager.menu1/markers" + id="org.eclipse.osee.ote.ui.markers.clearMarkers"> + </action> + </objectContribution> + <viewerContribution + targetID="#CompilationUnitEditorContext" + id="markerConf"> + <action + label="Clear OTE Markers" + menubarPath="org.eclipse.jdt.ui.source.menu" + id="org.eclipse.osee.ote.ui.markers.editorClearMarkers" + class="org.eclipse.osee.ote.ui.markers.ClearOteMarkerAction"/> + </viewerContribution> + + </extension> + +</plugin> diff --git a/plugins/org.eclipse.osee.ote.ui.markers/src/org/eclipse/osee/ote/ui/markers/ClearOteMarkerAction.java b/plugins/org.eclipse.osee.ote.ui.markers/src/org/eclipse/osee/ote/ui/markers/ClearOteMarkerAction.java new file mode 100644 index 00000000000..fe610b4516c --- /dev/null +++ b/plugins/org.eclipse.osee.ote.ui.markers/src/org/eclipse/osee/ote/ui/markers/ClearOteMarkerAction.java @@ -0,0 +1,56 @@ +package org.eclipse.osee.ote.ui.markers; + +import java.util.ArrayList; +import java.util.Iterator; + +import org.eclipse.core.resources.IResource; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.IEditorActionDelegate; +import org.eclipse.ui.IEditorPart; + +public class ClearOteMarkerAction implements IEditorActionDelegate{ + + ArrayList<IResource> selections; + private IEditorPart editor; + + public ClearOteMarkerAction() { + selections = new ArrayList<IResource>(); + } + + @Override + public void run(IAction action) { + for(IResource resource:selections){ + MarkerPlugin.findAndRemoveOteMarkers(resource); + } + } + + @Override + public void selectionChanged(IAction action, ISelection selection) { + selections.clear(); + if(selection instanceof StructuredSelection){ + Iterator<?> i = ((StructuredSelection)selection).iterator(); + while (i.hasNext()) { + Object obj = i.next(); + if (obj instanceof IResource) { + IResource resource = (IResource) obj; + if (resource != null) { + selections.add(resource); + } + } + } + } else { + Object obj = editor.getEditorInput().getAdapter(IResource.class); + if(obj != null){ + selections.add((IResource)obj); + } + } + } + + @Override + public void setActiveEditor(IAction action, IEditorPart targetEditor) { + this.editor = targetEditor; + } + +} diff --git a/plugins/org.eclipse.osee.ote.ui.markers/src/org/eclipse/osee/ote/ui/markers/ClearOteMarkerActionView.java b/plugins/org.eclipse.osee.ote.ui.markers/src/org/eclipse/osee/ote/ui/markers/ClearOteMarkerActionView.java new file mode 100644 index 00000000000..5754818268b --- /dev/null +++ b/plugins/org.eclipse.osee.ote.ui.markers/src/org/eclipse/osee/ote/ui/markers/ClearOteMarkerActionView.java @@ -0,0 +1,49 @@ +package org.eclipse.osee.ote.ui.markers; + +import java.util.ArrayList; +import java.util.Iterator; + +import org.eclipse.core.resources.IResource; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.IViewActionDelegate; +import org.eclipse.ui.IViewPart; + +public class ClearOteMarkerActionView implements IViewActionDelegate { + + ArrayList<IResource> selections; + + public ClearOteMarkerActionView() { + selections = new ArrayList<IResource>(); + } + + @Override + public void run(IAction action) { + for(IResource resource:selections){ + MarkerPlugin.findAndRemoveOteMarkers(resource); + } + } + + @Override + public void selectionChanged(IAction action, ISelection selection) { + selections.clear(); + if(selection instanceof StructuredSelection){ + Iterator<?> i = ((StructuredSelection)selection).iterator(); + while (i.hasNext()) { + Object obj = i.next(); + if (obj instanceof IResource) { + IResource resource = (IResource) obj; + if (resource != null) { + selections.add(resource); + } + } + } + } + } + + @Override + public void init(IViewPart view) { + + } +} diff --git a/plugins/org.eclipse.osee.ote.ui.markers/src/org/eclipse/osee/ote/ui/markers/MarkerPlugin.java b/plugins/org.eclipse.osee.ote.ui.markers/src/org/eclipse/osee/ote/ui/markers/MarkerPlugin.java index 6fcc0ecc480..959dff4e698 100644 --- a/plugins/org.eclipse.osee.ote.ui.markers/src/org/eclipse/osee/ote/ui/markers/MarkerPlugin.java +++ b/plugins/org.eclipse.osee.ote.ui.markers/src/org/eclipse/osee/ote/ui/markers/MarkerPlugin.java @@ -15,6 +15,7 @@ import java.util.logging.Level; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResourceChangeEvent; import org.eclipse.core.resources.IResourceChangeListener; import org.eclipse.core.resources.IResourceDelta; @@ -108,9 +109,21 @@ public class MarkerPlugin implements BundleActivator { } } } + findAndRemoveOteMarkers(file); } static synchronized void updateMarkerInfo(IFile file, List<IMarker> markers) { filesToWatch.put(file, markers); } + + public static void findAndRemoveOteMarkers(IResource resource){ + try { + IMarker[] markersToRemove = resource.findMarkers("org.eclipse.osee.ote.ui.output.errorMarker", false, IResource.DEPTH_INFINITE); + for(IMarker localMarker:markersToRemove){ + localMarker.delete(); + } + } catch (CoreException e) { + OseeLog.log(MarkerPlugin.class, Level.SEVERE, e); + } + } } diff --git a/plugins/org.eclipse.osee.ote.ui.markers/src/org/eclipse/osee/ote/ui/markers/OteMarkerHelper.java b/plugins/org.eclipse.osee.ote.ui.markers/src/org/eclipse/osee/ote/ui/markers/OteMarkerHelper.java index 920940cde14..43edad63197 100644 --- a/plugins/org.eclipse.osee.ote.ui.markers/src/org/eclipse/osee/ote/ui/markers/OteMarkerHelper.java +++ b/plugins/org.eclipse.osee.ote.ui.markers/src/org/eclipse/osee/ote/ui/markers/OteMarkerHelper.java @@ -18,6 +18,7 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.logging.Level; + import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IResource; import org.eclipse.osee.framework.logging.OseeLog; @@ -103,15 +104,22 @@ public class OteMarkerHelper { Map<String, IResource> resources = new HashMap<String, IResource>(); for (MarkerInfo marker : markerInfo) { + if (!fileAlreadyLookedFor.contains(marker.getFile())) { + fileAlreadyLookedFor.add(marker.getFile()); + IResource resource = AWorkspace.findWorkspaceFile(marker.getFile()); + if (resource != null) { + resources.put(marker.getFile(), resource); + } + } + } + + for (MarkerInfo marker : markerInfo) { + IResource resourceToMark = resources.get(marker.getFile()); + MarkerPlugin.findAndRemoveOteMarkers(resourceToMark); + } + + for (MarkerInfo marker : markerInfo) { try { - if (!fileAlreadyLookedFor.contains(marker.getFile())) { - fileAlreadyLookedFor.add(marker.getFile()); - IResource resource = AWorkspace.findWorkspaceFile(marker.getFile()); - if (resource != null) { - resources.put(marker.getFile(), resource); - } - } - IResource resourceToMark = resources.get(marker.getFile()); if (resourceToMark != null) { Map<String, Object> scriptMarkerMap = new HashMap<String, Object>(); |