Bug 565296 - Allow to pause/resume ViewModelContexts

Added new methods pause/reactivate which allow to ignore notifications
especially while the context is cached.

Pausing a ViewModelContext ignores incoming notifications.
Reactivation does not rereport the ignored notifications.
If you want to update the ViewModelContext state after it was reactived
you should call `changeDomainModel(EObject)` or trigger an event that
fires a notification.

Change-Id: Iac5ba849c962f1a2d16f455091f39bb4be8fff3e
Signed-off-by: Eugen Neufeld <eneufeld@eclipsesource.com>
diff --git a/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/view/spi/swt/masterdetail/DetailViewManager.java b/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/view/spi/swt/masterdetail/DetailViewManager.java
index 3a6e177..1a586e9 100644
--- a/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/view/spi/swt/masterdetail/DetailViewManager.java
+++ b/bundles/org.eclipse.emf.ecp.ui.view.swt/src/org/eclipse/emf/ecp/view/spi/swt/masterdetail/DetailViewManager.java
@@ -208,6 +208,7 @@
 		}
 
 		final ViewModelContext context = cached.getViewModelContext();
+		context.reactivate();
 		if (context.getDomainModel() != eObject) {
 			context.changeDomainModel(eObject);
 		}
@@ -640,6 +641,7 @@
 	public boolean cacheView(ECPSWTView ecpView) {
 		final Control control = ecpView.getSWTControl();
 
+		ecpView.getViewModelContext().pause();
 		final boolean result = cache.cacheView(ecpView);
 
 		// Track it if it was successfully cached
diff --git a/bundles/org.eclipse.emf.ecp.view.context/src/org/eclipse/emf/ecp/view/internal/context/ViewModelContextImpl.java b/bundles/org.eclipse.emf.ecp.view.context/src/org/eclipse/emf/ecp/view/internal/context/ViewModelContextImpl.java
index 2d2691a..122a4b5 100644
--- a/bundles/org.eclipse.emf.ecp.view.context/src/org/eclipse/emf/ecp/view/internal/context/ViewModelContextImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.context/src/org/eclipse/emf/ecp/view/internal/context/ViewModelContextImpl.java
@@ -168,6 +168,8 @@
 
 	private final VElement parentVElement;
 
+	private boolean pause = false;
+
 	/**
 	 * Instantiates a new view model context impl.
 	 *
@@ -735,10 +737,7 @@
 		public void notifyChanged(Notification notification) {
 			super.notifyChanged(notification);
 			// do not notify while being disposed
-			if (isDisposing) {
-				return;
-			}
-			if (isDisposed) {
+			if (isDisposing || isDisposed || pause) {
 				return;
 			}
 			if (notification.isTouch()) {
@@ -754,7 +753,7 @@
 		protected void addAdapter(Notifier notifier) {
 			super.addAdapter(notifier);
 			// do not notify while being disposed
-			if (isDisposing || isDisposed) {
+			if (isDisposing || isDisposed || pause) {
 				return;
 			}
 			for (final ModelChangeListener modelChangeListener : viewModelChangeListeners) {
@@ -768,7 +767,7 @@
 		protected void removeAdapter(Notifier notifier) {
 			super.removeAdapter(notifier);
 			// do not notify while being disposed
-			if (isDisposing) {
+			if (isDisposing || isDisposed || pause) {
 				return;
 			}
 			if (VElement.class.isInstance(notifier)) {
@@ -834,7 +833,7 @@
 			super.notifyChanged(notification);
 
 			// do not notify while being disposed
-			if (isDisposing) {
+			if (isDisposing || isDisposed || pause) {
 				return;
 			}
 
@@ -848,7 +847,7 @@
 		protected void addAdapter(Notifier notifier) {
 			super.addAdapter(notifier);
 			// do not notify while being disposed
-			if (isDisposing) {
+			if (isDisposing || isDisposed || pause) {
 				return;
 			}
 			for (final ModelChangeListener modelChangeListener : domainModelChangeListeners) {
@@ -862,7 +861,7 @@
 		protected void removeAdapter(Notifier notifier) {
 			super.removeAdapter(notifier);
 			// do not notify while being disposed
-			if (isDisposing) {
+			if (isDisposing || isDisposed || pause) {
 				return;
 			}
 			for (final ModelChangeListener modelChangeListener : domainModelChangeListeners) {
@@ -1327,4 +1326,14 @@
 			return listeners.iterator();
 		}
 	}
+
+	@Override
+	public void pause() {
+		pause = true;
+	}
+
+	@Override
+	public void reactivate() {
+		pause = false;
+	}
 }
diff --git a/bundles/org.eclipse.emf.ecp.view.context/src/org/eclipse/emf/ecp/view/spi/context/ViewModelContext.java b/bundles/org.eclipse.emf.ecp.view.context/src/org/eclipse/emf/ecp/view/spi/context/ViewModelContext.java
index a5d72af..49f0d22 100644
--- a/bundles/org.eclipse.emf.ecp.view.context/src/org/eclipse/emf/ecp/view/spi/context/ViewModelContext.java
+++ b/bundles/org.eclipse.emf.ecp.view.context/src/org/eclipse/emf/ecp/view/spi/context/ViewModelContext.java
@@ -244,4 +244,23 @@
 	 * @since 1.5
 	 */
 	void removeContextUser(Object user);
+
+	/**
+	 * Pauses the Context by not reacting to any notifications anymore.
+	 *
+	 * @since 1.25
+	 */
+	void pause();
+
+	/**
+	 * Reactive the Context by reacting to notifications again.
+	 * Please be aware that reactiving the ViewModelContext will not
+	 * rereport the notifications that were ignored during pause.
+	 * In order to update the state after reactivation you
+	 * should call {@link #changeDomainModel(EObject)} or
+	 * trigger an event that fires a notification.
+	 *
+	 * @since 1.25
+	 */
+	void reactivate();
 }
diff --git a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core/src/org/eclipse/emfforms/internal/spreadsheet/core/EMFFormsSpreadsheetViewModelContext.java b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core/src/org/eclipse/emfforms/internal/spreadsheet/core/EMFFormsSpreadsheetViewModelContext.java
index 70e54de..c816b6d 100644
--- a/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core/src/org/eclipse/emfforms/internal/spreadsheet/core/EMFFormsSpreadsheetViewModelContext.java
+++ b/bundles/spreadsheet/org.eclipse.emfforms.spreadsheet.core/src/org/eclipse/emfforms/internal/spreadsheet/core/EMFFormsSpreadsheetViewModelContext.java
@@ -79,71 +79,36 @@
 		}
 	}
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#registerDomainChangeListener(org.eclipse.emf.ecp.view.spi.model.ModelChangeListener)
-	 */
 	@Override
 	public void registerDomainChangeListener(ModelChangeListener modelChangeListener) {
 		// intentionally left empty
 	}
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#unregisterDomainChangeListener(org.eclipse.emf.ecp.view.spi.model.ModelChangeListener)
-	 */
 	@Override
 	public void unregisterDomainChangeListener(ModelChangeListener modelChangeListener) {
 		// intentionally left empty
 	}
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getViewModel()
-	 */
 	@Override
 	public VElement getViewModel() {
 		return view;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getDomainModel()
-	 */
 	@Override
 	public EObject getDomainModel() {
 		return domainModel;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#registerViewChangeListener(org.eclipse.emf.ecp.view.spi.model.ModelChangeListener)
-	 */
 	@Override
 	public void registerViewChangeListener(ModelChangeListener modelChangeListener) {
 		// intentionally left empty
 	}
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#unregisterViewChangeListener(org.eclipse.emf.ecp.view.spi.model.ModelChangeListener)
-	 */
 	@Override
 	public void unregisterViewChangeListener(ModelChangeListener modelChangeListener) {
 		// intentionally left empty
 	}
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#dispose()
-	 */
 	@Override
 	public void dispose() {
 		if (vms != null) {
@@ -152,55 +117,28 @@
 		contextValues.clear();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#hasService(java.lang.Class)
-	 */
 	@Override
 	public <T> boolean hasService(Class<T> serviceType) {
 		return false;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getService(java.lang.Class)
-	 */
 	@Override
 	public <T> T getService(Class<T> serviceType) {
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getControlsFor(org.eclipse.emf.ecore.EStructuralFeature.Setting)
-	 * @deprecated
-	 */
 	@Deprecated
 	@Override
 	public Set<VControl> getControlsFor(Setting setting) {
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getControlsFor(org.eclipse.emf.ecp.common.spi.UniqueSetting)
-	 * @deprecated
-	 */
 	@Deprecated
 	@Override
 	public Set<VElement> getControlsFor(UniqueSetting setting) {
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getContextValue(java.lang.String)
-	 */
 	@Override
 	public Object getContextValue(String key) {
 		if (contextValues.containsKey(key)) {
@@ -212,11 +150,6 @@
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#putContextValue(java.lang.String, java.lang.Object)
-	 */
 	@Override
 	public void putContextValue(String key, Object value) {
 		contextValues.put(key, value);
@@ -236,50 +169,25 @@
 		return new EMFFormsSpreadsheetViewModelContext(vView, eObject, this);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#registerDisposeListener(org.eclipse.emf.ecp.view.spi.context.ViewModelContextDisposeListener)
-	 */
 	@Override
 	public void registerDisposeListener(ViewModelContextDisposeListener listener) {
 		// intentionally left empty
 	}
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#addContextUser(java.lang.Object)
-	 */
 	@Override
 	public void addContextUser(Object user) {
 		// intentionally left empty
 	}
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#removeContextUser(java.lang.Object)
-	 */
 	@Override
 	public void removeContextUser(Object user) {
 		// intentionally left empty
 	}
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#registerEMFFormsContextListener(org.eclipse.emfforms.spi.core.services.view.EMFFormsContextListener)
-	 */
 	@Override
 	public void registerEMFFormsContextListener(EMFFormsContextListener contextListener) {
 	}
 
-	/**
-	 * {@inheritDoc}
-	 *
-	 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#unregisterEMFFormsContextListener(org.eclipse.emfforms.spi.core.services.view.EMFFormsContextListener)
-	 */
 	@Override
 	public void unregisterEMFFormsContextListener(EMFFormsContextListener contextListener) {
 	}
@@ -294,34 +202,29 @@
 		throw new UnsupportedOperationException();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 * 
-	 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#changeDomainModel(org.eclipse.emf.ecore.EObject)
-	 */
 	@Override
 	public void changeDomainModel(EObject newDomainModel) {
 		// Do not support feature
 	}
 
-	/**
-	 * {@inheritDoc}
-	 * 
-	 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#registerRootDomainModelChangeListener(org.eclipse.emfforms.spi.core.services.view.RootDomainModelChangeListener)
-	 */
 	@Override
 	public void registerRootDomainModelChangeListener(RootDomainModelChangeListener rootDomainModelChangeListener) {
 		// Do not support feature
 	}
 
-	/**
-	 * {@inheritDoc}
-	 * 
-	 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#unregisterRootDomainModelChangeListener(org.eclipse.emfforms.spi.core.services.view.RootDomainModelChangeListener)
-	 */
 	@Override
 	public void unregisterRootDomainModelChangeListener(RootDomainModelChangeListener rootDomainModelChangeListener) {
 		// Do not support feature
 	}
 
+	@Override
+	public void pause() {
+		// Do not support feature
+	}
+
+	@Override
+	public void reactivate() {
+		// Do not support feature
+	}
+
 }
diff --git a/tests/org.eclipse.emf.ecp.view.rule.test/src/org/eclipse/emf/ecp/view/rule/test/RuleService_PTest.java b/tests/org.eclipse.emf.ecp.view.rule.test/src/org/eclipse/emf/ecp/view/rule/test/RuleService_PTest.java
index c25fc85..2d85541 100644
--- a/tests/org.eclipse.emf.ecp.view.rule.test/src/org/eclipse/emf/ecp/view/rule/test/RuleService_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.rule.test/src/org/eclipse/emf/ecp/view/rule/test/RuleService_PTest.java
@@ -183,9 +183,6 @@
 		}
 
 		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getControlsFor(org.eclipse.emf.ecore.EStructuralFeature.Setting)
 		 * @deprecated
 		 */
 		@Deprecated
@@ -195,9 +192,6 @@
 		}
 
 		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getControlsFor(org.eclipse.emf.ecp.common.spi.UniqueSetting)
 		 * @deprecated
 		 */
 		@Deprecated
@@ -206,22 +200,11 @@
 			return null;
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getContextValue(java.lang.String)
-		 */
 		@Override
 		public Object getContextValue(String key) {
 			return null;
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#putContextValue(java.lang.String,
-		 *      java.lang.Object)
-		 */
 		@Override
 		public void putContextValue(String key, Object value) {
 		}
@@ -239,107 +222,63 @@
 			return null;
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#registerDisposeListener(org.eclipse.emf.ecp.view.spi.context.ViewModelContextDisposeListener)
-		 */
 		@Override
 		public void registerDisposeListener(ViewModelContextDisposeListener listener) {
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#addContextUser(java.lang.Object)
-		 */
 		@Override
 		public void addContextUser(Object user) {
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#removeContextUser(java.lang.Object)
-		 */
 		@Override
 		public void removeContextUser(Object user) {
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#registerEMFFormsContextListener(org.eclipse.emfforms.spi.core.services.view.EMFFormsContextListener)
-		 */
 		@Override
 		public void registerEMFFormsContextListener(EMFFormsContextListener contextListener) {
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#unregisterEMFFormsContextListener(org.eclipse.emfforms.spi.core.services.view.EMFFormsContextListener)
-		 */
 		@Override
 		public void unregisterEMFFormsContextListener(EMFFormsContextListener contextListener) {
+			// do nothing
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getParentContext()
-		 */
 		@Override
 		public ViewModelContext getParentContext() {
-			// TODO Auto-generated method stub
 			return null;
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#changeDomainModel(org.eclipse.emf.ecore.EObject)
-		 */
 		@Override
 		public void changeDomainModel(EObject newDomainModel) {
-			// TODO Auto-generated method stub
-
+			// do nothing
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#registerRootDomainModelChangeListener(org.eclipse.emfforms.spi.core.services.view.RootDomainModelChangeListener)
-		 */
 		@Override
 		public void registerRootDomainModelChangeListener(RootDomainModelChangeListener rootDomainModelChangeListener) {
-			// TODO Auto-generated method stub
-
+			// do nothing
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#unregisterRootDomainModelChangeListener(org.eclipse.emfforms.spi.core.services.view.RootDomainModelChangeListener)
-		 */
 		@Override
 		public void unregisterRootDomainModelChangeListener(
 			RootDomainModelChangeListener rootDomainModelChangeListener) {
-			// TODO Auto-generated method stub
-
+			// do nothing
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getParentVElement()
-		 */
 		@Override
 		public VElement getParentVElement() {
-			// TODO Auto-generated method stub
 			return null;
 		}
 
+		@Override
+		public void pause() {
+			// do nothing
+		}
+
+		@Override
+		public void reactivate() {
+			// do nothing
+		}
+
 	}
 
 	/** The player. */
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/internal/table/nebula/grid/GridTable_PTest.java b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/internal/table/nebula/grid/GridTable_PTest.java
index f58d10a..41e6c9e 100644
--- a/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/internal/table/nebula/grid/GridTable_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.nebula.grid.test/src/org/eclipse/emf/ecp/view/internal/table/nebula/grid/GridTable_PTest.java
@@ -1055,6 +1055,16 @@
 			return null;
 		}
 
+		@Override
+		public void pause() {
+			// do nothing
+		}
+
+		@Override
+		public void reactivate() {
+			// do nothing
+		}
+
 	}
 
 	private static class PrintStreamWrapper extends PrintStream {
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/spi/table/swt/SWTTable_PTest.java b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/spi/table/swt/SWTTable_PTest.java
index 4626cc1..99815ed 100644
--- a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/spi/table/swt/SWTTable_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/spi/table/swt/SWTTable_PTest.java
@@ -1639,37 +1639,19 @@
 			contextValues.put(key, value);
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#registerDisposeListener(org.eclipse.emf.ecp.view.spi.context.ViewModelContextDisposeListener)
-		 */
 		@Override
 		public void registerDisposeListener(ViewModelContextDisposeListener listener) {
-			// TODO Auto-generated method stub
-
+			// do nothing
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#addContextUser(java.lang.Object)
-		 */
 		@Override
 		public void addContextUser(Object user) {
-			// TODO Auto-generated method stub
-
+			// do nothing
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#removeContextUser(java.lang.Object)
-		 */
 		@Override
 		public void removeContextUser(Object user) {
-			// TODO Auto-generated method stub
-
+			// do nothing
 		}
 
 		@Deprecated
@@ -1688,80 +1670,50 @@
 			return new ViewModelContextWithoutServices(vView);
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#registerEMFFormsContextListener(org.eclipse.emfforms.spi.core.services.view.EMFFormsContextListener)
-		 */
 		@Override
 		public void registerEMFFormsContextListener(EMFFormsContextListener contextListener) {
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#unregisterEMFFormsContextListener(org.eclipse.emfforms.spi.core.services.view.EMFFormsContextListener)
-		 */
 		@Override
 		public void unregisterEMFFormsContextListener(EMFFormsContextListener contextListener) {
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getParentContext()
-		 */
 		@Override
 		public ViewModelContext getParentContext() {
-			// TODO Auto-generated method stub
 			return null;
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#changeDomainModel(org.eclipse.emf.ecore.EObject)
-		 */
 		@Override
 		public void changeDomainModel(EObject newDomainModel) {
-			// TODO Auto-generated method stub
-
+			// do nothing
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#registerRootDomainModelChangeListener(org.eclipse.emfforms.spi.core.services.view.RootDomainModelChangeListener)
-		 */
 		@Override
 		public void registerRootDomainModelChangeListener(RootDomainModelChangeListener rootDomainModelChangeListener) {
-			// TODO Auto-generated method stub
-
+			// do nothing
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#unregisterRootDomainModelChangeListener(org.eclipse.emfforms.spi.core.services.view.RootDomainModelChangeListener)
-		 */
 		@Override
 		public void unregisterRootDomainModelChangeListener(
 			RootDomainModelChangeListener rootDomainModelChangeListener) {
-			// TODO Auto-generated method stub
-
+			// do nothing
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getParentVElement()
-		 */
 		@Override
 		public VElement getParentVElement() {
-			// TODO Auto-generated method stub
 			return null;
 		}
 
+		@Override
+		public void pause() {
+			// do nothing
+		}
+
+		@Override
+		public void reactivate() {
+			// do nothing
+		}
+
 	}
 
 	private static class PrintStreamWrapper extends PrintStream {
diff --git a/tests/org.eclipse.emf.ecp.view.unset.test/src/org/eclipse/emf/ecp/view/unset/test/UnsetService_PTest.java b/tests/org.eclipse.emf.ecp.view.unset.test/src/org/eclipse/emf/ecp/view/unset/test/UnsetService_PTest.java
index 2f62cf4..d795e41 100644
--- a/tests/org.eclipse.emf.ecp.view.unset.test/src/org/eclipse/emf/ecp/view/unset/test/UnsetService_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.unset.test/src/org/eclipse/emf/ecp/view/unset/test/UnsetService_PTest.java
@@ -1518,49 +1518,23 @@
 			return null;
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getContextValue(java.lang.String)
-		 */
 		@Override
 		public Object getContextValue(String key) {
 			return null;
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#putContextValue(java.lang.String,
-		 *      java.lang.Object)
-		 */
 		@Override
 		public void putContextValue(String key, Object value) {
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#registerDisposeListener(org.eclipse.emf.ecp.view.spi.context.ViewModelContextDisposeListener)
-		 */
 		@Override
 		public void registerDisposeListener(ViewModelContextDisposeListener listener) {
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#addContextUser(java.lang.Object)
-		 */
 		@Override
 		public void addContextUser(Object user) {
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#removeContextUser(java.lang.Object)
-		 */
 		@Override
 		public void removeContextUser(Object user) {
 		}
@@ -1578,81 +1552,50 @@
 			return null;
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#registerEMFFormsContextListener(org.eclipse.emfforms.spi.core.services.view.EMFFormsContextListener)
-		 */
 		@Override
 		public void registerEMFFormsContextListener(EMFFormsContextListener contextListener) {
 			contextListener.contextInitialised();
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#unregisterEMFFormsContextListener(org.eclipse.emfforms.spi.core.services.view.EMFFormsContextListener)
-		 */
 		@Override
 		public void unregisterEMFFormsContextListener(EMFFormsContextListener contextListener) {
 		}
 
-		/**
-		 * {@inheritDoc}
-		 * 
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getParentContext()
-		 */
 		@Override
 		public ViewModelContext getParentContext() {
-			// TODO Auto-generated method stub
 			return null;
 		}
 
-		/**
-		 * {@inheritDoc}
-		 * 
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getParentVElement()
-		 */
 		@Override
 		public VElement getParentVElement() {
-			// TODO Auto-generated method stub
 			return null;
 		}
 
-		/**
-		 * {@inheritDoc}
-		 * 
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#changeDomainModel(org.eclipse.emf.ecore.EObject)
-		 */
 		@Override
 		public void changeDomainModel(EObject newDomainModel) {
-			// TODO Auto-generated method stub
-
+			// do nothing
 		}
 
-		/**
-		 * {@inheritDoc}
-		 * 
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#registerRootDomainModelChangeListener(org.eclipse.emfforms.spi.core.services.view.RootDomainModelChangeListener)
-		 */
 		@Override
 		public void registerRootDomainModelChangeListener(RootDomainModelChangeListener rootDomainModelChangeListener) {
-			// TODO Auto-generated method stub
-
+			// do nothing
 		}
 
-		/**
-		 * {@inheritDoc}
-		 * 
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#unregisterRootDomainModelChangeListener(org.eclipse.emfforms.spi.core.services.view.RootDomainModelChangeListener)
-		 */
 		@Override
 		public void unregisterRootDomainModelChangeListener(
 			RootDomainModelChangeListener rootDomainModelChangeListener) {
-			// TODO Auto-generated method stub
-
+			// do nothing
 		}
 
+		@Override
+		public void pause() {
+			// do nothing
+		}
+
+		@Override
+		public void reactivate() {
+			// do nothing
+		}
 	}
 
 }
diff --git a/tests/org.eclipse.emf.ecp.view.viewproxy.test/src/org/eclipse/emf/ecp/view/internal/viewproxy/resolver/ResolverViewService_PTest.java b/tests/org.eclipse.emf.ecp.view.viewproxy.test/src/org/eclipse/emf/ecp/view/internal/viewproxy/resolver/ResolverViewService_PTest.java
index 2f36f61..24d5952 100644
--- a/tests/org.eclipse.emf.ecp.view.viewproxy.test/src/org/eclipse/emf/ecp/view/internal/viewproxy/resolver/ResolverViewService_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.viewproxy.test/src/org/eclipse/emf/ecp/view/internal/viewproxy/resolver/ResolverViewService_PTest.java
@@ -96,131 +96,63 @@
 
 		private final Map<String, Object> context = new LinkedHashMap<String, Object>();
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#registerDomainChangeListener(org.eclipse.emf.ecp.view.spi.model.ModelChangeListener)
-		 */
 		@Override
 		public void registerDomainChangeListener(ModelChangeListener modelChangeListener) {
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#unregisterDomainChangeListener(org.eclipse.emf.ecp.view.spi.model.ModelChangeListener)
-		 */
 		@Override
 		public void unregisterDomainChangeListener(ModelChangeListener modelChangeListener) {
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getViewModel()
-		 */
 		@Override
 		public VElement getViewModel() {
 			return view;
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getDomainModel()
-		 */
 		@Override
 		public EObject getDomainModel() {
 			return domain;
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#registerViewChangeListener(org.eclipse.emf.ecp.view.spi.model.ModelChangeListener)
-		 */
 		@Override
 		public void registerViewChangeListener(ModelChangeListener modelChangeListener) {
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#unregisterViewChangeListener(org.eclipse.emf.ecp.view.spi.model.ModelChangeListener)
-		 */
 		@Override
 		public void unregisterViewChangeListener(ModelChangeListener modelChangeListener) {
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#dispose()
-		 */
 		@Override
 		public void dispose() {
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#hasService(java.lang.Class)
-		 */
 		@Override
 		public <T> boolean hasService(Class<T> serviceType) {
 			return false;
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getService(java.lang.Class)
-		 */
 		@Override
 		public <T> T getService(Class<T> serviceType) {
 			return null;
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getControlsFor(org.eclipse.emf.ecore.EStructuralFeature.Setting)
-		 * @deprecated
-		 */
 		@Deprecated
 		@Override
 		public Set<VControl> getControlsFor(Setting setting) {
 			return null;
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getControlsFor(org.eclipse.emf.ecp.common.spi.UniqueSetting)
-		 * @deprecated
-		 */
 		@Deprecated
 		@Override
 		public Set<VElement> getControlsFor(org.eclipse.emf.ecp.common.spi.UniqueSetting setting) {
 			return null;
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getContextValue(java.lang.String)
-		 */
 		@Override
 		public Object getContextValue(String key) {
 			return context.get(key);
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#putContextValue(java.lang.String,
-		 *      java.lang.Object)
-		 */
 		@Override
 		public void putContextValue(String key, Object value) {
 			context.put(key, value);
@@ -230,127 +162,74 @@
 		@Override
 		public ViewModelContext getChildContext(EObject eObject, VElement parent, VView vView,
 			ViewModelService... viewModelServices) {
-
 			return null;
 		}
 
 		@Override
 		public ViewModelContext getChildContext(EObject eObject, VElement parent, VView vView,
 			ViewModelServiceProvider viewModelServiceProvider) {
-
 			return null;
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#registerDisposeListener(org.eclipse.emf.ecp.view.spi.context.ViewModelContextDisposeListener)
-		 */
 		@Override
 		public void registerDisposeListener(ViewModelContextDisposeListener listener) {
-			// TODO Auto-generated method stub
-
+			// do nothing
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#addContextUser(java.lang.Object)
-		 */
 		@Override
 		public void addContextUser(Object user) {
-			// TODO Auto-generated method stub
-
+			// do nothing
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#removeContextUser(java.lang.Object)
-		 */
 		@Override
 		public void removeContextUser(Object user) {
-			// TODO Auto-generated method stub
-
+			// do nothing
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#registerEMFFormsContextListener(org.eclipse.emfforms.spi.core.services.view.EMFFormsContextListener)
-		 */
 		@Override
 		public void registerEMFFormsContextListener(EMFFormsContextListener contextListener) {
-			// TODO Auto-generated method stub
-
+			// do nothing
 		}
 
-		/**
-		 * {@inheritDoc}
-		 *
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#unregisterEMFFormsContextListener(org.eclipse.emfforms.spi.core.services.view.EMFFormsContextListener)
-		 */
 		@Override
 		public void unregisterEMFFormsContextListener(EMFFormsContextListener contextListener) {
-			// TODO Auto-generated method stub
-
+			// do nothing
 		}
 
-		/**
-		 * {@inheritDoc}
-		 * 
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getParentContext()
-		 */
 		@Override
 		public ViewModelContext getParentContext() {
-			// TODO Auto-generated method stub
 			return null;
 		}
 
-		/**
-		 * {@inheritDoc}
-		 * 
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#changeDomainModel(org.eclipse.emf.ecore.EObject)
-		 */
 		@Override
 		public void changeDomainModel(EObject newDomainModel) {
-			// TODO Auto-generated method stub
-
+			// do nothing
 		}
 
-		/**
-		 * {@inheritDoc}
-		 * 
-		 * @see org.eclipse.emf.ecp.view.spi.context.ViewModelContext#getParentVElement()
-		 */
 		@Override
 		public VElement getParentVElement() {
-			// TODO Auto-generated method stub
 			return null;
 		}
 
-		/**
-		 * {@inheritDoc}
-		 * 
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#registerRootDomainModelChangeListener(org.eclipse.emfforms.spi.core.services.view.RootDomainModelChangeListener)
-		 */
 		@Override
 		public void registerRootDomainModelChangeListener(RootDomainModelChangeListener rootDomainModelChangeListener) {
-			// TODO Auto-generated method stub
-
+			// do nothing
 		}
 
-		/**
-		 * {@inheritDoc}
-		 * 
-		 * @see org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext#unregisterRootDomainModelChangeListener(org.eclipse.emfforms.spi.core.services.view.RootDomainModelChangeListener)
-		 */
 		@Override
 		public void unregisterRootDomainModelChangeListener(
 			RootDomainModelChangeListener rootDomainModelChangeListener) {
-			// TODO Auto-generated method stub
-
+			// do nothing
 		}
 
+		@Override
+		public void pause() {
+			// do nothing
+		}
+
+		@Override
+		public void reactivate() {
+			// do nothing
+		}
 	}
 }