diff dwt/custom/CTabFolder2Listener.d @ 41:6337764516f1

Sync dwt/custom with dwt-linux (took copy of complete folder)
author Frank Benoit <benoit@tionex.de>
date Tue, 07 Oct 2008 16:29:55 +0200
parents f565d3a95c0a
children
line wrap: on
line diff
--- a/dwt/custom/CTabFolder2Listener.d	Tue Oct 07 14:41:31 2008 +0200
+++ b/dwt/custom/CTabFolder2Listener.d	Tue Oct 07 16:29:55 2008 +0200
@@ -1,4 +1,4 @@
-/*******************************************************************************
+/*******************************************************************************
  * Copyright (c) 2000, 2004 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -7,18 +7,20 @@
  *
  * Contributors:
  *     IBM Corporation - initial API and implementation
- *     
  * Port to the D programming language:
- *     Jacob Carlborg <jacob.carlborg@gmail.com>
+ *     Frank Benoit <benoit@tionex.de>
  *******************************************************************************/
 module dwt.custom.CTabFolder2Listener;
 
+import dwt.internal.DWTEventListener;
 import dwt.custom.CTabFolderEvent;
-import dwt.internal.DWTEventListener;
+
+import tango.core.Traits;
+import tango.core.Tuple;
 
 /**
  * Classes which implement this interface provide methods
- * that deal with the events that are generated by the CTabFolder 
+ * that deal with the events that are generated by the CTabFolder
  * control.
  * <p>
  * After creating an instance of a class that :
@@ -31,86 +33,163 @@
  *
  * @see CTabFolder2Adapter
  * @see CTabFolderEvent
- * 
+ *
  * @since 3.0
  */
 public interface CTabFolder2Listener : DWTEventListener {
+    public enum {
+        MINIMIZE,
+        MAXIMIZE,
+        SHOWLIST,
+        RESTORE,
+        CLOSE
+    }
 
-    /**
-     * Sent when the user clicks on the close button of an item in the CTabFolder.
-     * The item being closed is specified in the event.item field. 
-     * Setting the event.doit field to false will stop the CTabItem from closing. 
-     * When the CTabItem is closed, it is disposed.  The contents of the 
-     * CTabItem (see CTabItem.setControl) will be made not visible when
-     * the CTabItem is closed.
-     * 
-     * @param event an event indicating the item being closed
-     */
-    public void close (CTabFolderEvent event);
+/**
+ * Sent when the user clicks on the close button of an item in the CTabFolder.
+ * The item being closed is specified in the event.item field.
+ * Setting the event.doit field to false will stop the CTabItem from closing.
+ * When the CTabItem is closed, it is disposed.  The contents of the
+ * CTabItem (see CTabItem.setControl) will be made not visible when
+ * the CTabItem is closed.
+ *
+ * @param event an event indicating the item being closed
+ */
+public void close(CTabFolderEvent event);
+
+/**
+ * Sent when the user clicks on the minimize button of a CTabFolder.
+ * The state of the CTabFolder does not change automatically - it
+ * is up to the application to change the state of the CTabFolder
+ * in response to this event using CTabFolder.setMinimized(true).
+ *
+ * @param event an event containing information about the minimize
+ *
+ * @see CTabFolder#getMinimized()
+ * @see CTabFolder#setMinimized(bool)
+ * @see CTabFolder#setMinimizeVisible(bool)
+ */
+public void minimize(CTabFolderEvent event);
 
-    /**
-     * Sent when the user clicks on the minimize button of a CTabFolder.
-     * The state of the CTabFolder does not change automatically - it 
-     * is up to the application to change the state of the CTabFolder
-     * in response to this event using CTabFolder.setMinimized(true).
-     * 
-     * @param event an event containing information about the minimize
-     * 
-     * @see CTabFolder#getMinimized()
-     * @see CTabFolder#setMinimized(bool)
-     * @see CTabFolder#setMinimizeVisible(bool)
-     */
-    public void minimize (CTabFolderEvent event);
+/**
+ * Sent when the user clicks on the maximize button of a CTabFolder.
+ * The state of the CTabFolder does not change automatically - it
+ * is up to the application to change the state of the CTabFolder
+ * in response to this event using CTabFolder.setMaximized(true).
+ *
+ * @param event an event containing information about the maximize
+ *
+ * @see CTabFolder#getMaximized()
+ * @see CTabFolder#setMaximized(bool)
+ * @see CTabFolder#setMaximizeVisible(bool)
+ */
+public void maximize(CTabFolderEvent event);
+
+/**
+ * Sent when the user clicks on the restore button of a CTabFolder.
+ * This event is sent either to restore the CTabFolder from the
+ * minimized state or from the maximized state.  To determine
+ * which restore is requested, use CTabFolder.getMinimized() or
+ * CTabFolder.getMaximized() to determine the current state.
+ * The state of the CTabFolder does not change automatically - it
+ * is up to the application to change the state of the CTabFolder
+ * in response to this event using CTabFolder.setMaximized(false)
+ * or CTabFolder.setMinimized(false).
+ *
+ * @param event an event containing information about the restore
+ *
+ * @see CTabFolder#getMinimized()
+ * @see CTabFolder#getMaximized()
+ * @see CTabFolder#setMinimized(bool)
+ * @see CTabFolder#setMinimizeVisible(bool)
+ * @see CTabFolder#setMaximized(bool)
+ * @see CTabFolder#setMaximizeVisible(bool)
+ */
+public void restore(CTabFolderEvent event);
 
-    /**
-     * Sent when the user clicks on the maximize button of a CTabFolder.
-     * The state of the CTabFolder does not change automatically - it 
-     * is up to the application to change the state of the CTabFolder
-     * in response to this event using CTabFolder.setMaximized(true).
-     * 
-     * @param event an event containing information about the maximize
-     * 
-     * @see CTabFolder#getMaximized()
-     * @see CTabFolder#setMaximized(bool)
-     * @see CTabFolder#setMaximizeVisible(bool)
-     */
-    public void maximize (CTabFolderEvent event);
+/**
+ * Sent when the user clicks on the chevron button of the CTabFolder.
+ * A chevron appears in the CTabFolder when there are more tabs
+ * than can be displayed at the current widget size.  To select a
+ * tab that is not currently visible, the user clicks on the
+ * chevron and selects a tab item from a list.  By default, the
+ * CTabFolder provides a list of all the items that are not currently
+ * visible, however, the application can provide its own list by setting
+ * the event.doit field to <code>false</code> and displaying a selection list.
+ *
+ * @param event an event containing information about the show list
+ *
+ * @see CTabFolder#setSelection(CTabItem)
+ */
+public void showList(CTabFolderEvent event);
+}
+
+
+
+/// Helper class for the dgListener template function
+private class _DgCTabFolder2ListenerT(Dg,T...) : CTabFolder2Listener {
+
+    alias ParameterTupleOf!(Dg) DgArgs;
+    static assert( is(DgArgs == Tuple!(CTabFolderEvent,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;
+        }
+    }
 
-    /**
-     * Sent when the user clicks on the restore button of a CTabFolder.
-     * This event is sent either to restore the CTabFolder from the 
-     * minimized state or from the maximized state.  To determine
-     * which restore is requested, use CTabFolder.getMinimized() or
-     * CTabFolder.getMaximized() to determine the current state.
-     * The state of the CTabFolder does not change automatically - it 
-     * is up to the application to change the state of the CTabFolder
-     * in response to this event using CTabFolder.setMaximized(false)
-     * or CTabFolder.setMinimized(false).
-     * 
-     * @param event an event containing information about the restore
-     * 
-     * @see CTabFolder#getMinimized()
-     * @see CTabFolder#getMaximized()
-     * @see CTabFolder#setMinimized(bool)
-     * @see CTabFolder#setMinimizeVisible(bool)
-     * @see CTabFolder#setMaximized(bool)
-     * @see CTabFolder#setMaximizeVisible(bool)
-     */
-    public void restore (CTabFolderEvent event);
+    void itemClosed( CTabFolderEvent e ){
+        dg(e,t);
+    }
+    public void close(CTabFolderEvent e){
+        if( type is CTabFolder2Listener.CLOSE ){
+            dg(e,t);
+        }
+    }
+    public void minimize(CTabFolderEvent e){
+        if( type is CTabFolder2Listener.MINIMIZE ){
+            dg(e,t);
+        }
+    }
+    public void maximize(CTabFolderEvent e){
+        if( type is CTabFolder2Listener.MAXIMIZE ){
+            dg(e,t);
+        }
+    }
+    public void restore(CTabFolderEvent e){
+        if( type is CTabFolder2Listener.RESTORE ){
+            dg(e,t);
+        }
+    }
+    public void showList(CTabFolderEvent e){
+        if( type is CTabFolder2Listener.SHOWLIST ){
+            dg(e,t);
+        }
+    }
+}
 
-    /**
-     * Sent when the user clicks on the chevron button of the CTabFolder.
-     * A chevron appears in the CTabFolder when there are more tabs 
-     * than can be displayed at the current widget size.  To select a 
-     * tab that is not currently visible, the user clicks on the
-     * chevron and selects a tab item from a list.  By default, the
-     * CTabFolder provides a list of all the items that are not currently
-     * visible, however, the application can provide its own list by setting 
-     * the event.doit field to <code>false</code> and displaying a selection list.
-     * 
-     * @param event an event containing information about the show list  
-     * 
-     * @see CTabFolder#setSelection(CTabItem)
-     */
-    public void showList (CTabFolderEvent event);
+/++
+ + dgListener creates a class implementing the Listener interface and delegating the call to
+ + handleEvent to the users delegate. This template function will store also additional parameters.
+ +
+ + Examle of usage:
+ + ---
+ + void handleTextEvent ( Event e, int inset ) {
+ +     // ...
+ + }
+ + text.addListener (DWT.FocusOut, dgListener( &handleTextEvent, inset ));
+ + ---
+ +/
+CTabFolder2Listener dgCTabFolder2Listener( Dg, T... )( int type, Dg dg, T args ){
+    return new _DgCTabFolder2ListenerT!( Dg, T )( type, dg, args );
 }
+
+
+