Преглед изворни кода

Added some NullPointer Checks to handler

benjamin.schwertfeger@googlemail.com пре 11 година
родитељ
комит
afee8b5ac7

+ 8 - 2
plugins/org.yakindu.sct.refactoring/src/org/yakindu/sct/refactoring/handlers/AbstractStateRefactoringHandler.java

@@ -10,6 +10,8 @@
  */
 package org.yakindu.sct.refactoring.handlers;
 
+import java.util.Collections;
+
 import org.eclipse.jface.viewers.ISelection;
 import org.yakindu.sct.model.sgraph.State;
 import org.yakindu.sct.refactoring.refactor.AbstractRefactoring;
@@ -30,7 +32,11 @@ public abstract class AbstractStateRefactoringHandler extends
 	public void setContext(AbstractRefactoring<State> refactoring,
 			ISelection selection) {
 		StateEditPart element = (StateEditPart) getFirstElement(selection);
-		State state = element.resolveSemanticElement();
-		refactoring.setContextObjects(Lists.newArrayList(state));
+		if (element == null) {
+			refactoring.setContextObjects(Collections.<State>emptyList());
+		} else {
+			State state = element.resolveSemanticElement();
+			refactoring.setContextObjects(Lists.newArrayList(state));
+		}
 	}
 }

+ 8 - 2
plugins/org.yakindu.sct.refactoring/src/org/yakindu/sct/refactoring/handlers/AbstractViewRefactoringHandler.java

@@ -10,6 +10,8 @@
  */
 package org.yakindu.sct.refactoring.handlers;
 
+import java.util.Collections;
+
 import org.eclipse.gmf.runtime.notation.View;
 import org.eclipse.jface.viewers.ISelection;
 import org.yakindu.sct.refactoring.refactor.AbstractRefactoring;
@@ -30,8 +32,12 @@ public abstract class AbstractViewRefactoringHandler extends
 	public void setContext(AbstractRefactoring<View> refactoring,
 			ISelection selection) {
 		StateEditPart firstElement = (StateEditPart) getFirstElement(selection);
-		refactoring.setContextObjects(Lists.newArrayList(firstElement
-				.getNotationView()));
+		if (firstElement == null) {
+			refactoring.setContextObjects(Collections.<View>emptyList());
+		} else {
+			refactoring.setContextObjects(Lists.newArrayList(firstElement
+					.getNotationView()));
+		}
 	}
 
 }

+ 12 - 1
plugins/org.yakindu.sct.refactoring/src/org/yakindu/sct/refactoring/handlers/impl/RenameElementHandler.java

@@ -21,6 +21,7 @@ import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.jface.dialogs.IInputValidator;
 import org.eclipse.jface.dialogs.InputDialog;
 import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionProvider;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.window.Window;
 import org.eclipse.ui.IWorkbenchPartSite;
@@ -137,8 +138,18 @@ public class RenameElementHandler extends AbstractRefactoringHandler<NamedElemen
 	@Override
 	public boolean isEnabled() {
 		IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+		if (window == null) {
+			return false;
+		}
 		IWorkbenchPartSite site = window.getActivePage().getActiveEditor().getSite();
-		ISelection currentSelection = site.getSelectionProvider().getSelection();
+		if (site == null) {
+			return false;
+		}
+		ISelectionProvider selectionProvider = site.getSelectionProvider();
+		if (selectionProvider == null) {
+			return false;
+		}
+		ISelection currentSelection = selectionProvider.getSelection();
 		setContext(refactoring, currentSelection);
 		return refactoring.isExecutable();
 	}