1 | /* |
2 | * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. |
3 | * |
4 | * Redistribution and use in source and binary forms, with or without |
5 | * modification, are permitted provided that the following conditions |
6 | * are met: |
7 | * |
8 | * -Redistributions of source code must retain the above copyright |
9 | * notice, this list of conditions and the following disclaimer. |
10 | * |
11 | * -Redistribution in binary form must reproduct the above copyright |
12 | * notice, this list of conditions and the following disclaimer in |
13 | * the documentation and/or other materials provided with the distribution. |
14 | * |
15 | * Neither the name of Sun Microsystems, Inc. or the names of contributors |
16 | * may be used to endorse or promote products derived from this software |
17 | * without specific prior written permission. |
18 | * |
19 | * This software is provided "AS IS," without a warranty of any kind. ALL |
20 | * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING |
21 | * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE |
22 | * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT |
23 | * BE LIABLE FOR ANY DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT |
24 | * OF OR RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR ITS |
25 | * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST |
26 | * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, |
27 | * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY |
28 | * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN |
29 | * IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. |
30 | * |
31 | * You acknowledge that Software is not designed, licensed or intended for |
32 | * use in the design, construction, operation or maintenance of any nuclear |
33 | * facility. |
34 | */ |
35 | |
36 | /* |
37 | * @(#)ToolTipDemo.java 1.6 03/01/23 |
38 | */ |
39 | |
40 | |
41 | import javax.swing.*; |
42 | import javax.swing.event.*; |
43 | import javax.swing.text.*; |
44 | import javax.swing.border.*; |
45 | import javax.swing.colorchooser.*; |
46 | import javax.swing.filechooser.*; |
47 | import javax.accessibility.*; |
48 | |
49 | import java.awt.*; |
50 | import java.awt.event.*; |
51 | import java.beans.*; |
52 | import java.util.*; |
53 | import java.io.*; |
54 | import java.applet.*; |
55 | import java.net.*; |
56 | |
57 | /** |
58 | * ToolTip Demo |
59 | * |
60 | * @version 1.6 01/23/03 |
61 | * @author Jeff Dinkins |
62 | */ |
63 | public class ToolTipDemo extends DemoModule { |
64 | |
65 | /** |
66 | * main method allows us to run as a standalone demo. |
67 | */ |
68 | public static void main(String[] args) { |
69 | ToolTipDemo demo = new ToolTipDemo(null); |
70 | demo.mainImpl(); |
71 | } |
72 | |
73 | /** |
74 | * ToolTipDemo Constructor |
75 | */ |
76 | public ToolTipDemo(SwingSet2 swingset) { |
77 | // Set the title for this demo, and an icon used to represent this |
78 | // demo inside the SwingSet2 app. |
79 | super(swingset, "ToolTipDemo", "toolbar/ToolTip.gif"); |
80 | |
81 | // Set the layout manager. |
82 | JPanel p = getDemoPanel(); |
83 | p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); |
84 | p.setBackground(Color.white); |
85 | |
86 | // Create a Cow to put in the center of the panel. |
87 | Cow cow = new Cow(); |
88 | cow.getAccessibleContext().setAccessibleName(getString("ToolTipDemo.accessible_cow")); |
89 | |
90 | // Set the tooltip text. Note, for fun, we also set more tooltip text |
91 | // descriptions for the cow down below in the Cow.contains() method. |
92 | cow.setToolTipText(getString("ToolTipDemo.cow")); |
93 | |
94 | // Add the cow midway down the panel |
95 | p.add(Box.createRigidArea(new Dimension(1, 150))); |
96 | p.add(cow); |
97 | } |
98 | |
99 | |
100 | class Cow extends JLabel { |
101 | Polygon cowgon = new Polygon(); |
102 | |
103 | public Cow() { |
104 | super(createImageIcon("tooltip/cow.gif", getString("ToolTipDemo.bessie"))); |
105 | setAlignmentX(CENTER_ALIGNMENT); |
106 | |
107 | // Set polygon points that define the outline of the cow. |
108 | cowgon.addPoint(3,20); cowgon.addPoint(44,4); |
109 | cowgon.addPoint(79,15); cowgon.addPoint(130,11); |
110 | cowgon.addPoint(252,5); cowgon.addPoint(181,17); |
111 | cowgon.addPoint(301,45); cowgon.addPoint(292,214); |
112 | cowgon.addPoint(269,209); cowgon.addPoint(266,142); |
113 | cowgon.addPoint(250,161); cowgon.addPoint(235,218); |
114 | cowgon.addPoint(203,206); cowgon.addPoint(215,137); |
115 | cowgon.addPoint(195,142); cowgon.addPoint(143,132); |
116 | cowgon.addPoint(133,189); cowgon.addPoint(160,200); |
117 | cowgon.addPoint(97,196); cowgon.addPoint(107,182); |
118 | cowgon.addPoint(118,185); cowgon.addPoint(110,144); |
119 | cowgon.addPoint(59,77); cowgon.addPoint(30,82); |
120 | cowgon.addPoint(30,35); cowgon.addPoint(15,36); |
121 | } |
122 | |
123 | boolean moo = false; |
124 | boolean milk = false; |
125 | boolean tail = false; |
126 | |
127 | // Use the contains method to set the tooltip text depending |
128 | // on where the mouse is over the cow. |
129 | public boolean contains(int x, int y) { |
130 | if(!cowgon.contains(new Point(x, y))) { |
131 | return false; |
132 | } |
133 | |
134 | if((x > 30) && (x < 60) && (y > 60) && (y < 85)) { |
135 | if(!moo) { |
136 | setToolTipText("<html><center><font color=blue size=+2>" + |
137 | getString("ToolTipDemo.moo") + "</font></center></html>"); |
138 | moo = true; |
139 | milk = false; |
140 | tail = false; |
141 | } |
142 | } else if((x > 150) && (x < 260) && (y > 90) && (y < 145)) { |
143 | if(!milk) { |
144 | setToolTipText("<html><center><font face=AvantGarde size=+1 color=white>" + |
145 | getString("ToolTipDemo.got_milk") + "</font></center></html>"); |
146 | milk = true; |
147 | moo = false; |
148 | tail = false; |
149 | } |
150 | } else if((x > 280) && (x < 300) && (y > 20) && (y < 175)) { |
151 | if(!tail) { |
152 | setToolTipText("<html><em><b>" + getString("ToolTipDemo.tail") + "</b></em></html>"); |
153 | tail = true; |
154 | moo = false; |
155 | milk = false; |
156 | } |
157 | } else if(moo || milk || tail) { |
158 | setToolTipText(getString("ToolTipDemo.tooltip_features")); |
159 | moo = false; |
160 | tail = false; |
161 | milk = false; |
162 | } |
163 | |
164 | return true; |
165 | } |
166 | } |
167 | |
168 | } |