1 /***
2 * Redistribution and use in source and binary forms, with or without
3 * modification, are permitted provided that the following conditions are
4 * met :
5 *
6 * . Redistributions of source code must retain the above copyright
7 * notice, this list of conditions and the following disclaimer.
8 *
9 * . Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * . The name of the author may not be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
24 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
25 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE.
27 *
28 * $Id$
29 */
30
31 package palmed.ui;
32
33 import javax.microedition.lcdui.Graphics;
34
35 /***
36 * This interface defines a gui component.
37 *
38 * @author Mathieu Champlon
39 * @version $Revision$ $Date$
40 */
41 public interface IComponent
42 {
43 /***
44 * Paint the component.
45 *
46 * @param g the graphics
47 */
48 void paint( Graphics g );
49
50 /***
51 * Request a component resize.
52 *
53 * @param width the new width
54 * @param height the new height
55 */
56 void resize( int width, int height );
57
58 /***
59 * Retrieve the layout.
60 * <p>
61 * Supported layouts are :
62 * <ul>
63 * <li>Item.LAYOUT_DEFAULT
64 * <li>Item.LAYOUT_EXPAND
65 * <li>Item.LAYOUT_VEXPAND
66 * </ul>
67 *
68 * @return a combination of layout flags
69 */
70 int getLayout();
71
72 /***
73 * Retrieve the current width.
74 *
75 * @return the width in pixels
76 */
77 int getWidth();
78
79 /***
80 * Retrieve the current height.
81 *
82 * @return the height in pixels
83 */
84 int getHeight();
85
86 /***
87 * Handle a click event.
88 *
89 * @param x the pointer abscissa
90 * @param y the pointer ordinate
91 * @return whether the component claims focus or not
92 */
93 boolean click( int x, int y );
94
95 /***
96 * Handle a drag event.
97 * <p>
98 * The component must have claimed focus upon click in order to receive this event.
99 *
100 * @param x the pointer abscissa
101 * @param y the pointer ordinate
102 */
103 void drag( int x, int y );
104
105 /***
106 * Handle an unclick event.
107 * <p>
108 * The component must have claimed focus upon click ini order to receive this event.
109 *
110 * @param x the pointer abscissa
111 * @param y the pointer ordinate
112 */
113 void unclick( int x, int y );
114 }