Bug fix: prevent NullPointerException when activating View during simulation
diff --git a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.core/src/org/eclipse/amp/agf/gef/EditPartViewPart.java b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.core/src/org/eclipse/amp/agf/gef/EditPartViewPart.java
index 4d04870..5ecabe0 100644
--- a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.core/src/org/eclipse/amp/agf/gef/EditPartViewPart.java
+++ b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.core/src/org/eclipse/amp/agf/gef/EditPartViewPart.java
@@ -41,191 +41,199 @@
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IPartListener2;
-public abstract class EditPartViewPart extends AGFViewPart{
+public abstract class EditPartViewPart extends AGFViewPart {
- private DefaultEditDomain editDomain;
- protected EditPartViewer viewer;
- private EditPartListener rootListener;
- public static double[] ZOOM_LEVELS = { .125, .25, .5, .75, 1.0, 1.25, 1.5, 2.0, 2.5, 3, 4, 6, 8 };
- private ZoomManager zoomer;
- private RootEditPart rootEditPart;
+ private DefaultEditDomain editDomain;
- public EditPartViewPart() {
- super();
- setEditDomain(new DefaultEditDomain(null));
- }
+ protected EditPartViewer viewer;
- protected void refresh(){
- viewer.getContents().refresh();
- }
-
- @Override
- public void createPartControl(Composite parent) {
- viewer = createViewer();
- viewer.createControl(parent);
- getEditDomain().addViewer(viewer);
- if (viewer == null) {
- throw new RuntimeException("Viewer is null for: " + this);
- }
- super.createPartControl(parent);
- getSite().getPage().addPartListener(new EditPartPartListener(this));
- }
+ private EditPartListener rootListener;
- protected EditPartViewer createViewer() {
- return new ScrollingGraphicalViewer();
- }
+ public static double[] ZOOM_LEVELS = { .125, .25, .5, .75, 1.0, 1.25, 1.5, 2.0, 2.5, 3, 4, 6, 8 };
- public abstract RootEditPart createRoot();
+ private ZoomManager zoomer;
- @Override
- public void setInput(IEditorInput input) {
- super.setInput(input);
- final ModelEditPartInput modelInput = (ModelEditPartInput) input;
- // setPartName(getName());
- if (input != null) {
- rootEditPart = createRoot();
- if (rootEditPart != null) {
- viewer.setRootEditPart(rootEditPart);
- createZoomer();
- }
- Object contents = null;
- if (modelInput.getSelection() instanceof IStructuredSelection) {
- contents = ((StructuredSelection) modelInput.getSelection()).getFirstElement();
- } else {
- contents = getModel();
- }
- EditPartFactory factory = modelInput.getFactory();
- if (factory == null) {
- factory = createFactory(getModel());
- }
- Assert.isNotNull(factory, "Could not find factory for: " + this);
- viewer.setEditPartFactory(factory);
- if (factory instanceof ISelectionProvider) {
- ISelectionProvider provider = (ISelectionProvider) factory;
- getViewSite().setSelectionProvider(provider);
- }
- viewer.setContents(contents);
- } else {
- // viewer.setContents(null);
- }
- }
+ private RootEditPart rootEditPart;
- protected EditPartFactory createFactory(Object contents) {
- IModelFactoryProvider provider = (IModelFactoryProvider) Platform.getAdapterManager()
- .getAdapter(contents, IModelFactoryProvider.class);
- if (provider == null) {
- throw new RuntimeException("No model factory provider defined for: " + contents);
- }
- return provider.getEditPartFactory(contents);
- }
+ public EditPartViewPart() {
+ super();
+ setEditDomain(new DefaultEditDomain(null));
+ }
- protected void createZoomer() {
- if (rootEditPart instanceof ScalableFreeformRootEditPart) {
- zoomer = ((ScalableFreeformRootEditPart) rootEditPart).getZoomManager();
- zoomer.setZoomLevels(ZOOM_LEVELS);
- zoomer.setZoomLevelContributions(Collections.singletonList(ZoomManager.FIT_ALL));
- }
- }
+ protected void refresh() {
+ if (viewer.getContents() != null) {
+ viewer.getContents().refresh();
+ }
+ }
- @Override
- public void createModelListeners() {
- super.createModelListeners();
- rootListener = new EditPartListener(this);
- rootListener.setWaitForUpdate(true);
- addModelListener(rootListener);
- if (viewer.getContents() instanceof IModelPart) {
- ((IModelPart) viewer.getContents()).createModelListeners();
- }
- viewer.getControl().addPaintListener(new PaintListener() {
- public void paintControl(PaintEvent e) {
- getRootListener().endPainting();
- }
- });
- }
+ @Override
+ public void createPartControl(Composite parent) {
+ viewer = createViewer();
+ viewer.createControl(parent);
+ getEditDomain().addViewer(viewer);
+ if (viewer == null) {
+ throw new RuntimeException("Viewer is null for: " + this);
+ }
+ super.createPartControl(parent);
+ getSite().getPage().addPartListener(new EditPartPartListener(this));
+ }
- public EditPart getEditPart() {
- @SuppressWarnings("rawtypes")
- List children = viewer.getRootEditPart().getChildren();
- if (children.size() > 0) {
- return (EditPart) children.get(0);
- }
- return null;
- }
+ protected EditPartViewer createViewer() {
+ return new ScrollingGraphicalViewer();
+ }
- @Override
- public Object getAdapter(@SuppressWarnings("rawtypes") Class type) {
- if (type == EditPartViewer.class) {
- return getViewer();
- }
- // TODO -- this should really be the child..
- if (type == EditPart.class && getViewer() != null) {
- return getViewer().getRootEditPart();
- }
- if (type == IFigure.class && getViewer() != null) {
- return ((GraphicalEditPart) getViewer().getRootEditPart()).getFigure();
- }
- if (type == ZoomManager.class) {
- return getZoomer();
- }
- return super.getAdapter(type);
- }
+ public abstract RootEditPart createRoot();
- public EditPartViewer getViewer() {
- return viewer;
- }
+ @Override
+ public void setInput(IEditorInput input) {
+ super.setInput(input);
+ final ModelEditPartInput modelInput = (ModelEditPartInput) input;
+ // setPartName(getName());
+ if (input != null) {
+ rootEditPart = createRoot();
+ if (rootEditPart != null) {
+ viewer.setRootEditPart(rootEditPart);
+ createZoomer();
+ }
+ Object contents = null;
+ if (modelInput.getSelection() instanceof IStructuredSelection) {
+ contents = ((StructuredSelection) modelInput.getSelection()).getFirstElement();
+ } else {
+ contents = getModel();
+ }
+ EditPartFactory factory = modelInput.getFactory();
+ if (factory == null) {
+ factory = createFactory(getModel());
+ }
+ Assert.isNotNull(factory, "Could not find factory for: " + this);
+ viewer.setEditPartFactory(factory);
+ if (factory instanceof ISelectionProvider) {
+ ISelectionProvider provider = (ISelectionProvider) factory;
+ getViewSite().setSelectionProvider(provider);
+ }
+ viewer.setContents(contents);
+ } else {
+ // viewer.setContents(null);
+ }
+ }
- public EditPartListener getRootListener() {
- return rootListener;
- }
+ protected EditPartFactory createFactory(Object contents) {
+ IModelFactoryProvider provider = (IModelFactoryProvider) Platform.getAdapterManager().getAdapter(contents,
+ IModelFactoryProvider.class);
+ if (provider == null) {
+ throw new RuntimeException("No model factory provider defined for: " + contents);
+ }
+ return provider.getEditPartFactory(contents);
+ }
- /**
- * Sets the EditDomain for this EditorPart.
- *
- * @param ed the domain
- */
- protected void setEditDomain(DefaultEditDomain ed) {
- this.editDomain = ed;
- }
+ protected void createZoomer() {
+ if (rootEditPart instanceof ScalableFreeformRootEditPart) {
+ zoomer = ((ScalableFreeformRootEditPart) rootEditPart).getZoomManager();
+ zoomer.setZoomLevels(ZOOM_LEVELS);
+ zoomer.setZoomLevelContributions(Collections.singletonList(ZoomManager.FIT_ALL));
+ }
+ }
- /**
- * Returns the edit domain.
- *
- * @return the edit domain
- */
- protected DefaultEditDomain getEditDomain() {
- return editDomain;
- }
+ @Override
+ public void createModelListeners() {
+ super.createModelListeners();
+ rootListener = new EditPartListener(this);
+ rootListener.setWaitForUpdate(true);
+ addModelListener(rootListener);
+ if (viewer.getContents() instanceof IModelPart) {
+ ((IModelPart) viewer.getContents()).createModelListeners();
+ }
+ viewer.getControl().addPaintListener(new PaintListener() {
- public ZoomManager getZoomer() {
- if (rootEditPart instanceof ScalableFreeformRootEditPart) {
- return ((ScalableFreeformRootEditPart) rootEditPart).getZoomManager();
- } else if (rootEditPart instanceof ScalableRootEditPart) {
- return ((ScalableRootEditPart) rootEditPart).getZoomManager();
- }
- return null;
- }
+ public void paintControl(PaintEvent e) {
+ getRootListener().endPainting();
+ }
+ });
+ }
- /**
- * @return the rootEditPart
- */
- public RootEditPart getRootEditPart() {
- return rootEditPart;
- }
+ public EditPart getEditPart() {
+ @SuppressWarnings("rawtypes")
+ List children = viewer.getRootEditPart().getChildren();
+ if (children.size() > 0) {
+ return (EditPart) children.get(0);
+ }
+ return null;
+ }
- /**
- * @return
- * @see org.eclipse.amp.agf.gef.AGFViewPart#getSelectionProvider()
- */
- @Override
- protected ISelectionProvider getSelectionProvider() {
- return viewer;
- }
-
- protected String getId(){
- return getSite().getId();
- }
-
- protected void removePartListener(IPartListener2 lis){
- getSite().getPage().removePartListener(lis);
- }
+ @Override
+ public Object getAdapter(@SuppressWarnings("rawtypes") Class type) {
+ if (type == EditPartViewer.class) {
+ return getViewer();
+ }
+ // TODO -- this should really be the child..
+ if (type == EditPart.class && getViewer() != null) {
+ return getViewer().getRootEditPart();
+ }
+ if (type == IFigure.class && getViewer() != null) {
+ return ((GraphicalEditPart) getViewer().getRootEditPart()).getFigure();
+ }
+ if (type == ZoomManager.class) {
+ return getZoomer();
+ }
+ return super.getAdapter(type);
+ }
+
+ public EditPartViewer getViewer() {
+ return viewer;
+ }
+
+ public EditPartListener getRootListener() {
+ return rootListener;
+ }
+
+ /**
+ * Sets the EditDomain for this EditorPart.
+ *
+ * @param ed the domain
+ */
+ protected void setEditDomain(DefaultEditDomain ed) {
+ this.editDomain = ed;
+ }
+
+ /**
+ * Returns the edit domain.
+ *
+ * @return the edit domain
+ */
+ protected DefaultEditDomain getEditDomain() {
+ return editDomain;
+ }
+
+ public ZoomManager getZoomer() {
+ if (rootEditPart instanceof ScalableFreeformRootEditPart) {
+ return ((ScalableFreeformRootEditPart) rootEditPart).getZoomManager();
+ } else if (rootEditPart instanceof ScalableRootEditPart) {
+ return ((ScalableRootEditPart) rootEditPart).getZoomManager();
+ }
+ return null;
+ }
+
+ /**
+ * @return the rootEditPart
+ */
+ public RootEditPart getRootEditPart() {
+ return rootEditPart;
+ }
+
+ /**
+ * @return
+ * @see org.eclipse.amp.agf.gef.AGFViewPart#getSelectionProvider()
+ */
+ @Override
+ protected ISelectionProvider getSelectionProvider() {
+ return viewer;
+ }
+
+ protected String getId() {
+ return getSite().getId();
+ }
+
+ protected void removePartListener(IPartListener2 lis) {
+ getSite().getPage().removePartListener(lis);
+ }
}
\ No newline at end of file