comparison 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
comparison
equal deleted inserted replaced
40:fbe68c33eeee 41:6337764516f1
1 /******************************************************************************* 1 /*******************************************************************************
2 * Copyright (c) 2000, 2004 IBM Corporation and others. 2 * Copyright (c) 2000, 2004 IBM Corporation and others.
3 * All rights reserved. This program and the accompanying materials 3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0 4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at 5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html 6 * http://www.eclipse.org/legal/epl-v10.html
7 * 7 *
8 * Contributors: 8 * Contributors:
9 * IBM Corporation - initial API and implementation 9 * IBM Corporation - initial API and implementation
10 *
11 * Port to the D programming language: 10 * Port to the D programming language:
12 * Jacob Carlborg <jacob.carlborg@gmail.com> 11 * Frank Benoit <benoit@tionex.de>
13 *******************************************************************************/ 12 *******************************************************************************/
14 module dwt.custom.CTabFolder2Listener; 13 module dwt.custom.CTabFolder2Listener;
15 14
15 import dwt.internal.DWTEventListener;
16 import dwt.custom.CTabFolderEvent; 16 import dwt.custom.CTabFolderEvent;
17 import dwt.internal.DWTEventListener; 17
18 import tango.core.Traits;
19 import tango.core.Tuple;
18 20
19 /** 21 /**
20 * Classes which implement this interface provide methods 22 * Classes which implement this interface provide methods
21 * that deal with the events that are generated by the CTabFolder 23 * that deal with the events that are generated by the CTabFolder
22 * control. 24 * control.
23 * <p> 25 * <p>
24 * After creating an instance of a class that : 26 * After creating an instance of a class that :
25 * this interface it can be added to a CTabFolder using the 27 * this interface it can be added to a CTabFolder using the
26 * <code>addCTabFolder2Listener</code> method and removed using 28 * <code>addCTabFolder2Listener</code> method and removed using
29 * will be invoked. 31 * will be invoked.
30 * </p> 32 * </p>
31 * 33 *
32 * @see CTabFolder2Adapter 34 * @see CTabFolder2Adapter
33 * @see CTabFolderEvent 35 * @see CTabFolderEvent
34 * 36 *
35 * @since 3.0 37 * @since 3.0
36 */ 38 */
37 public interface CTabFolder2Listener : DWTEventListener { 39 public interface CTabFolder2Listener : DWTEventListener {
40 public enum {
41 MINIMIZE,
42 MAXIMIZE,
43 SHOWLIST,
44 RESTORE,
45 CLOSE
46 }
38 47
39 /** 48 /**
40 * Sent when the user clicks on the close button of an item in the CTabFolder. 49 * Sent when the user clicks on the close button of an item in the CTabFolder.
41 * The item being closed is specified in the event.item field. 50 * The item being closed is specified in the event.item field.
42 * Setting the event.doit field to false will stop the CTabItem from closing. 51 * Setting the event.doit field to false will stop the CTabItem from closing.
43 * When the CTabItem is closed, it is disposed. The contents of the 52 * When the CTabItem is closed, it is disposed. The contents of the
44 * CTabItem (see CTabItem.setControl) will be made not visible when 53 * CTabItem (see CTabItem.setControl) will be made not visible when
45 * the CTabItem is closed. 54 * the CTabItem is closed.
46 * 55 *
47 * @param event an event indicating the item being closed 56 * @param event an event indicating the item being closed
48 */ 57 */
49 public void close (CTabFolderEvent event); 58 public void close(CTabFolderEvent event);
50 59
51 /** 60 /**
52 * Sent when the user clicks on the minimize button of a CTabFolder. 61 * Sent when the user clicks on the minimize button of a CTabFolder.
53 * The state of the CTabFolder does not change automatically - it 62 * The state of the CTabFolder does not change automatically - it
54 * is up to the application to change the state of the CTabFolder 63 * is up to the application to change the state of the CTabFolder
55 * in response to this event using CTabFolder.setMinimized(true). 64 * in response to this event using CTabFolder.setMinimized(true).
56 * 65 *
57 * @param event an event containing information about the minimize 66 * @param event an event containing information about the minimize
58 * 67 *
59 * @see CTabFolder#getMinimized() 68 * @see CTabFolder#getMinimized()
60 * @see CTabFolder#setMinimized(bool) 69 * @see CTabFolder#setMinimized(bool)
61 * @see CTabFolder#setMinimizeVisible(bool) 70 * @see CTabFolder#setMinimizeVisible(bool)
62 */ 71 */
63 public void minimize (CTabFolderEvent event); 72 public void minimize(CTabFolderEvent event);
64 73
65 /** 74 /**
66 * Sent when the user clicks on the maximize button of a CTabFolder. 75 * Sent when the user clicks on the maximize button of a CTabFolder.
67 * The state of the CTabFolder does not change automatically - it 76 * The state of the CTabFolder does not change automatically - it
68 * is up to the application to change the state of the CTabFolder 77 * is up to the application to change the state of the CTabFolder
69 * in response to this event using CTabFolder.setMaximized(true). 78 * in response to this event using CTabFolder.setMaximized(true).
70 * 79 *
71 * @param event an event containing information about the maximize 80 * @param event an event containing information about the maximize
72 * 81 *
73 * @see CTabFolder#getMaximized() 82 * @see CTabFolder#getMaximized()
74 * @see CTabFolder#setMaximized(bool) 83 * @see CTabFolder#setMaximized(bool)
75 * @see CTabFolder#setMaximizeVisible(bool) 84 * @see CTabFolder#setMaximizeVisible(bool)
76 */ 85 */
77 public void maximize (CTabFolderEvent event); 86 public void maximize(CTabFolderEvent event);
78 87
79 /** 88 /**
80 * Sent when the user clicks on the restore button of a CTabFolder. 89 * Sent when the user clicks on the restore button of a CTabFolder.
81 * This event is sent either to restore the CTabFolder from the 90 * This event is sent either to restore the CTabFolder from the
82 * minimized state or from the maximized state. To determine 91 * minimized state or from the maximized state. To determine
83 * which restore is requested, use CTabFolder.getMinimized() or 92 * which restore is requested, use CTabFolder.getMinimized() or
84 * CTabFolder.getMaximized() to determine the current state. 93 * CTabFolder.getMaximized() to determine the current state.
85 * The state of the CTabFolder does not change automatically - it 94 * The state of the CTabFolder does not change automatically - it
86 * is up to the application to change the state of the CTabFolder 95 * is up to the application to change the state of the CTabFolder
87 * in response to this event using CTabFolder.setMaximized(false) 96 * in response to this event using CTabFolder.setMaximized(false)
88 * or CTabFolder.setMinimized(false). 97 * or CTabFolder.setMinimized(false).
89 * 98 *
90 * @param event an event containing information about the restore 99 * @param event an event containing information about the restore
91 * 100 *
92 * @see CTabFolder#getMinimized() 101 * @see CTabFolder#getMinimized()
93 * @see CTabFolder#getMaximized() 102 * @see CTabFolder#getMaximized()
94 * @see CTabFolder#setMinimized(bool) 103 * @see CTabFolder#setMinimized(bool)
95 * @see CTabFolder#setMinimizeVisible(bool) 104 * @see CTabFolder#setMinimizeVisible(bool)
96 * @see CTabFolder#setMaximized(bool) 105 * @see CTabFolder#setMaximized(bool)
97 * @see CTabFolder#setMaximizeVisible(bool) 106 * @see CTabFolder#setMaximizeVisible(bool)
98 */ 107 */
99 public void restore (CTabFolderEvent event); 108 public void restore(CTabFolderEvent event);
100 109
101 /** 110 /**
102 * Sent when the user clicks on the chevron button of the CTabFolder. 111 * Sent when the user clicks on the chevron button of the CTabFolder.
103 * A chevron appears in the CTabFolder when there are more tabs 112 * A chevron appears in the CTabFolder when there are more tabs
104 * than can be displayed at the current widget size. To select a 113 * than can be displayed at the current widget size. To select a
105 * tab that is not currently visible, the user clicks on the 114 * tab that is not currently visible, the user clicks on the
106 * chevron and selects a tab item from a list. By default, the 115 * chevron and selects a tab item from a list. By default, the
107 * CTabFolder provides a list of all the items that are not currently 116 * CTabFolder provides a list of all the items that are not currently
108 * visible, however, the application can provide its own list by setting 117 * visible, however, the application can provide its own list by setting
109 * the event.doit field to <code>false</code> and displaying a selection list. 118 * the event.doit field to <code>false</code> and displaying a selection list.
110 * 119 *
111 * @param event an event containing information about the show list 120 * @param event an event containing information about the show list
112 * 121 *
113 * @see CTabFolder#setSelection(CTabItem) 122 * @see CTabFolder#setSelection(CTabItem)
114 */ 123 */
115 public void showList (CTabFolderEvent event); 124 public void showList(CTabFolderEvent event);
116 } 125 }
126
127
128
129 /// Helper class for the dgListener template function
130 private class _DgCTabFolder2ListenerT(Dg,T...) : CTabFolder2Listener {
131
132 alias ParameterTupleOf!(Dg) DgArgs;
133 static assert( is(DgArgs == Tuple!(CTabFolderEvent,T)),
134 "Delegate args not correct: "~DgArgs.stringof~" vs. (Event,"~T.stringof~")" );
135
136 Dg dg;
137 T t;
138 int type;
139
140 private this( int type, Dg dg, T t ){
141 this.type = type;
142 this.dg = dg;
143 static if( T.length > 0 ){
144 this.t = t;
145 }
146 }
147
148 void itemClosed( CTabFolderEvent e ){
149 dg(e,t);
150 }
151 public void close(CTabFolderEvent e){
152 if( type is CTabFolder2Listener.CLOSE ){
153 dg(e,t);
154 }
155 }
156 public void minimize(CTabFolderEvent e){
157 if( type is CTabFolder2Listener.MINIMIZE ){
158 dg(e,t);
159 }
160 }
161 public void maximize(CTabFolderEvent e){
162 if( type is CTabFolder2Listener.MAXIMIZE ){
163 dg(e,t);
164 }
165 }
166 public void restore(CTabFolderEvent e){
167 if( type is CTabFolder2Listener.RESTORE ){
168 dg(e,t);
169 }
170 }
171 public void showList(CTabFolderEvent e){
172 if( type is CTabFolder2Listener.SHOWLIST ){
173 dg(e,t);
174 }
175 }
176 }
177
178 /++
179 + dgListener creates a class implementing the Listener interface and delegating the call to
180 + handleEvent to the users delegate. This template function will store also additional parameters.
181 +
182 + Examle of usage:
183 + ---
184 + void handleTextEvent ( Event e, int inset ) {
185 + // ...
186 + }
187 + text.addListener (DWT.FocusOut, dgListener( &handleTextEvent, inset ));
188 + ---
189 +/
190 CTabFolder2Listener dgCTabFolder2Listener( Dg, T... )( int type, Dg dg, T args ){
191 return new _DgCTabFolder2ListenerT!( Dg, T )( type, dg, args );
192 }
193
194
195