Mercurial > projects > dwt-addons
comparison dwtx/draw2d/ClickableEventHandler.d @ 98:95307ad235d9
Added Draw2d code, still work in progress
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sun, 03 Aug 2008 00:52:14 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
96:b492ba44e44d | 98:95307ad235d9 |
---|---|
1 /******************************************************************************* | |
2 * Copyright (c) 2000, 2005 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 dwtx.draw2d.ClickableEventHandler; | |
14 | |
15 import dwt.dwthelper.utils; | |
16 import dwtx.draw2d.MouseMotionListener; | |
17 import dwtx.draw2d.MouseEvent; | |
18 import dwtx.draw2d.KeyEvent; | |
19 import dwtx.draw2d.FocusEvent; | |
20 import dwtx.draw2d.KeyListener; | |
21 import dwtx.draw2d.FocusListener; | |
22 import dwtx.draw2d.IFigure; | |
23 import dwtx.draw2d.ChangeEvent; | |
24 import dwtx.draw2d.ChangeListener; | |
25 import dwtx.draw2d.MouseListener; | |
26 import dwtx.draw2d.FigureListener; | |
27 import dwtx.draw2d.Clickable; | |
28 import dwtx.draw2d.ButtonModel; | |
29 | |
30 | |
31 class ClickableEventHandler | |
32 : MouseMotionListener.Stub | |
33 , | |
34 MouseListener, | |
35 FigureListener, | |
36 ChangeListener, | |
37 KeyListener, | |
38 FocusListener | |
39 { | |
40 | |
41 private MouseEvent lastEvent; | |
42 | |
43 public void focusLost(FocusEvent fe) { | |
44 Clickable loser = cast(Clickable)fe.loser; | |
45 loser.repaint(); | |
46 loser.getModel().setArmed(false); | |
47 loser.getModel().setPressed(false); | |
48 } | |
49 | |
50 public void focusGained(FocusEvent fe) { | |
51 Clickable clickable = cast(Clickable)fe.gainer; | |
52 clickable.repaint(); | |
53 } | |
54 | |
55 public void figureMoved(IFigure source) { | |
56 if (lastEvent is null) | |
57 return; | |
58 mouseDragged(lastEvent); | |
59 } | |
60 | |
61 public void handleStateChanged(ChangeEvent change) { | |
62 Clickable clickable = cast(Clickable)change.getSource(); | |
63 if (change.getPropertyName() is ButtonModel.MOUSEOVER_PROPERTY | |
64 && !clickable.isRolloverEnabled()) | |
65 return; | |
66 clickable.repaint(); | |
67 } | |
68 | |
69 public void mouseDoubleClicked(MouseEvent me) { } | |
70 | |
71 public void mouseDragged(MouseEvent me) { | |
72 lastEvent = me; | |
73 Clickable click = cast(Clickable)me.getSource(); | |
74 ButtonModel model = click.getModel(); | |
75 if (model.isPressed()) { | |
76 bool over = click.containsPoint(me.getLocation()); | |
77 model.setArmed(over); | |
78 model.setMouseOver(over); | |
79 } | |
80 } | |
81 | |
82 public void mouseEntered(MouseEvent me) { | |
83 Clickable click = cast(Clickable)me.getSource(); | |
84 click.getModel().setMouseOver(true); | |
85 click.addFigureListener(this); | |
86 } | |
87 | |
88 public void mouseExited(MouseEvent me) { | |
89 Clickable click = cast(Clickable)me.getSource(); | |
90 click.getModel().setMouseOver(false); | |
91 click.removeFigureListener(this); | |
92 } | |
93 | |
94 public void mouseMoved(MouseEvent me) { } | |
95 | |
96 public void mousePressed(MouseEvent me) { | |
97 if (me.button !is 1) | |
98 return; | |
99 lastEvent = me; | |
100 Clickable click = cast(Clickable)me.getSource(); | |
101 ButtonModel model = click.getModel(); | |
102 click.requestFocus(); | |
103 model.setArmed(true); | |
104 model.setPressed(true); | |
105 me.consume(); | |
106 } | |
107 | |
108 public void mouseReleased(MouseEvent me) { | |
109 if (me.button !is 1) | |
110 return; | |
111 ButtonModel model = (cast(Clickable)me.getSource()).getModel(); | |
112 if (!model.isPressed()) | |
113 return; | |
114 model.setPressed(false); | |
115 model.setArmed(false); | |
116 me.consume(); | |
117 } | |
118 | |
119 public void keyPressed(KeyEvent ke) { | |
120 ButtonModel model = (cast(Clickable)ke.getSource()).getModel(); | |
121 if (ke.character is ' ' || ke.character is '\r') { | |
122 model.setPressed(true); | |
123 model.setArmed(true); | |
124 } | |
125 } | |
126 | |
127 public void keyReleased(KeyEvent ke) { | |
128 ButtonModel model = (cast(Clickable)ke.getSource()).getModel(); | |
129 if (ke.character is ' ' || ke.character is '\r') { | |
130 model.setPressed(false); | |
131 model.setArmed(false); | |
132 } | |
133 } | |
134 | |
135 } |