Skip to content

Commit

Permalink
Moving listeners related classes to better places
Browse files Browse the repository at this point in the history
  • Loading branch information
Henri Kerola committed Sep 11, 2012
1 parent b7518cf commit 4d736ed
Show file tree
Hide file tree
Showing 18 changed files with 66 additions and 45 deletions.
1 change: 1 addition & 0 deletions addon/src/main/scala/vaadin/scala/AbstractSplitPanel.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import vaadin.scala.mixins.AbstractSplitPanelMixin
import vaadin.scala.mixins.HorizontalSplitPanelMixin
import vaadin.scala.mixins.VerticalSplitPanelMixin
import vaadin.scala.internal.SplitterClickListener
import vaadin.scala.internal.ListenersTrait

package mixins {
trait AbstractSplitPanelMixin extends AbstractLayoutMixin
Expand Down
1 change: 1 addition & 0 deletions addon/src/main/scala/vaadin/scala/AbstractTextField.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package vaadin.scala

import vaadin.scala.mixins.AbstractTextFieldMixin
import vaadin.scala.internal.TextChangeListener
import vaadin.scala.internal.ListenersTrait
import com.vaadin.event.FieldEvents

package mixins {
Expand Down
1 change: 1 addition & 0 deletions addon/src/main/scala/vaadin/scala/Button.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package vaadin.scala
import vaadin.scala.mixins.ButtonMixin
import vaadin.scala.internal.WrapperUtil
import vaadin.scala.internal.ButtonClickListener
import vaadin.scala.internal.ListenersTrait

package mixins {
trait ButtonMixin extends AbstractFieldMixin
Expand Down
2 changes: 2 additions & 0 deletions addon/src/main/scala/vaadin/scala/Embedded.scala
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package vaadin.scala

import vaadin.scala.internal.ListenersTrait
import vaadin.scala.internal.ClickListener
import vaadin.scala.mixins.EmbeddedMixin
import scala.collection.mutable

Expand Down
6 changes: 1 addition & 5 deletions addon/src/main/scala/vaadin/scala/Event.scala
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,4 @@ trait Event
// TODO: button should be enumeration or something instead of Int
abstract class AbstractClickEvent(component: Component, button: Int, clientX: Int, clientY: Int, relativeX: Int, relativeY: Int, doubleClick: Boolean, altKey: Boolean, ctrlKey: Boolean, metaKey: Boolean, shiftKey: Boolean) extends Event

case class ClickEvent(component: Component, button: Int, clientX: Int, clientY: Int, relativeX: Int, relativeY: Int, doubleClick: Boolean, altKey: Boolean, ctrlKey: Boolean, metaKey: Boolean, shiftKey: Boolean) extends AbstractClickEvent(component, button, clientX, clientY, relativeX, relativeY, doubleClick, altKey, ctrlKey, metaKey, shiftKey)

class ClickListener(val action: ClickEvent => Unit) extends com.vaadin.event.MouseEvents.ClickListener with Listener {
def click(e: com.vaadin.event.MouseEvents.ClickEvent) = action(ClickEvent(wrapperFor[Table](e.getComponent).get, e.getButton, e.getClientX, e.getClientY, e.getRelativeX, e.getRelativeY, e.isDoubleClick, e.isAltKey, e.isCtrlKey, e.isMetaKey, e.isShiftKey))
}
case class ClickEvent(component: Component, button: Int, clientX: Int, clientY: Int, relativeX: Int, relativeY: Int, doubleClick: Boolean, altKey: Boolean, ctrlKey: Boolean, metaKey: Boolean, shiftKey: Boolean) extends AbstractClickEvent(component, button, clientX, clientY, relativeX, relativeY, doubleClick, altKey, ctrlKey, metaKey, shiftKey)
1 change: 1 addition & 0 deletions addon/src/main/scala/vaadin/scala/ItemClickNotifier.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package vaadin.scala

import vaadin.scala.internal.ItemClickListener
import vaadin.scala.internal.ListenersTrait

case class ItemClickEvent(component: Component, item: Item, itemId: Any, propertyId: Option[Any], button: Int, clientX: Int, clientY: Int, relativeX: Int, relativeY: Int, doubleClick: Boolean, altKey: Boolean, ctrlKey: Boolean, metaKey: Boolean, shiftKey: Boolean) extends AbstractClickEvent(component, button, clientX, clientY, relativeX, relativeY, doubleClick, altKey, ctrlKey, metaKey, shiftKey)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package vaadin.scala

import vaadin.scala.internal.ListenersTrait
import vaadin.scala.internal.ItemDescriptionGenerator

// TODO: move traits and classes to correct packages

case class ItemDescriptionEvent(component: Component, itemId: Any, propertyId: Any) extends Event
Expand All @@ -19,9 +22,4 @@ trait ItemDescriptionGeneratorOwner { self: { def p: { def getItemDescriptionGen
case Some(generator) => itemDescriptionGenerator = generator
}

}

// FIXME: should not extend Listener?
class ItemDescriptionGenerator(val action: ItemDescriptionEvent => String) extends com.vaadin.ui.AbstractSelect.ItemDescriptionGenerator with Listener {
def generateDescription(source: com.vaadin.ui.Component, itemId: Any, propertyId: Any) = action(ItemDescriptionEvent(wrapperFor[Component](source).get, itemId, propertyId))
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package vaadin.scala

import vaadin.scala.internal.LayoutClickListener
import vaadin.scala.internal.ListenersTrait

case class LayoutClickEvent(component: Component, clickedComponent: Component, childComponent: Component, button: Int, clientX: Int, clientY: Int, relativeX: Int, relativeY: Int, doubleClick: Boolean, altKey: Boolean, ctrlKey: Boolean, metaKey: Boolean, shiftKey: Boolean) extends AbstractClickEvent(component, button, clientX, clientY, relativeX, relativeY, doubleClick, altKey, ctrlKey, metaKey, shiftKey)

Expand Down
35 changes: 1 addition & 34 deletions addon/src/main/scala/vaadin/scala/Listener.scala
Original file line number Diff line number Diff line change
Expand Up @@ -6,40 +6,7 @@ import vaadin.scala.internal.FocusListener
import vaadin.scala.internal.ExpandListener
import vaadin.scala.internal.CollapseListener
import vaadin.scala.internal.ValueChangeListener
trait Listener {
def action: Any

protected def wrapperFor[T](vaadinComponent: com.vaadin.ui.Component): Option[T] = internal.WrapperUtil.wrapperFor[T](vaadinComponent)
}

trait ListenersTrait[E, L <: Listener] extends mutable.Set[E => Unit] {

import scala.collection.JavaConverters._
def contains(key: E => Unit) = {
iterator.contains(key)
}
def iterator(): Iterator[E => Unit] = {
val list = listeners.asScala.map(_.asInstanceOf[L].action)
list.iterator.asInstanceOf[Iterator[E => Unit]]
}
def +=(elem: => Unit) = { addListener((e: E) => elem); this }
def +=(elem: E => Unit) = { addListener(elem); this }
def -=(elem: E => Unit) = {
val list = listeners.asScala.foreach { e =>
if (e.asInstanceOf[L].action == elem) {
removeListener(e.asInstanceOf[L])
this
}
}
this
}

protected def listeners: java.util.Collection[_]

protected def addListener(elem: E => Unit);

protected def removeListener(elem: L);
}
import vaadin.scala.internal.ListenersTrait

case class BlurEvent(component: Component) extends Event

Expand Down
2 changes: 2 additions & 0 deletions addon/src/main/scala/vaadin/scala/Panel.scala
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package vaadin.scala

import vaadin.scala.internal.ListenersTrait
import vaadin.scala.internal.ClickListener
import vaadin.scala.mixins.PanelMixin

package mixins {
Expand Down
1 change: 1 addition & 0 deletions addon/src/main/scala/vaadin/scala/TabSheet.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package vaadin.scala
import vaadin.scala.mixins.TabSheetMixin
import vaadin.scala.internal.WrapperUtil
import vaadin.scala.internal.SelectedTabChangeListener
import vaadin.scala.internal.ListenersTrait

package mixins {
trait TabSheetMixin extends AbstractComponentContainerMixin
Expand Down
1 change: 1 addition & 0 deletions addon/src/main/scala/vaadin/scala/Table.scala
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import vaadin.scala.internal.ColumnResizeListener
import vaadin.scala.internal.TableColumnGenerator
import vaadin.scala.internal.CellStyleGenerator
import vaadin.scala.internal.WrapperUtil
import vaadin.scala.internal.ListenersTrait
import scala.collection.mutable

package mixins {
Expand Down
1 change: 1 addition & 0 deletions addon/src/main/scala/vaadin/scala/Upload.scala
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import vaadin.scala.internal.UploadStartedListener
import vaadin.scala.internal.UploadFinishedListener
import vaadin.scala.internal.UploadFailedListener
import vaadin.scala.internal.UploadSucceededListener
import vaadin.scala.internal.ListenersTrait
import vaadin.scala.mixins.UploadMixin

package mixins {
Expand Down
1 change: 1 addition & 0 deletions addon/src/main/scala/vaadin/scala/UriFragmentUtility.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package vaadin.scala

import vaadin.scala.internal.FragmentChangedListener
import vaadin.scala.internal.ListenersTrait
import vaadin.scala.mixins.UriFragmentUtilityMixin

package mixins {
Expand Down
7 changes: 7 additions & 0 deletions addon/src/main/scala/vaadin/scala/internal/Listener.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package vaadin.scala.internal

trait Listener {
def action: Any

protected def wrapperFor[T](vaadinComponent: com.vaadin.ui.Component): Option[T] = WrapperUtil.wrapperFor[T](vaadinComponent)
}
32 changes: 32 additions & 0 deletions addon/src/main/scala/vaadin/scala/internal/ListenersTrait.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package vaadin.scala.internal

import scala.collection.mutable

trait ListenersTrait[E, L <: Listener] extends mutable.Set[E => Unit] {

import scala.collection.JavaConverters._
def contains(key: E => Unit) = {
iterator.contains(key)
}
def iterator(): Iterator[E => Unit] = {
val list = listeners.asScala.map(_.asInstanceOf[L].action)
list.iterator.asInstanceOf[Iterator[E => Unit]]
}
def +=(elem: => Unit) = { addListener((e: E) => elem); this }
def +=(elem: E => Unit) = { addListener(elem); this }
def -=(elem: E => Unit) = {
val list = listeners.asScala.foreach { e =>
if (e.asInstanceOf[L].action == elem) {
removeListener(e.asInstanceOf[L])
this
}
}
this
}

protected def listeners: java.util.Collection[_]

protected def addListener(elem: E => Unit);

protected def removeListener(elem: L);
}
6 changes: 5 additions & 1 deletion addon/src/main/scala/vaadin/scala/internal/generators.scala
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package vaadin.scala.internal

import vaadin.scala.Table
import vaadin.scala.Listener
import vaadin.scala.Tree
import vaadin.scala.Component
import vaadin.scala.ItemDescriptionEvent

class ColumnReorderListener(val action: Table.ColumnReorderEvent => Unit) extends com.vaadin.ui.Table.ColumnReorderListener with Listener {
def columnReorder(e: com.vaadin.ui.Table.ColumnReorderEvent) = action(Table.ColumnReorderEvent(wrapperFor[Table](e.getComponent).get))
Expand All @@ -24,4 +24,8 @@ class CellStyleGenerator(val generator: Table.CellStyleGenerationEvent => Option
// FIXME: should not extend Listener?
class ItemStyleGenerator(val action: Tree.ItemStyleEvent => Option[String]) extends com.vaadin.ui.Tree.ItemStyleGenerator with Listener {
def getStyle(itemId: Any) = action(Tree.ItemStyleEvent(itemId)).orNull
}

class ItemDescriptionGenerator(val action: ItemDescriptionEvent => String) extends com.vaadin.ui.AbstractSelect.ItemDescriptionGenerator with Listener {
def generateDescription(source: com.vaadin.ui.Component, itemId: Any, propertyId: Any) = action(ItemDescriptionEvent(wrapperFor[Component](source).get, itemId, propertyId))
}
4 changes: 4 additions & 0 deletions addon/src/main/scala/vaadin/scala/internal/listeners.scala
Original file line number Diff line number Diff line change
Expand Up @@ -76,4 +76,8 @@ class ButtonClickListener(val action: Button.ClickEvent => Unit) extends com.vaa

class TextChangeListener(val action: AbstractTextField.TextChangeEvent => Unit) extends com.vaadin.event.FieldEvents.TextChangeListener with Listener {
def textChange(e: com.vaadin.event.FieldEvents.TextChangeEvent) = action(AbstractTextField.TextChangeEvent(wrapperFor[AbstractTextField](e.getComponent).get, e.getText, e.getCursorPosition))
}

class ClickListener(val action: ClickEvent => Unit) extends com.vaadin.event.MouseEvents.ClickListener with Listener {
def click(e: com.vaadin.event.MouseEvents.ClickEvent) = action(ClickEvent(wrapperFor[Table](e.getComponent).get, e.getButton, e.getClientX, e.getClientY, e.getRelativeX, e.getRelativeY, e.isDoubleClick, e.isAltKey, e.isCtrlKey, e.isMetaKey, e.isShiftKey))
}

0 comments on commit 4d736ed

Please sign in to comment.