19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package com.sun.java.swing.plaf.motif; 27 28 import sun.swing.SwingUtilities2; 29 import java.awt.*; 30 import java.awt.event.*; 31 import javax.swing.*; 32 import javax.swing.border.*; 33 import javax.swing.plaf.*; 34 import javax.swing.plaf.basic.*; 35 import java.beans.*; 36 import java.util.EventListener; 37 import java.io.Serializable; 38 39 40 /** 41 * Motif rendition of the component. 42 * 43 * @author Thomas Ball 44 * @author Rich Schiavi 45 */ 46 public class MotifDesktopIconUI extends BasicDesktopIconUI 47 { 48 protected DesktopIconActionListener desktopIconActionListener; 49 protected DesktopIconMouseListener desktopIconMouseListener; 50 51 protected Icon defaultIcon; 52 protected IconButton iconButton; 53 protected IconLabel iconLabel; 54 55 // This is only used for its system menu, but we need a reference to it so 56 // we can remove its listeners. 57 private MotifInternalFrameTitlePane sysMenuTitlePane; 58 220 addMouseListener(new MouseListener() { 221 public void mouseClicked(MouseEvent e) { 222 forwardEventToParent(e); 223 } 224 public void mousePressed(MouseEvent e) { 225 forwardEventToParent(e); 226 } 227 public void mouseReleased(MouseEvent e) { 228 forwardEventToParent(e); 229 } 230 public void mouseEntered(MouseEvent e) { 231 forwardEventToParent(e); 232 } 233 public void mouseExited(MouseEvent e) { 234 forwardEventToParent(e); 235 } 236 }); 237 } 238 239 void forwardEventToParent(MouseEvent e) { 240 getParent().dispatchEvent(new MouseEvent( 241 getParent(), e.getID(), e.getWhen(), e.getModifiers(), 242 e.getX(), e.getY(), e.getXOnScreen(), 243 e.getYOnScreen(), e.getClickCount(), 244 e.isPopupTrigger(), MouseEvent.NOBUTTON)); 245 } 246 247 public boolean isFocusTraversable() { 248 return false; 249 } 250 251 public Dimension getMinimumSize() { 252 return new Dimension(defaultIcon.getIconWidth() + 1, 253 LABEL_HEIGHT + LABEL_DIVIDER); 254 } 255 256 public Dimension getPreferredSize() { 257 String title = frame.getTitle(); 258 FontMetrics fm = frame.getFontMetrics(defaultTitleFont); 259 int w = 4; 260 if (title != null) { 261 w += SwingUtilities2.stringWidth(frame, fm, title); 262 } 263 return new Dimension(w, LABEL_HEIGHT + LABEL_DIVIDER); 264 } 311 forwardEventToParent(e); 312 } 313 public void mousePressed(MouseEvent e) { 314 forwardEventToParent(e); 315 } 316 public void mouseReleased(MouseEvent e) { 317 if (!systemMenu.isShowing()) { 318 forwardEventToParent(e); 319 } 320 } 321 public void mouseEntered(MouseEvent e) { 322 forwardEventToParent(e); 323 } 324 public void mouseExited(MouseEvent e) { 325 forwardEventToParent(e); 326 } 327 }); 328 } 329 330 void forwardEventToParent(MouseEvent e) { 331 getParent().dispatchEvent(new MouseEvent( 332 getParent(), e.getID(), e.getWhen(), e.getModifiers(), 333 e.getX(), e.getY(), e.getXOnScreen(), e.getYOnScreen(), 334 e.getClickCount(), e.isPopupTrigger(), MouseEvent.NOBUTTON )); 335 } 336 337 public boolean isFocusTraversable() { 338 return false; 339 } 340 } 341 342 343 protected class DesktopIconActionListener implements ActionListener { 344 public void actionPerformed(ActionEvent e){ 345 systemMenu.show(iconButton, 0, getDesktopIcon().getHeight()); 346 } 347 } 348 349 protected class DesktopIconMouseListener extends MouseAdapter { 350 // if we drag or move we should deengage the popup 351 public void mousePressed(MouseEvent e){ 352 if (e.getClickCount() > 1) { 353 try { 354 getFrame().setIcon(false); | 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package com.sun.java.swing.plaf.motif; 27 28 import sun.swing.SwingUtilities2; 29 import java.awt.*; 30 import java.awt.event.*; 31 import javax.swing.*; 32 import javax.swing.border.*; 33 import javax.swing.plaf.*; 34 import javax.swing.plaf.basic.*; 35 import java.beans.*; 36 import java.util.EventListener; 37 import java.io.Serializable; 38 39 import sun.awt.AWTAccessor; 40 import sun.awt.AWTAccessor.MouseEventAccessor; 41 42 /** 43 * Motif rendition of the component. 44 * 45 * @author Thomas Ball 46 * @author Rich Schiavi 47 */ 48 public class MotifDesktopIconUI extends BasicDesktopIconUI 49 { 50 protected DesktopIconActionListener desktopIconActionListener; 51 protected DesktopIconMouseListener desktopIconMouseListener; 52 53 protected Icon defaultIcon; 54 protected IconButton iconButton; 55 protected IconLabel iconLabel; 56 57 // This is only used for its system menu, but we need a reference to it so 58 // we can remove its listeners. 59 private MotifInternalFrameTitlePane sysMenuTitlePane; 60 222 addMouseListener(new MouseListener() { 223 public void mouseClicked(MouseEvent e) { 224 forwardEventToParent(e); 225 } 226 public void mousePressed(MouseEvent e) { 227 forwardEventToParent(e); 228 } 229 public void mouseReleased(MouseEvent e) { 230 forwardEventToParent(e); 231 } 232 public void mouseEntered(MouseEvent e) { 233 forwardEventToParent(e); 234 } 235 public void mouseExited(MouseEvent e) { 236 forwardEventToParent(e); 237 } 238 }); 239 } 240 241 void forwardEventToParent(MouseEvent e) { 242 MouseEvent newEvent = new MouseEvent( 243 getParent(), e.getID(), e.getWhen(), e.getModifiers(), 244 e.getX(), e.getY(), e.getXOnScreen(), 245 e.getYOnScreen(), e.getClickCount(), 246 e.isPopupTrigger(), MouseEvent.NOBUTTON); 247 MouseEventAccessor meAccessor = AWTAccessor.getMouseEventAccessor(); 248 meAccessor.setCausedByTouchEvent(newEvent, 249 meAccessor.isCausedByTouchEvent(e)); 250 getParent().dispatchEvent(newEvent); 251 } 252 253 public boolean isFocusTraversable() { 254 return false; 255 } 256 257 public Dimension getMinimumSize() { 258 return new Dimension(defaultIcon.getIconWidth() + 1, 259 LABEL_HEIGHT + LABEL_DIVIDER); 260 } 261 262 public Dimension getPreferredSize() { 263 String title = frame.getTitle(); 264 FontMetrics fm = frame.getFontMetrics(defaultTitleFont); 265 int w = 4; 266 if (title != null) { 267 w += SwingUtilities2.stringWidth(frame, fm, title); 268 } 269 return new Dimension(w, LABEL_HEIGHT + LABEL_DIVIDER); 270 } 317 forwardEventToParent(e); 318 } 319 public void mousePressed(MouseEvent e) { 320 forwardEventToParent(e); 321 } 322 public void mouseReleased(MouseEvent e) { 323 if (!systemMenu.isShowing()) { 324 forwardEventToParent(e); 325 } 326 } 327 public void mouseEntered(MouseEvent e) { 328 forwardEventToParent(e); 329 } 330 public void mouseExited(MouseEvent e) { 331 forwardEventToParent(e); 332 } 333 }); 334 } 335 336 void forwardEventToParent(MouseEvent e) { 337 MouseEvent newEvent = new MouseEvent( 338 getParent(), e.getID(), e.getWhen(), e.getModifiers(), 339 e.getX(), e.getY(), e.getXOnScreen(), e.getYOnScreen(), 340 e.getClickCount(), e.isPopupTrigger(), MouseEvent.NOBUTTON ); 341 MouseEventAccessor meAccessor = AWTAccessor.getMouseEventAccessor(); 342 meAccessor.setCausedByTouchEvent(newEvent, 343 meAccessor.isCausedByTouchEvent(e)); 344 getParent().dispatchEvent(newEvent); 345 } 346 347 public boolean isFocusTraversable() { 348 return false; 349 } 350 } 351 352 353 protected class DesktopIconActionListener implements ActionListener { 354 public void actionPerformed(ActionEvent e){ 355 systemMenu.show(iconButton, 0, getDesktopIcon().getHeight()); 356 } 357 } 358 359 protected class DesktopIconMouseListener extends MouseAdapter { 360 // if we drag or move we should deengage the popup 361 public void mousePressed(MouseEvent e){ 362 if (e.getClickCount() > 1) { 363 try { 364 getFrame().setIcon(false); |