Mercurial > projects > dwt-mac
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 |