Makes popup menus disappear when the parent window is not on focus.

cusax-fix
Yana Stamcheva 15 years ago
parent b114d12110
commit 8f9fa9fd3f

@ -7,7 +7,8 @@
package net.java.sip.communicator.impl.gui.customcontrols;
import java.awt.*;
import javax.swing.*;
import net.java.sip.communicator.util.swing.*;
/**
* The <tt>BoxPopupMenu</tt> is a <tt>JPopupMenu</tt>, which orders its
@ -16,8 +17,9 @@
*
* @author Yana Stamcheva
*/
public class BoxPopupMenu extends JPopupMenu {
public class BoxPopupMenu
extends SIPCommPopupMenu
{
private static final long serialVersionUID = -8488327445916201464L;
private int itemsCount;

@ -23,6 +23,7 @@
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.util.*;
import net.java.sip.communicator.util.skin.*;
import net.java.sip.communicator.util.swing.*;
/**
* The <tt>ChooseCallAccountDialog</tt> is the dialog shown when calling a
@ -33,7 +34,7 @@
* @author Adam Netocny
*/
public class ChooseCallAccountPopupMenu
extends JPopupMenu
extends SIPCommPopupMenu
implements Skinnable
{
/**

@ -15,6 +15,7 @@
import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.util.skin.*;
import net.java.sip.communicator.util.swing.*;
/**
* The <tt>ChooseCallAccountDialog</tt> is the dialog shown when calling a
@ -25,7 +26,7 @@
* @author Adam Netocny
*/
public class TransferActiveCallsMenu
extends JPopupMenu
extends SIPCommPopupMenu
implements Skinnable
{
/**

@ -18,6 +18,7 @@
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.util.*;
import net.java.sip.communicator.util.skin.*;
import net.java.sip.communicator.util.swing.*;
/**
* The <tt>ChatContactRightButtonMenu</tt> is the menu, opened when user clicks
@ -30,7 +31,7 @@
* @author Ingo Bauersachs
*/
public class ChatContactRightButtonMenu
extends JPopupMenu
extends SIPCommPopupMenu
implements ActionListener,
Skinnable
{

@ -15,6 +15,7 @@
import net.java.sip.communicator.impl.gui.main.chat.*;
import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.util.skin.*;
import net.java.sip.communicator.util.swing.*;
/**
* The <tt>ChatRightButtonMenu</tt> appears when the user makes a right button
@ -25,7 +26,7 @@
* @author Adam Netocny
*/
public class ChatRightButtonMenu
extends JPopupMenu
extends SIPCommPopupMenu
implements ActionListener,
Skinnable
{

@ -15,6 +15,7 @@
import net.java.sip.communicator.impl.gui.main.chat.*;
import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.util.skin.*;
import net.java.sip.communicator.util.swing.*;
/**
* The <tt>WritePanelRightButtonMenu</tt> appears when the user makes a right
@ -24,7 +25,7 @@
* @author Adam Netocny
*/
public class WritePanelRightButtonMenu
extends JPopupMenu
extends SIPCommPopupMenu
implements ActionListener,
Skinnable
{

@ -22,6 +22,7 @@
import net.java.sip.communicator.service.gui.Container;
import net.java.sip.communicator.util.*;
import net.java.sip.communicator.util.skin.*;
import net.java.sip.communicator.util.swing.*;
import org.osgi.framework.*;
@ -34,7 +35,7 @@
* @author Adam Netocny
*/
public class ChatRoomCommonRightButtonMenu
extends JPopupMenu
extends SIPCommPopupMenu
implements ActionListener,
PluginComponentListener,
Skinnable

@ -19,6 +19,7 @@
import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.service.resources.*;
import net.java.sip.communicator.util.swing.*;
/**
* The <tt>ChatRoomsListRightButtonMenu</tt> is the menu, opened when user clicks
@ -29,7 +30,7 @@
* @author Lubomir Marinov
*/
public class ChatRoomRightButtonMenu
extends JPopupMenu
extends SIPCommPopupMenu
implements ActionListener
{
/**

@ -16,6 +16,7 @@
import net.java.sip.communicator.impl.gui.main.chatroomslist.joinforms.*;
import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.util.skin.*;
import net.java.sip.communicator.util.swing.*;
/**
* The <tt>ChatRoomsListRightButtonMenu</tt> is the menu, opened when user clicks
@ -26,7 +27,7 @@
* @author Adam Netocny
*/
public class ChatRoomServerRightButtonMenu
extends JPopupMenu
extends SIPCommPopupMenu
implements ActionListener,
Skinnable
{

@ -15,6 +15,7 @@
import net.java.sip.communicator.impl.gui.main.contactlist.addgroup.*;
import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.util.skin.*;
import net.java.sip.communicator.util.swing.*;
/**
* The GroupRightButtonMenu is the menu, opened when user clicks with the
@ -25,7 +26,7 @@
* @author Adam Netocny
*/
public class CommonRightButtonMenu
extends JPopupMenu
extends SIPCommPopupMenu
implements ActionListener,
Skinnable
{

@ -19,6 +19,7 @@
import net.java.sip.communicator.service.gui.Container;
import net.java.sip.communicator.util.*;
import net.java.sip.communicator.util.skin.*;
import net.java.sip.communicator.util.swing.*;
import org.osgi.framework.*;
@ -31,7 +32,7 @@
* @author Adam Netocny
*/
public class GroupRightButtonMenu
extends JPopupMenu
extends SIPCommPopupMenu
implements ActionListener,
PluginComponentListener,
Skinnable

@ -40,7 +40,7 @@
* @author Adam Netocny
*/
public class MetaContactRightButtonMenu
extends JPopupMenu
extends SIPCommPopupMenu
implements ActionListener,
PluginComponentListener,
ContactListListener,

@ -31,7 +31,7 @@
* @author Adam Netocny
*/
public class SourceContactRightButtonMenu
extends JPopupMenu
extends SIPCommPopupMenu
implements Skinnable
{
/**

@ -24,7 +24,7 @@
* @author Damian Minkov
*/
public class SelectAvatarMenu
extends JPopupMenu
extends SIPCommPopupMenu
implements ActionListener
{
/**

@ -0,0 +1,60 @@
/*
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package net.java.sip.communicator.util.swing;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* A custom popup menu that detects parent focus lost.
*
* @author Yana Stamcheva
*/
public class SIPCommPopupMenu
extends JPopupMenu
{
public SIPCommPopupMenu()
{
// Hides the popup menu when the parent window loses focus.
addComponentListener(new ComponentAdapter()
{
public void componentResized(ComponentEvent evt)
{
Window parentWindow;
Component parent = getParent();
// If this is a submenu get the invoker first.
if (parent instanceof JPopupMenu)
parentWindow = SwingUtilities.getWindowAncestor(
((JPopupMenu) parent).getInvoker());
else
parentWindow
= SwingUtilities.getWindowAncestor(getInvoker());
if (!parentWindow.isActive())
{
setVisible(false);
}
parentWindow.addWindowFocusListener(new WindowFocusListener()
{
public void windowLostFocus(WindowEvent e)
{
if (SIPCommPopupMenu.this != null
&& SIPCommPopupMenu.this.isVisible())
SIPCommPopupMenu.this.setVisible(false);
}
public void windowGainedFocus(WindowEvent e) {}
});
}
});
}
}
Loading…
Cancel
Save