mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2026-02-14 07:47:12 -06:00
Popup: made Popup.show(), hide() and component listener more robust when used in unusual ways (issue #106)
This commit is contained in:
@@ -153,7 +153,8 @@ public class FlatPopupFactory
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void show() {
|
public void show() {
|
||||||
delegate.show();
|
if( delegate != null )
|
||||||
|
delegate.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -185,6 +186,7 @@ public class FlatPopupFactory
|
|||||||
private boolean oldOpaque;
|
private boolean oldOpaque;
|
||||||
|
|
||||||
// medium weight
|
// medium weight
|
||||||
|
private boolean mediumWeightShown;
|
||||||
private Panel mediumWeightPanel;
|
private Panel mediumWeightPanel;
|
||||||
private JPanel dropShadowPanel;
|
private JPanel dropShadowPanel;
|
||||||
private ComponentListener mediumPanelListener;
|
private ComponentListener mediumPanelListener;
|
||||||
@@ -311,6 +313,11 @@ public class FlatPopupFactory
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showMediumWeightDropShadow() {
|
private void showMediumWeightDropShadow() {
|
||||||
|
if( mediumWeightShown )
|
||||||
|
return;
|
||||||
|
|
||||||
|
mediumWeightShown = true;
|
||||||
|
|
||||||
Window window = SwingUtilities.windowForComponent( owner );
|
Window window = SwingUtilities.windowForComponent( owner );
|
||||||
if( window == null )
|
if( window == null )
|
||||||
return;
|
return;
|
||||||
@@ -326,24 +333,29 @@ public class FlatPopupFactory
|
|||||||
mediumPanelListener = new ComponentListener() {
|
mediumPanelListener = new ComponentListener() {
|
||||||
@Override
|
@Override
|
||||||
public void componentShown( ComponentEvent e ) {
|
public void componentShown( ComponentEvent e ) {
|
||||||
dropShadowPanel.setVisible( true );
|
if( dropShadowPanel != null )
|
||||||
|
dropShadowPanel.setVisible( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void componentHidden( ComponentEvent e ) {
|
public void componentHidden( ComponentEvent e ) {
|
||||||
dropShadowPanel.setVisible( false );
|
if( dropShadowPanel != null )
|
||||||
|
dropShadowPanel.setVisible( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void componentMoved( ComponentEvent e ) {
|
public void componentMoved( ComponentEvent e ) {
|
||||||
Point location = mediumWeightPanel.getLocation();
|
if( dropShadowPanel != null && mediumWeightPanel != null ) {
|
||||||
Insets insets = dropShadowPanel.getInsets();
|
Point location = mediumWeightPanel.getLocation();
|
||||||
dropShadowPanel.setLocation( location.x - insets.left, location.y - insets.top );
|
Insets insets = dropShadowPanel.getInsets();
|
||||||
|
dropShadowPanel.setLocation( location.x - insets.left, location.y - insets.top );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void componentResized( ComponentEvent e ) {
|
public void componentResized( ComponentEvent e ) {
|
||||||
dropShadowPanel.setSize( FlatUIUtils.addInsets( mediumWeightPanel.getSize(), dropShadowPanel.getInsets() ) );
|
if( dropShadowPanel != null )
|
||||||
|
dropShadowPanel.setSize( FlatUIUtils.addInsets( mediumWeightPanel.getSize(), dropShadowPanel.getInsets() ) );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
mediumWeightPanel.addComponentListener( mediumPanelListener );
|
mediumWeightPanel.addComponentListener( mediumPanelListener );
|
||||||
|
|||||||
Reference in New Issue
Block a user