1 /*******************************************************************************
2  * Copyright (c) 2000, 2008 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  *     IBM Corporation - initial API and implementation
10  * Port to the D programming language:
11  *     Frank Benoit <benoit@tionex.de>
12  *******************************************************************************/
13 module org.eclipse.swt.events.ShellAdapter;
14 
15 import org.eclipse.swt.events.ShellListener;
16 
17 /**
18  * This adapter class provides default implementations for the
19  * methods described by the <code>ShellListener</code> interface.
20  * <p>
21  * Classes that wish to deal with <code>ShellEvent</code>s can
22  * extend this class and override only the methods which they are
23  * interested in.
24  * </p>
25  *
26  * @see ShellListener
27  * @see ShellEvent
28  * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a>
29  */
30 public abstract class ShellAdapter : ShellListener {
31 
32 /**
33  * Sent when a shell becomes the active window.
34  * The default behavior is to do nothing.
35  *
36  * @param e an event containing information about the activation
37  */
38 public void shellActivated(ShellEvent e) {
39 }
40 
41 /**
42  * Sent when a shell is closed.
43  * The default behavior is to do nothing.
44  *
45  * @param e an event containing information about the close
46  */
47 public void shellClosed(ShellEvent e) {
48 }
49 
50 /**
51  * Sent when a shell stops being the active window.
52  * The default behavior is to do nothing.
53  *
54  * @param e an event containing information about the deactivation
55  */
56 public void shellDeactivated(ShellEvent e) {
57 }
58 
59 /**
60  * Sent when a shell is un-minimized.
61  * The default behavior is to do nothing.
62  *
63  * @param e an event containing information about the un-minimization
64  */
65 public void shellDeiconified(ShellEvent e) {
66 }
67 
68 /**
69  * Sent when a shell is minimized.
70  * The default behavior is to do nothing.
71  *
72  * @param e an event containing information about the minimization
73  */
74 public void shellIconified(ShellEvent e) {
75 }
76 }
77 
78 class ShellDelegator : ShellAdapter {
79     alias void delegate(ShellEvent) DFunc;
80     DFunc delShellActivated;
81     DFunc delShellClosed;
82     DFunc delShellDeactivated;
83     DFunc delShellDeiconified;
84     DFunc delShellIconified;
85 
86 private this(
87     DFunc delShellActivated,
88     DFunc delShellClosed,
89     DFunc delShellDeactivated,
90     DFunc delShellDeiconified,
91     DFunc delShellIconified )
92 {
93     this.delShellActivated = delShellActivated;
94     this.delShellClosed = delShellClosed;
95     this.delShellDeactivated = delShellDeactivated;
96     this.delShellDeiconified = delShellDeiconified;
97     this.delShellIconified = delShellIconified;
98 }
99 
100 static ShellDelegator createShellActivated( DFunc del ){
101     return new ShellDelegator( del, null, null, null, null );
102 }
103 static ShellDelegator createShellClosed( DFunc del ){
104     return new ShellDelegator( null, del, null, null, null );
105 }
106 
107 override
108 public void shellActivated(ShellEvent e) {
109     if( delShellActivated !is null ) delShellActivated(e);
110 }
111 override
112 public void shellClosed(ShellEvent e) {
113     if( delShellClosed !is null ) delShellClosed(e);
114 }
115 override
116 public void shellDeactivated(ShellEvent e) {
117     if( delShellDeactivated !is null ) delShellDeactivated(e);
118 }
119 override
120 public void shellDeiconified(ShellEvent e) {
121     if( delShellDeiconified !is null ) delShellDeiconified(e);
122 }
123 override
124 public void shellIconified(ShellEvent e) {
125     if( delShellIconified !is null ) delShellIconified(e);
126 }
127 }
128 
129