changeset 39:43be986a1372

Sync events with dwt-linux
author Frank Benoit <benoit@tionex.de>
date Tue, 07 Oct 2008 14:41:16 +0200
parents db5a898b2119
children fbe68c33eeee
files dwt/events/KeyEvent.d dwt/events/MenuDetectEvent.d dwt/events/MouseEvent.d dwt/events/PaintEvent.d dwt/events/SelectionEvent.d dwt/events/SelectionListener.d dwt/events/ShellEvent.d dwt/events/TraverseEvent.d dwt/events/TypedEvent.d dwt/events/VerifyEvent.d
diffstat 10 files changed, 64 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/dwt/events/KeyEvent.d	Tue Oct 07 12:56:18 2008 +0200
+++ b/dwt/events/KeyEvent.d	Tue Oct 07 14:41:16 2008 +0200
@@ -12,13 +12,12 @@
  *******************************************************************************/
 module dwt.events.KeyEvent;
 
-import dwt.dwthelper.utils;
-
 
 import dwt.widgets.Event;
 import dwt.events.TypedEvent;
 
 import tango.text.convert.Format;
+import dwt.dwthelper.utils;
 
 /**
  * Instances of this class are sent as a result of
--- a/dwt/events/MenuDetectEvent.d	Tue Oct 07 12:56:18 2008 +0200
+++ b/dwt/events/MenuDetectEvent.d	Tue Oct 07 14:41:16 2008 +0200
@@ -12,13 +12,13 @@
  *******************************************************************************/
 module dwt.events.MenuDetectEvent;
 
-import dwt.dwthelper.utils;
-
 
 import dwt.widgets.Event;
 import dwt.events.TypedEvent;
 
 import tango.text.convert.Format;
+import dwt.dwthelper.utils;
+
 /**
  * Instances of this class are sent whenever the platform-
  * specific trigger for showing a context menu is detected.
--- a/dwt/events/MouseEvent.d	Tue Oct 07 12:56:18 2008 +0200
+++ b/dwt/events/MouseEvent.d	Tue Oct 07 14:41:16 2008 +0200
@@ -12,13 +12,12 @@
  *******************************************************************************/
 module dwt.events.MouseEvent;
 
-import dwt.dwthelper.utils;
-
 
 import dwt.widgets.Event;
 import dwt.events.TypedEvent;
 
 import tango.text.convert.Format;
+import dwt.dwthelper.utils;
 
 /**
  * Instances of this class are sent whenever mouse
--- a/dwt/events/PaintEvent.d	Tue Oct 07 12:56:18 2008 +0200
+++ b/dwt/events/PaintEvent.d	Tue Oct 07 14:41:16 2008 +0200
@@ -12,8 +12,6 @@
  *******************************************************************************/
 module dwt.events.PaintEvent;
 
-import dwt.dwthelper.utils;
-
 
 import dwt.widgets.Event;
 import dwt.graphics.GC;
@@ -21,6 +19,7 @@
 import dwt.events.TypedEvent;
 
 import tango.text.convert.Format;
+import dwt.dwthelper.utils;
 
 /**
  * Instances of this class are sent as a result of
--- a/dwt/events/SelectionEvent.d	Tue Oct 07 12:56:18 2008 +0200
+++ b/dwt/events/SelectionEvent.d	Tue Oct 07 14:41:16 2008 +0200
@@ -12,14 +12,14 @@
  *******************************************************************************/
 module dwt.events.SelectionEvent;
 
-import dwt.dwthelper.utils;
-
 
 import dwt.widgets.Event;
 import dwt.widgets.Widget;
 import dwt.events.TypedEvent;
 
 import tango.text.convert.Format;
+import dwt.dwthelper.utils;
+
 /**
  * Instances of this class are sent as a result of
  * widgets being selected.
--- a/dwt/events/SelectionListener.d	Tue Oct 07 12:56:18 2008 +0200
+++ b/dwt/events/SelectionListener.d	Tue Oct 07 14:41:16 2008 +0200
@@ -16,6 +16,9 @@
 public import dwt.internal.DWTEventListener;
 public import dwt.events.SelectionEvent;
 
+import tango.core.Traits;
+import tango.core.Tuple;
+
 /**
  * Classes which implement this interface provide methods
  * that deal with the events that are generated when selection
@@ -34,6 +37,10 @@
  */
 public interface SelectionListener : DWTEventListener {
 
+    public enum {
+        SELECTION,
+        DEFAULTSELECTION
+    }
 /**
  * Sent when selection occurs in the control.
  * <p>
@@ -63,3 +70,47 @@
  */
 public void widgetDefaultSelected(SelectionEvent e);
 }
+
+
+/// DWT extension
+private class _DgSelectionListenerT(Dg,T...) : SelectionListener {
+
+    alias ParameterTupleOf!(Dg) DgArgs;
+    static assert( is(DgArgs == Tuple!(SelectionEvent,T)),
+                "Delegate args not correct: "~DgArgs.stringof~" vs. (Event,"~T.stringof~")" );
+
+    Dg dg;
+    T  t;
+    int type;
+
+    private this( int type, Dg dg, T t ){
+        this.type = type;
+        this.dg = dg;
+        static if( T.length > 0 ){
+            this.t = t;
+        }
+    }
+
+    public void widgetSelected(SelectionEvent e){
+        if( type is SelectionListener.SELECTION ){
+            dg(e,t);
+        }
+    }
+    public void widgetDefaultSelected(SelectionEvent e){
+        if( type is SelectionListener.DEFAULTSELECTION ){
+            dg(e,t);
+        }
+    }
+}
+
+SelectionListener dgSelectionListener( Dg, T... )( int type, Dg dg, T args ){
+    return new _DgSelectionListenerT!( Dg, T )( type, dg, args );
+}
+
+SelectionListener dgSelectionListenerWidgetSelected( Dg, T... )( Dg dg, T args ){
+    return dgSelectionListener( SelectionListener.SELECTION, dg, args );
+}
+SelectionListener dgSelectionListenerWidgetDefaultSelected( Dg, T... )( Dg dg, T args ){
+    return dgSelectionListener( SelectionListener.DEFAULTSELECTION, dg, args );
+}
+
--- a/dwt/events/ShellEvent.d	Tue Oct 07 12:56:18 2008 +0200
+++ b/dwt/events/ShellEvent.d	Tue Oct 07 14:41:16 2008 +0200
@@ -12,13 +12,12 @@
  *******************************************************************************/
 module dwt.events.ShellEvent;
 
-import dwt.dwthelper.utils;
-
 
 import dwt.widgets.Event;
 import dwt.events.TypedEvent;
 
 import tango.text.convert.Format;
+import dwt.dwthelper.utils;
 
 /**
  * Instances of this class are sent as a result of
--- a/dwt/events/TraverseEvent.d	Tue Oct 07 12:56:18 2008 +0200
+++ b/dwt/events/TraverseEvent.d	Tue Oct 07 14:41:16 2008 +0200
@@ -12,13 +12,13 @@
  *******************************************************************************/
 module dwt.events.TraverseEvent;
 
-import dwt.dwthelper.utils;
-
 
 import dwt.widgets.Event;
 import dwt.events.KeyEvent;
 
 import tango.text.convert.Format;
+import dwt.dwthelper.utils;
+
 /**
  * Instances of this class are sent as a result of
  * widget traversal actions.
--- a/dwt/events/TypedEvent.d	Tue Oct 07 12:56:18 2008 +0200
+++ b/dwt/events/TypedEvent.d	Tue Oct 07 14:41:16 2008 +0200
@@ -12,8 +12,6 @@
  *******************************************************************************/
 module dwt.events.TypedEvent;
 
-import dwt.dwthelper.utils;
-
 
 import dwt.widgets.Event;
 import dwt.widgets.Display;
@@ -22,6 +20,7 @@
 
 import tango.text.convert.Format;
 import tango.text.Util : split;
+import dwt.dwthelper.utils;
 
 /**
  * This is the super class for all typed event classes provided
--- a/dwt/events/VerifyEvent.d	Tue Oct 07 12:56:18 2008 +0200
+++ b/dwt/events/VerifyEvent.d	Tue Oct 07 14:41:16 2008 +0200
@@ -12,13 +12,13 @@
  *******************************************************************************/
 module dwt.events.VerifyEvent;
 
-import dwt.dwthelper.utils;
-
 
 import dwt.widgets.Event;
 import dwt.events.KeyEvent;
 
 import tango.text.convert.Format;
+import dwt.dwthelper.utils;
+
 /**
  * Instances of this class are sent as a result of
  * widgets handling keyboard events