cleaning up injector initialization
diff --git a/org.eclipse.nebula.widgets.nattable.renderer.swt.example/src/org/eclipse/nebula/widgets/nattable/renderer/swt/example/SWTNatExamplesRunner.xtend b/org.eclipse.nebula.widgets.nattable.renderer.swt.example/src/org/eclipse/nebula/widgets/nattable/renderer/swt/example/SWTNatExamplesRunner.xtend
index 4bb3dd2..842c391 100644
--- a/org.eclipse.nebula.widgets.nattable.renderer.swt.example/src/org/eclipse/nebula/widgets/nattable/renderer/swt/example/SWTNatExamplesRunner.xtend
+++ b/org.eclipse.nebula.widgets.nattable.renderer.swt.example/src/org/eclipse/nebula/widgets/nattable/renderer/swt/example/SWTNatExamplesRunner.xtend
@@ -1,17 +1,11 @@
package org.eclipse.nebula.widgets.nattable.renderer.swt.example
-import com.google.inject.Guice
-import com.google.inject.Injector
import java.util.HashMap
import org.eclipse.jface.viewers.TreeSelection
import org.eclipse.jface.viewers.TreeViewer
-import org.eclipse.nebula.widgets.nattable.core.example.NatExample
import org.eclipse.nebula.widgets.nattable.core.example.index.NatExamplesIndex
import org.eclipse.nebula.widgets.nattable.core.example.index.node.NatExampleNode
import org.eclipse.nebula.widgets.nattable.renderer.swt.SWTNatTable
-import org.eclipse.nebula.widgets.nattable.renderer.swt.event.binding.KeyBinding
-import org.eclipse.nebula.widgets.nattable.renderer.swt.event.binding.UiBindings
-import org.eclipse.nebula.widgets.nattable.renderer.swt.event.binding.UiBindingsImpl
import org.eclipse.swt.SWT
import org.eclipse.swt.custom.CTabFolder
import org.eclipse.swt.custom.CTabItem
@@ -39,7 +33,6 @@
val CTabFolder tabFolder
val exampleControlMap = new HashMap<NatExampleNode, Control>
- val examplePathMap = new HashMap<String, NatExample>
new(int shellWidth, int shellHeight) {
this.shellWidth = shellWidth
@@ -108,7 +101,6 @@
// Create example control
val exampleControl = new SWTNatTable(tabComposite) => [
layoutData = new GridData(GridData::FILL_BOTH)
- injector = createInjector
layer = node.natExample.createLayer
]
exampleControlMap.put(node, exampleControl)
@@ -135,15 +127,14 @@
// Stop
node.natExample.stop
- // Dispose
+ // Dispose associated control
val control = exampleControlMap.get(node)
if (control != null && !control.disposed) {
control.dispose
}
- // Remove from maps
+ // Remove from map
exampleControlMap.remove(node)
- examplePathMap.remove(node)
])
]
@@ -151,15 +142,4 @@
node.natExample.start
}
- def Injector createInjector() {
- // UI bindings
- val uiBindings = new UiBindingsImpl
- uiBindings.keyBindings += new KeyBinding([ event | event.keyCode == Character::valueOf('a') ], [ event | println((event.widget as SWTNatTable).layer) ])
-
- // Create injector
- Guice::createInjector([ binder |
- binder.bind(typeof(UiBindings)).toInstance(uiBindings)
- ])
- }
-
}
\ No newline at end of file
diff --git a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/SWTNatTable.xtend b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/SWTNatTable.xtend
index a40f9fe..6f24abf 100644
--- a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/SWTNatTable.xtend
+++ b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/SWTNatTable.xtend
@@ -1,6 +1,8 @@
package org.eclipse.nebula.widgets.nattable.renderer.swt
+import com.google.inject.Guice
import com.google.inject.Injector
+import javax.inject.Inject
import org.eclipse.nebula.widgets.nattable.core.geometry.PixelArea
import org.eclipse.nebula.widgets.nattable.core.graphics.PainterFactory
import org.eclipse.nebula.widgets.nattable.core.layer.Layer
@@ -19,7 +21,7 @@
static val int DEFAULT_STYLE_OPTIONS = SWT::NO_BACKGROUND.bitwiseOr(SWT::DOUBLE_BUFFERED).bitwiseOr(SWT::NO_REDRAW_RESIZE)
extension Injector
- extension PainterFactory
+ @Inject extension PainterFactory
Layer layer
@@ -29,14 +31,14 @@
new(Composite parent, int style) {
super(parent, style)
+
+ _injector = Guice::createInjector.createChildInjector([ binder |
+ binder.bind(typeof(PainterFactory)).toInstance(new SWTPainterFactory)
+ ])
+ this.injectMembers
}
- def void setInjector(Injector baseInjector) {
- _painterFactory = baseInjector.getInstance(typeof(SWTPainterFactory))
- _injector = baseInjector.createChildInjector([ binder |
- binder.bind(typeof(PainterFactory)).toInstance(_painterFactory)
- ])
- }
+ def getInjector() { _injector }
def Layer getLayer() { layer }
@@ -44,15 +46,12 @@
this.layer = layer
// Event listener
-
layer.addEventListener([ event | redraw ])
// Paint listener
-
addPaintListener([ event | paintLayer(event.gc) ])
// Init mode switcher
-
val modeSwitcher = new ModeSwitcher(this)
modeSwitcher.registerMode(Mode::NORMAL, getInstance(typeof(NormalMode)))
modeSwitcher.switchToMode(Mode::NORMAL)
diff --git a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/binding/UiBindingsImpl.xtend b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/binding/SWTUIBindings.xtend
similarity index 78%
rename from org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/binding/UiBindingsImpl.xtend
rename to org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/binding/SWTUIBindings.xtend
index 5881606..201bcaf 100644
--- a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/binding/UiBindingsImpl.xtend
+++ b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/binding/SWTUIBindings.xtend
@@ -1,10 +1,12 @@
package org.eclipse.nebula.widgets.nattable.renderer.swt.event.binding
import java.util.LinkedList
+import javax.inject.Singleton
import org.eclipse.swt.events.KeyEvent
import org.eclipse.swt.events.MouseEvent
-class UiBindingsImpl implements UiBindings {
+@Singleton
+class SWTUIBindings {
val keyBindings = new LinkedList<KeyBinding>
val mouseMoveBindings = new LinkedList<MouseBinding>
@@ -21,27 +23,27 @@
// Lookup /////////////////////////////////////////////////////////////////
- override getKeyEventAction(KeyEvent event) {
+ def getKeyEventAction(KeyEvent event) {
keyBindings.findFirst([ matcher.matches(event) ])?.action
}
- override getMouseMoveAction(MouseEvent event) {
+ def getMouseMoveAction(MouseEvent event) {
mouseMoveBindings.findFirst([ matcher.matches(event) ])?.action
}
- override getMouseDownAction(MouseEvent event) {
+ def getMouseDownAction(MouseEvent event) {
mouseDownBindings.findFirst([ matcher.matches(event) ])?.action
}
- override getSingleClickAction(MouseEvent event) {
+ def getSingleClickAction(MouseEvent event) {
singleClickBindings.findFirst([ matcher.matches(event) ])?.action
}
- override getDoubleClickAction(MouseEvent event) {
+ def getDoubleClickAction(MouseEvent event) {
doubleClickBindings.findFirst([ matcher.matches(event) ])?.action
}
- override getDragAction(MouseEvent event) {
+ def getDragAction(MouseEvent event) {
dragBindings.findFirst([ matcher.matches(event) ])?.action
}
diff --git a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/binding/UiBindings.xtend b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/binding/UiBindings.xtend
deleted file mode 100644
index a4de09c..0000000
--- a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/binding/UiBindings.xtend
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.eclipse.nebula.widgets.nattable.renderer.swt.event.binding
-
-import org.eclipse.nebula.widgets.nattable.renderer.swt.event.action.DragAction
-import org.eclipse.nebula.widgets.nattable.renderer.swt.event.action.KeyAction
-import org.eclipse.nebula.widgets.nattable.renderer.swt.event.action.MouseAction
-import org.eclipse.swt.events.KeyEvent
-import org.eclipse.swt.events.MouseEvent
-
-interface UiBindings {
-
- def KeyAction getKeyEventAction(KeyEvent event)
-
- def MouseAction getMouseDownAction(MouseEvent event)
- def MouseAction getMouseMoveAction(MouseEvent event)
- def DragAction getDragAction(MouseEvent event)
-
- def MouseAction getSingleClickAction(MouseEvent event)
- def MouseAction getDoubleClickAction(MouseEvent event)
-
-}
diff --git a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/mode/NormalMode.xtend b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/mode/NormalMode.xtend
index 4108669..7dafcba 100644
--- a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/mode/NormalMode.xtend
+++ b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/mode/NormalMode.xtend
@@ -1,14 +1,14 @@
package org.eclipse.nebula.widgets.nattable.renderer.swt.event.mode
import com.google.inject.Inject
-import org.eclipse.nebula.widgets.nattable.renderer.swt.event.binding.UiBindings
+import org.eclipse.nebula.widgets.nattable.renderer.swt.event.binding.SWTUIBindings
import org.eclipse.swt.events.KeyEvent
import org.eclipse.swt.events.MouseEvent
import org.eclipse.swt.widgets.Control
class NormalMode extends AbstractMode {
- @Inject UiBindings uiBindings
+ @Inject SWTUIBindings uiBindings
// Event handling /////////////////////////////////////////////////////////