refactor reader creation

Make it easier to switch between the 2 readers in the finished example.
diff --git a/examples/org.eclipse.e4.examples.di.product/src/org/eclipse/e4/examples/di/product/parts/ExtensionReader.java b/examples/org.eclipse.e4.examples.di.product/src/org/eclipse/e4/examples/di/product/parts/ExtensionReader.java
index b1c8672..6327b03 100644
--- a/examples/org.eclipse.e4.examples.di.product/src/org/eclipse/e4/examples/di/product/parts/ExtensionReader.java
+++ b/examples/org.eclipse.e4.examples.di.product/src/org/eclipse/e4/examples/di/product/parts/ExtensionReader.java
@@ -11,6 +11,7 @@
 import org.eclipse.e4.core.di.annotations.Optional;
 import org.eclipse.e4.examples.di.extensions.Extension;
 import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.widgets.Control;
 
 public class ExtensionReader {
 	@Inject
@@ -28,7 +29,11 @@
 		if (elements == null) {
 			return;
 		}
-		viewer.getControl().getDisplay().asyncExec(new Runnable() {
+		Control control = viewer.getControl();
+		if (control.isDisposed()) {
+			return;
+		}
+		control.getDisplay().asyncExec(new Runnable() {
 			@Override
 			public void run() {
 				for (IConfigurationElement element : elements) {
@@ -38,7 +43,9 @@
 								.getAttribute(SamplePart.ATTR_COMPANY)));
 					}
 				}
-				viewer.refresh();
+				if (!viewer.getControl().isDisposed()) {
+					viewer.refresh();
+				}
 			}
 		});
 	}
diff --git a/examples/org.eclipse.e4.examples.di.product/src/org/eclipse/e4/examples/di/product/parts/SamplePart.java b/examples/org.eclipse.e4.examples.di.product/src/org/eclipse/e4/examples/di/product/parts/SamplePart.java
index 6316f08..5c6ddfb 100644
--- a/examples/org.eclipse.e4.examples.di.product/src/org/eclipse/e4/examples/di/product/parts/SamplePart.java
+++ b/examples/org.eclipse.e4.examples.di.product/src/org/eclipse/e4/examples/di/product/parts/SamplePart.java
@@ -65,7 +65,8 @@
 
 	@Inject
 	private MDirtyable dirty;
-	// private OldExtensionReader reader;
+
+	private OldExtensionReader reader;
 	private ExtensionReader extensionReader;
 
 	@PostConstruct
@@ -115,18 +116,24 @@
 		ViewerComparator comparator = new ViewerComparator();
 		tableViewer.setComparator(comparator);
 
-		// reader = new OldExtensionReader(pluginAuthors,
-		// tableViewer);
-		// reader.process();
+		createLegacyReader();
+		// createDiReader();
 
+		tableViewer.setInput(pluginAuthors);
+	}
+
+	private void createLegacyReader() {
+		reader = new OldExtensionReader(pluginAuthors, tableViewer);
+		reader.process();
+	}
+
+	private void createDiReader() {
 		IEclipseContext staticContext = EclipseContextFactory.create();
 		staticContext.set("myViewer", tableViewer);
 		staticContext.set("myList", pluginAuthors);
 		extensionReader = ContextInjectionFactory.make(ExtensionReader.class,
 				context, staticContext);
 		staticContext.dispose();
-
-		tableViewer.setInput(pluginAuthors);
 	}
 
 	@Focus
@@ -141,6 +148,8 @@
 
 	@PreDestroy
 	public void dispose() {
-		// reader.dispose();
+		if (reader != null) {
+			reader.dispose();
+		}
 	}
 }