1 32 33 package it.businesslogic.ireport.gui.box; 34 35 import java.awt.Component ; 36 import java.awt.Container ; 37 import java.awt.event.ComponentEvent ; 38 import java.awt.event.ComponentListener ; 39 import javax.swing.JPopupMenu ; 40 import javax.swing.SwingUtilities ; 41 42 46 public class JBoxButtonPopup extends JPopupMenu { 47 48 private Component parent; 49 private Component component; 50 private boolean installedTopListener = false; 51 52 53 public JBoxButtonPopup(Component parent, Component c) { 54 super(); 55 this.setParentComponent(parent); 56 this.setComponent(c); 57 super.add(getComponent()); 58 59 } 60 61 public void show() 62 { 63 if (!installedTopListener) 64 { 65 Container rootContainer = (Container )SwingUtilities.getRootPane(getParentComponent()); 66 rootContainer.addComponentListener(new ComponentListener () { 67 public void componentHidden(ComponentEvent e) { 68 setVisible(false); 69 } 70 public void componentMoved(ComponentEvent e) { 71 setVisible(false); 72 } 73 public void componentResized(ComponentEvent e) { 74 setVisible(false); 75 } 76 public void componentShown(ComponentEvent e) { 77 setVisible(false); 78 } 79 } ); 80 81 } 82 super.setPopupSize(getComponent().getPreferredSize()); 83 super.show(getParentComponent(), 0, getParentComponent().getHeight()); 85 } 86 87 public Component getParentComponent() { 88 return parent; 89 } 90 91 public void setParentComponent(Component parent) { 92 this.parent = parent; 93 } 94 95 public Component getComponent() { 96 return component; 97 } 98 99 public void setComponent(Component component) { 100 this.component = component; 101 } 102 103 } 104 | Popular Tags |