| author | nipkow | 
| Mon, 13 Jan 2014 07:33:51 +0100 | |
| changeset 55003 | c65fd9218ea1 | 
| parent 53853 | e8430d668f44 | 
| child 56588 | 272d173cd398 | 
| permissions | -rw-r--r-- | 
| 53783 
f5e9d182f645
clarified location of GUI modules (which depend on Swing of JFX);
 wenzelm parents: 
53250diff
changeset | 1 | /* Title: Pure/GUI/popup.scala | 
| 53853 
e8430d668f44
more quasi-generic PIDE modules (NB: Swing/JFX needs to be kept separate from non-GUI material);
 wenzelm parents: 
53783diff
changeset | 2 | Module: PIDE-GUI | 
| 53246 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 3 | Author: Makarius | 
| 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 4 | |
| 53247 
bd595338ca18
uniform use of isabelle.jEdit.Popup, based on generic screen location operations;
 wenzelm parents: 
53246diff
changeset | 5 | Popup within layered pane. | 
| 53246 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 6 | */ | 
| 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 7 | |
| 53783 
f5e9d182f645
clarified location of GUI modules (which depend on Swing of JFX);
 wenzelm parents: 
53250diff
changeset | 8 | package isabelle | 
| 53246 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 9 | |
| 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 10 | |
| 53247 
bd595338ca18
uniform use of isabelle.jEdit.Popup, based on generic screen location operations;
 wenzelm parents: 
53246diff
changeset | 11 | import java.awt.{Point, Dimension}
 | 
| 53246 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 12 | import javax.swing.{JLayeredPane, JComponent}
 | 
| 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 13 | |
| 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 14 | |
| 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 15 | class Popup( | 
| 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 16 | layered: JLayeredPane, | 
| 53247 
bd595338ca18
uniform use of isabelle.jEdit.Popup, based on generic screen location operations;
 wenzelm parents: 
53246diff
changeset | 17 | component: JComponent, | 
| 
bd595338ca18
uniform use of isabelle.jEdit.Popup, based on generic screen location operations;
 wenzelm parents: 
53246diff
changeset | 18 | location: Point, | 
| 53250 | 19 | size: Dimension) | 
| 53246 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 20 | {
 | 
| 53250 | 21 | def show | 
| 53246 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 22 |   {
 | 
| 53247 
bd595338ca18
uniform use of isabelle.jEdit.Popup, based on generic screen location operations;
 wenzelm parents: 
53246diff
changeset | 23 | component.setLocation(location) | 
| 
bd595338ca18
uniform use of isabelle.jEdit.Popup, based on generic screen location operations;
 wenzelm parents: 
53246diff
changeset | 24 | component.setSize(size) | 
| 
bd595338ca18
uniform use of isabelle.jEdit.Popup, based on generic screen location operations;
 wenzelm parents: 
53246diff
changeset | 25 | component.setPreferredSize(size) | 
| 53246 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 26 | component.setOpaque(true) | 
| 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 27 | layered.add(component, JLayeredPane.POPUP_LAYER) | 
| 53247 
bd595338ca18
uniform use of isabelle.jEdit.Popup, based on generic screen location operations;
 wenzelm parents: 
53246diff
changeset | 28 | layered.moveToFront(component) | 
| 53246 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 29 | layered.repaint(component.getBounds()) | 
| 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 30 | } | 
| 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 31 | |
| 53250 | 32 | def hide | 
| 53246 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 33 |   {
 | 
| 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 34 | val bounds = component.getBounds() | 
| 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 35 | layered.remove(component) | 
| 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 36 | layered.repaint(bounds) | 
| 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 37 | } | 
| 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 38 | } | 
| 
8d34caf5bf82
more elementary Popup via JLayeredPane -- avoid javax.swing.PopupFactory with its many problems and dangers of accidental HeavyWeightPopup (especially on Mac OS X);
 wenzelm parents: diff
changeset | 39 |