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 221 addMouseListener(new MouseListener() { 222 public void mouseClicked(MouseEvent e) { 223 forwardEventToParent(e); 224 } 225 public void mousePressed(MouseEvent e) { 226 forwardEventToParent(e); 227 } 228 public void mouseReleased(MouseEvent e) { 229 forwardEventToParent(e); 230 } 231 public void mouseEntered(MouseEvent e) { 232 forwardEventToParent(e); 233 } 234 public void mouseExited(MouseEvent e) { 235 forwardEventToParent(e); 236 } 237 }); 238 } 239 @SuppressWarnings("deprecation") 240 void forwardEventToParent(MouseEvent e) { 241 getParent().dispatchEvent(new MouseEvent( 242 getParent(), e.getID(), e.getWhen(), e.getModifiers(), 243 e.getX(), e.getY(), e.getXOnScreen(), 244 e.getYOnScreen(), e.getClickCount(), 245 e.isPopupTrigger(), MouseEvent.NOBUTTON)); 246 } 247 248 @SuppressWarnings("deprecation") 249 public boolean isFocusTraversable() { 250 return false; 251 } 252 253 public Dimension getMinimumSize() { 254 return new Dimension(defaultIcon.getIconWidth() + 1, 255 LABEL_HEIGHT + LABEL_DIVIDER); 256 } 257 258 public Dimension getPreferredSize() { 259 String title = frame.getTitle(); 260 FontMetrics fm = frame.getFontMetrics(defaultTitleFont); 261 int w = 4; 262 if (title != null) { 263 w += SwingUtilities2.stringWidth(frame, fm, title); 264 } 265 return new Dimension(w, LABEL_HEIGHT + LABEL_DIVIDER); 314 forwardEventToParent(e); 315 } 316 public void mousePressed(MouseEvent e) { 317 forwardEventToParent(e); 318 } 319 public void mouseReleased(MouseEvent e) { 320 if (!systemMenu.isShowing()) { 321 forwardEventToParent(e); 322 } 323 } 324 public void mouseEntered(MouseEvent e) { 325 forwardEventToParent(e); 326 } 327 public void mouseExited(MouseEvent e) { 328 forwardEventToParent(e); 329 } 330 }); 331 } 332 @SuppressWarnings("deprecation") 333 void forwardEventToParent(MouseEvent e) { 334 getParent().dispatchEvent(new MouseEvent( 335 getParent(), e.getID(), e.getWhen(), e.getModifiers(), 336 e.getX(), e.getY(), e.getXOnScreen(), e.getYOnScreen(), 337 e.getClickCount(), e.isPopupTrigger(), MouseEvent.NOBUTTON )); 338 } 339 340 @SuppressWarnings("deprecation") 341 public boolean isFocusTraversable() { 342 return false; 343 } 344 } 345 346 347 protected class DesktopIconActionListener implements ActionListener { 348 public void actionPerformed(ActionEvent e){ 349 systemMenu.show(iconButton, 0, getDesktopIcon().getHeight()); 350 } 351 } 352 353 protected class DesktopIconMouseListener extends MouseAdapter { 354 // if we drag or move we should deengage the popup 355 public void mousePressed(MouseEvent e){ 356 if (e.getClickCount() > 1) { 357 try { | 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 223 addMouseListener(new MouseListener() { 224 public void mouseClicked(MouseEvent e) { 225 forwardEventToParent(e); 226 } 227 public void mousePressed(MouseEvent e) { 228 forwardEventToParent(e); 229 } 230 public void mouseReleased(MouseEvent e) { 231 forwardEventToParent(e); 232 } 233 public void mouseEntered(MouseEvent e) { 234 forwardEventToParent(e); 235 } 236 public void mouseExited(MouseEvent e) { 237 forwardEventToParent(e); 238 } 239 }); 240 } 241 @SuppressWarnings("deprecation") 242 void forwardEventToParent(MouseEvent e) { 243 MouseEvent newEvent = new MouseEvent( 244 getParent(), e.getID(), e.getWhen(), e.getModifiers(), 245 e.getX(), e.getY(), e.getXOnScreen(), 246 e.getYOnScreen(), e.getClickCount(), 247 e.isPopupTrigger(), MouseEvent.NOBUTTON); 248 MouseEventAccessor meAccessor = AWTAccessor.getMouseEventAccessor(); 249 meAccessor.setCausedByTouchEvent(newEvent, 250 meAccessor.isCausedByTouchEvent(e)); 251 getParent().dispatchEvent(newEvent); 252 } 253 254 @SuppressWarnings("deprecation") 255 public boolean isFocusTraversable() { 256 return false; 257 } 258 259 public Dimension getMinimumSize() { 260 return new Dimension(defaultIcon.getIconWidth() + 1, 261 LABEL_HEIGHT + LABEL_DIVIDER); 262 } 263 264 public Dimension getPreferredSize() { 265 String title = frame.getTitle(); 266 FontMetrics fm = frame.getFontMetrics(defaultTitleFont); 267 int w = 4; 268 if (title != null) { 269 w += SwingUtilities2.stringWidth(frame, fm, title); 270 } 271 return new Dimension(w, LABEL_HEIGHT + LABEL_DIVIDER); 320 forwardEventToParent(e); 321 } 322 public void mousePressed(MouseEvent e) { 323 forwardEventToParent(e); 324 } 325 public void mouseReleased(MouseEvent e) { 326 if (!systemMenu.isShowing()) { 327 forwardEventToParent(e); 328 } 329 } 330 public void mouseEntered(MouseEvent e) { 331 forwardEventToParent(e); 332 } 333 public void mouseExited(MouseEvent e) { 334 forwardEventToParent(e); 335 } 336 }); 337 } 338 @SuppressWarnings("deprecation") 339 void forwardEventToParent(MouseEvent e) { 340 MouseEvent newEvent = new MouseEvent( 341 getParent(), e.getID(), e.getWhen(), e.getModifiers(), 342 e.getX(), e.getY(), e.getXOnScreen(), e.getYOnScreen(), 343 e.getClickCount(), e.isPopupTrigger(), MouseEvent.NOBUTTON ); 344 MouseEventAccessor meAccessor = AWTAccessor.getMouseEventAccessor(); 345 meAccessor.setCausedByTouchEvent(newEvent, 346 meAccessor.isCausedByTouchEvent(e)); 347 getParent().dispatchEvent(newEvent); 348 } 349 350 @SuppressWarnings("deprecation") 351 public boolean isFocusTraversable() { 352 return false; 353 } 354 } 355 356 357 protected class DesktopIconActionListener implements ActionListener { 358 public void actionPerformed(ActionEvent e){ 359 systemMenu.show(iconButton, 0, getDesktopIcon().getHeight()); 360 } 361 } 362 363 protected class DesktopIconMouseListener extends MouseAdapter { 364 // if we drag or move we should deengage the popup 365 public void mousePressed(MouseEvent e){ 366 if (e.getClickCount() > 1) { 367 try { |