| author | wenzelm | 
| Thu, 13 Dec 2018 15:32:54 +0100 | |
| changeset 69459 | bbb61a9cb99a | 
| parent 64370 | 865b39487b5d | 
| child 73340 | 0ffcad1f6130 | 
| 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 | 
| 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 | 2 | 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 | 3 | |
| 53247 
bd595338ca18
uniform use of isabelle.jEdit.Popup, based on generic screen location operations;
 wenzelm parents: 
53246diff
changeset | 4 | 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 | 5 | */ | 
| 
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 | |
| 53783 
f5e9d182f645
clarified location of GUI modules (which depend on Swing of JFX);
 wenzelm parents: 
53250diff
changeset | 7 | 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 | 8 | |
| 
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 | |
| 53247 
bd595338ca18
uniform use of isabelle.jEdit.Popup, based on generic screen location operations;
 wenzelm parents: 
53246diff
changeset | 10 | 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 | 11 | 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 | 12 | |
| 
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 | 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 | 15 | layered: JLayeredPane, | 
| 53247 
bd595338ca18
uniform use of isabelle.jEdit.Popup, based on generic screen location operations;
 wenzelm parents: 
53246diff
changeset | 16 | component: JComponent, | 
| 
bd595338ca18
uniform use of isabelle.jEdit.Popup, based on generic screen location operations;
 wenzelm parents: 
53246diff
changeset | 17 | location: Point, | 
| 53250 | 18 | 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 | 19 | {
 | 
| 53250 | 20 | 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 | 21 |   {
 | 
| 53247 
bd595338ca18
uniform use of isabelle.jEdit.Popup, based on generic screen location operations;
 wenzelm parents: 
53246diff
changeset | 22 | component.setLocation(location) | 
| 
bd595338ca18
uniform use of isabelle.jEdit.Popup, based on generic screen location operations;
 wenzelm parents: 
53246diff
changeset | 23 | component.setSize(size) | 
| 
bd595338ca18
uniform use of isabelle.jEdit.Popup, based on generic screen location operations;
 wenzelm parents: 
53246diff
changeset | 24 | 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 | 25 | component.setOpaque(true) | 
| 56588 
272d173cd398
avoid conflict of Isabelle/jEdit popups with jEdit context menu;
 wenzelm parents: 
53853diff
changeset | 26 | layered.add(component, JLayeredPane.DEFAULT_LAYER) | 
| 53247 
bd595338ca18
uniform use of isabelle.jEdit.Popup, based on generic screen location operations;
 wenzelm parents: 
53246diff
changeset | 27 | 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 | 28 | 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 | 29 | } | 
| 
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 | |
| 53250 | 31 | 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 | 32 |   {
 | 
| 
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 | 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 | 34 | 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 | 35 | 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 | 36 | } | 
| 
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 |