155 case MouseEvent.MOUSE_RELEASED: 156 mouseReleased(e); 157 break; 158 case MouseEvent.MOUSE_ENTERED: 159 mouseEntered(e); 160 break; 161 case MouseEvent.MOUSE_EXITED: 162 mouseExited(e); 163 break; 164 case MouseEvent.MOUSE_CLICKED: 165 mouseClicked(e); 166 break; 167 } 168 } 169 170 public void mousePressed(MouseEvent e) { 171 if (XToolkit.isLeftMouseButton(e)) { 172 Checkbox cb = (Checkbox) e.getSource(); 173 174 if (cb.contains(e.getX(), e.getY())) { 175 if (log.isLoggable(PlatformLogger.FINER)) { 176 log.finer("mousePressed() on " + target.getName() + " : armed = " + armed + ", pressed = " + pressed 177 + ", selected = " + selected + ", enabled = " + isEnabled()); 178 } 179 if (!isEnabled()) { 180 // Disabled buttons ignore all input... 181 return; 182 } 183 if (!armed) { 184 armed = true; 185 } 186 pressed = true; 187 repaint(); 188 } 189 } 190 } 191 192 public void mouseReleased(MouseEvent e) { 193 if (log.isLoggable(PlatformLogger.FINER)) { 194 log.finer("mouseReleased() on " + target.getName() + ": armed = " + armed + ", pressed = " + pressed 195 + ", selected = " + selected + ", enabled = " + isEnabled()); 196 } 197 boolean sendEvent = false; 198 if (XToolkit.isLeftMouseButton(e)) { 199 // TODO: Multiclick Threshold? - see BasicButtonListener.java 200 if (armed) { 201 //selected = !selected; 202 // send action event 203 //action(e.getWhen(),e.getModifiers()); 204 sendEvent = true; 205 } 206 pressed = false; 207 armed = false; 208 if (sendEvent) { 209 action(!selected); // Also gets repaint in action() 210 } 211 else { 212 repaint(); 213 } 214 } 215 } 216 217 public void mouseEntered(MouseEvent e) { 218 if (log.isLoggable(PlatformLogger.FINER)) { 219 log.finer("mouseEntered() on " + target.getName() + ": armed = " + armed + ", pressed = " + pressed 220 + ", selected = " + selected + ", enabled = " + isEnabled()); 221 } 222 if (pressed) { 223 armed = true; 224 repaint(); 225 } 226 } 227 228 public void mouseExited(MouseEvent e) { 229 if (log.isLoggable(PlatformLogger.FINER)) { 230 log.finer("mouseExited() on " + target.getName() + ": armed = " + armed + ", pressed = " + pressed 231 + ", selected = " + selected + ", enabled = " + isEnabled()); 232 } 233 if (armed) { 234 armed = false; 235 repaint(); 236 } 237 } 238 239 public void mouseClicked(MouseEvent e) {} 240 241 public Dimension getMinimumSize() { 242 /* 243 * Spacing (number of pixels between check mark and label text) is 244 * currently set to 0, but in case it ever changes we have to add 245 * it. 8 is a heuristic number. Indicator size depends on font 246 * height, so we don't need to include it in checkbox's height 247 * calculation. 248 */ 249 FontMetrics fm = getFontMetrics(getPeerFont()); | 155 case MouseEvent.MOUSE_RELEASED: 156 mouseReleased(e); 157 break; 158 case MouseEvent.MOUSE_ENTERED: 159 mouseEntered(e); 160 break; 161 case MouseEvent.MOUSE_EXITED: 162 mouseExited(e); 163 break; 164 case MouseEvent.MOUSE_CLICKED: 165 mouseClicked(e); 166 break; 167 } 168 } 169 170 public void mousePressed(MouseEvent e) { 171 if (XToolkit.isLeftMouseButton(e)) { 172 Checkbox cb = (Checkbox) e.getSource(); 173 174 if (cb.contains(e.getX(), e.getY())) { 175 if (log.isLoggable(PlatformLogger.Level.FINER)) { 176 log.finer("mousePressed() on " + target.getName() + " : armed = " + armed + ", pressed = " + pressed 177 + ", selected = " + selected + ", enabled = " + isEnabled()); 178 } 179 if (!isEnabled()) { 180 // Disabled buttons ignore all input... 181 return; 182 } 183 if (!armed) { 184 armed = true; 185 } 186 pressed = true; 187 repaint(); 188 } 189 } 190 } 191 192 public void mouseReleased(MouseEvent e) { 193 if (log.isLoggable(PlatformLogger.Level.FINER)) { 194 log.finer("mouseReleased() on " + target.getName() + ": armed = " + armed + ", pressed = " + pressed 195 + ", selected = " + selected + ", enabled = " + isEnabled()); 196 } 197 boolean sendEvent = false; 198 if (XToolkit.isLeftMouseButton(e)) { 199 // TODO: Multiclick Threshold? - see BasicButtonListener.java 200 if (armed) { 201 //selected = !selected; 202 // send action event 203 //action(e.getWhen(),e.getModifiers()); 204 sendEvent = true; 205 } 206 pressed = false; 207 armed = false; 208 if (sendEvent) { 209 action(!selected); // Also gets repaint in action() 210 } 211 else { 212 repaint(); 213 } 214 } 215 } 216 217 public void mouseEntered(MouseEvent e) { 218 if (log.isLoggable(PlatformLogger.Level.FINER)) { 219 log.finer("mouseEntered() on " + target.getName() + ": armed = " + armed + ", pressed = " + pressed 220 + ", selected = " + selected + ", enabled = " + isEnabled()); 221 } 222 if (pressed) { 223 armed = true; 224 repaint(); 225 } 226 } 227 228 public void mouseExited(MouseEvent e) { 229 if (log.isLoggable(PlatformLogger.Level.FINER)) { 230 log.finer("mouseExited() on " + target.getName() + ": armed = " + armed + ", pressed = " + pressed 231 + ", selected = " + selected + ", enabled = " + isEnabled()); 232 } 233 if (armed) { 234 armed = false; 235 repaint(); 236 } 237 } 238 239 public void mouseClicked(MouseEvent e) {} 240 241 public Dimension getMinimumSize() { 242 /* 243 * Spacing (number of pixels between check mark and label text) is 244 * currently set to 0, but in case it ever changes we have to add 245 * it. 8 is a heuristic number. Indicator size depends on font 246 * height, so we don't need to include it in checkbox's height 247 * calculation. 248 */ 249 FontMetrics fm = getFontMetrics(getPeerFont()); |