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();
+ }
}
}