-package jp.sourceforge.moreemacs.exp;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import org.eclipse.core.commands.AbstractHandler;\r
-import org.eclipse.core.commands.ExecutionEvent;\r
-import org.eclipse.core.commands.ExecutionException;\r
-import org.eclipse.core.commands.NotEnabledException;\r
-import org.eclipse.core.commands.NotHandledException;\r
-import org.eclipse.core.commands.common.NotDefinedException;\r
-import org.eclipse.core.resources.IMarker;\r
-import org.eclipse.core.resources.IResource;\r
-import org.eclipse.core.runtime.CoreException;\r
-import org.eclipse.jface.util.OpenStrategy;\r
-import org.eclipse.ui.IViewPart;\r
-import org.eclipse.ui.IWorkbenchPage;\r
-import org.eclipse.ui.IWorkbenchSite;\r
-import org.eclipse.ui.PartInitException;\r
-import org.eclipse.ui.handlers.HandlerUtil;\r
-import org.eclipse.ui.handlers.IHandlerService;\r
-import org.eclipse.ui.ide.IDE;\r
-import org.eclipse.ui.views.markers.MarkerSupportView;\r
-\r
-public class NextErrorHandler extends AbstractHandler {\r
-\r
- @Override\r
- public Object execute(ExecutionEvent event) throws ExecutionException {\r
- IWorkbenchSite site = HandlerUtil.getActiveSite(event);\r
- IWorkbenchPage page = site.getPage();\r
-\r
- MarkerSupportView problemView = (MarkerSupportView) page.findView("org.eclipse.ui.views.ProblemView");\r
- if(problemView == null) {\r
- return null;\r
- }\r
- @SuppressWarnings("restriction")\r
- IMarker[] currentMarkers = problemView.getSelectedMarkers();\r
- IMarker startPoint = (currentMarkers.length != 0)?currentMarkers[currentMarkers.length-1]:null;\r
-\r
- selectAll(problemView);\r
- \r
- @SuppressWarnings("restriction")\r
- IMarker[] allMarkers = problemView.getSelectedMarkers();\r
- goNextError(allMarkers, startPoint, page);\r
-\r
- return null;\r
- }\r
- \r
- void selectAll(IViewPart view) throws ExecutionException {\r
- view.getSite().getPage().activate(view);\r
- IHandlerService handlerService = (IHandlerService)view.getSite().getService(IHandlerService.class);\r
- try {\r
- handlerService.executeCommand("org.eclipse.ui.edit.selectAll", null);\r
- } catch (NotDefinedException e) {\r
- throw new ExecutionException(e.getMessage(), e);\r
- } catch (NotEnabledException e) {\r
- throw new ExecutionException(e.getMessage(), e);\r
- } catch (NotHandledException e) {\r
- throw new ExecutionException(e.getMessage(), e);\r
- }\r
- }\r
-\r
- void goNextError(IMarker[] allMarkers, IMarker startPoint, IWorkbenchPage page) throws ExecutionException {\r
- boolean found = false;\r
- List<IMarker> skipped = new ArrayList<IMarker>();\r
- for(IMarker marker: allMarkers) {\r
- if(!marker.exists()) {\r
- continue;\r
- }\r
- if(startPoint != null && startPoint.exists()) {\r
- if(startPoint.equals(marker)) {\r
- found = true;\r
- continue;\r
- }\r
- \r
- if(hasSameLineNumber(startPoint, marker)) {\r
- continue;\r
- }\r
- \r
- if(!found) {\r
- skipped.add(marker);\r
- continue;\r
- }\r
- }\r
- \r
- if(marker.getResource().getType() != IResource.FILE) {\r
- continue;\r
- }\r
-\r
- try {\r
- IDE.openEditor(page, marker, OpenStrategy.activateOnOpen());\r
- } catch (PartInitException e) {\r
- throw new ExecutionException(e.getMessage(), e);\r
- }\r
- return;\r
- }\r
- if(startPoint != null && startPoint.exists()) {\r
- skipped.add(startPoint);\r
- }\r
- \r
- for(IMarker marker: skipped) {\r
- if(marker.getResource().getType() != IResource.FILE) {\r
- continue;\r
- }\r
-\r
- try {\r
- IDE.openEditor(page, marker, OpenStrategy.activateOnOpen());\r
- } catch (PartInitException e) {\r
- throw new ExecutionException(e.getMessage(), e);\r
- }\r
- return;\r
- }\r
- \r
- }\r
-\r
- boolean hasSameLineNumber(IMarker marker1, IMarker marker2) throws ExecutionException {\r
- if(!marker1.getResource().equals(marker2.getResource())) {\r
- return false;\r
- }\r
- try {\r
- Integer line1 = (Integer)marker1.getAttribute(IMarker.LINE_NUMBER);\r
- Integer line2 = (Integer)marker2.getAttribute(IMarker.LINE_NUMBER);\r
- if(line1 == null) {\r
- return (line2 == null);\r
- }\r
- return line1.equals(line2);\r
- } catch (CoreException e) {\r
- throw new ExecutionException(e.getMessage(), e);\r
- }\r
- }\r
-}\r
+package jp.sourceforge.moreemacs.exp;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.NotEnabledException;
+import org.eclipse.core.commands.NotHandledException;
+import org.eclipse.core.commands.common.NotDefinedException;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.util.OpenStrategy;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchSite;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.ui.handlers.IHandlerService;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.views.markers.MarkerSupportView;
+
+public class NextErrorHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IWorkbenchSite site = HandlerUtil.getActiveSite(event);
+ IWorkbenchPage page = site.getPage();
+
+ MarkerSupportView problemView = (MarkerSupportView) page.findView("org.eclipse.ui.views.ProblemView");
+ if(problemView == null) {
+ return null;
+ }
+ @SuppressWarnings("restriction")
+ IMarker[] currentMarkers = problemView.getSelectedMarkers();
+ IMarker startPoint = (currentMarkers.length != 0)?currentMarkers[currentMarkers.length-1]:null;
+
+ selectAll(problemView);
+
+ @SuppressWarnings("restriction")
+ IMarker[] allMarkers = problemView.getSelectedMarkers();
+ goNextError(allMarkers, startPoint, page);
+
+ return null;
+ }
+
+ void selectAll(IViewPart view) throws ExecutionException {
+ view.getSite().getPage().activate(view);
+ IHandlerService handlerService = (IHandlerService)view.getSite().getService(IHandlerService.class);
+ try {
+ handlerService.executeCommand("org.eclipse.ui.edit.selectAll", null);
+ } catch (NotDefinedException e) {
+ throw new ExecutionException(e.getMessage(), e);
+ } catch (NotEnabledException e) {
+ throw new ExecutionException(e.getMessage(), e);
+ } catch (NotHandledException e) {
+ throw new ExecutionException(e.getMessage(), e);
+ }
+ }
+
+ void goNextError(IMarker[] allMarkers, IMarker startPoint, IWorkbenchPage page) throws ExecutionException {
+ boolean found = false;
+ List<IMarker> skipped = new ArrayList<IMarker>();
+ for(IMarker marker: allMarkers) {
+ if(!marker.exists()) {
+ continue;
+ }
+ if(startPoint != null && startPoint.exists()) {
+ if(startPoint.equals(marker)) {
+ found = true;
+ continue;
+ }
+
+ if(hasSameLineNumber(startPoint, marker)) {
+ continue;
+ }
+
+ if(!found) {
+ skipped.add(marker);
+ continue;
+ }
+ }
+
+ if(marker.getResource().getType() != IResource.FILE) {
+ continue;
+ }
+
+ try {
+ IDE.openEditor(page, marker, OpenStrategy.activateOnOpen());
+ } catch (PartInitException e) {
+ throw new ExecutionException(e.getMessage(), e);
+ }
+ return;
+ }
+ if(startPoint != null && startPoint.exists()) {
+ skipped.add(startPoint);
+ }
+
+ for(IMarker marker: skipped) {
+ if(marker.getResource().getType() != IResource.FILE) {
+ continue;
+ }
+
+ try {
+ IDE.openEditor(page, marker, OpenStrategy.activateOnOpen());
+ } catch (PartInitException e) {
+ throw new ExecutionException(e.getMessage(), e);
+ }
+ return;
+ }
+
+ }
+
+ boolean hasSameLineNumber(IMarker marker1, IMarker marker2) throws ExecutionException {
+ if(!marker1.getResource().equals(marker2.getResource())) {
+ return false;
+ }
+ try {
+ Integer line1 = (Integer)marker1.getAttribute(IMarker.LINE_NUMBER);
+ Integer line2 = (Integer)marker2.getAttribute(IMarker.LINE_NUMBER);
+ if(line1 == null) {
+ return (line2 == null);
+ }
+ return line1.equals(line2);
+ } catch (CoreException e) {
+ throw new ExecutionException(e.getMessage(), e);
+ }
+ }
+}