mirror of https://github.com/sipwise/jitsi.git
cusax-fix
4816
parent
b4c90af949
commit
e9de32d9ce
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
@ -0,0 +1,139 @@
|
|||||||
|
/*
|
||||||
|
* 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.plugin.desktoputil;
|
||||||
|
|
||||||
|
import net.java.sip.communicator.util.skin.*;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The <tt>ExtendedPopupMenu</tt> is the dialog shown to let the user choose
|
||||||
|
* from several options.
|
||||||
|
*
|
||||||
|
* @author Damian Minkov
|
||||||
|
*/
|
||||||
|
public class ExtendedPopupMenu
|
||||||
|
extends SIPCommPopupMenu
|
||||||
|
implements Skinnable
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Serial version UID.
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = 0L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The invoker component.
|
||||||
|
*/
|
||||||
|
private final JComponent invoker;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates this dialog by specifying a list of items to choose from.
|
||||||
|
*
|
||||||
|
* @param invoker the invoker of this pop up
|
||||||
|
* @param title
|
||||||
|
* @param menuItems the list of items to select through
|
||||||
|
*/
|
||||||
|
public ExtendedPopupMenu(JComponent invoker,
|
||||||
|
String title,
|
||||||
|
List<JMenuItem> menuItems)
|
||||||
|
{
|
||||||
|
if (invoker != null)
|
||||||
|
this.invoker = invoker;
|
||||||
|
else
|
||||||
|
this.invoker = new JPanel();
|
||||||
|
|
||||||
|
this.init(title);
|
||||||
|
|
||||||
|
for (JMenuItem menuItem : menuItems)
|
||||||
|
{
|
||||||
|
this.add(menuItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes and add some common components.
|
||||||
|
*
|
||||||
|
* @param infoString the string we'd like to show on the top of this
|
||||||
|
* popup menu
|
||||||
|
*/
|
||||||
|
private void init(String infoString)
|
||||||
|
{
|
||||||
|
setInvoker(invoker);
|
||||||
|
|
||||||
|
if(infoString != null)
|
||||||
|
{
|
||||||
|
this.add(createInfoLabel(infoString));
|
||||||
|
|
||||||
|
this.addSeparator();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setFocusable(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shows the dialog at the given location.
|
||||||
|
*
|
||||||
|
* @param x the x coordinate
|
||||||
|
* @param y the y coordinate
|
||||||
|
*/
|
||||||
|
public void showPopupMenu(int x, int y)
|
||||||
|
{
|
||||||
|
setLocation(x, y);
|
||||||
|
setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shows this popup menu regarding to its invoker location.
|
||||||
|
*/
|
||||||
|
public void showPopupMenu()
|
||||||
|
{
|
||||||
|
Point location = new Point(invoker.getX(),
|
||||||
|
invoker.getY() + invoker.getHeight());
|
||||||
|
|
||||||
|
SwingUtilities
|
||||||
|
.convertPointToScreen(location, invoker.getParent());
|
||||||
|
setLocation(location);
|
||||||
|
setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates the info label.
|
||||||
|
*
|
||||||
|
* @param infoString the string we'd like to show on the top of this
|
||||||
|
* popup menu
|
||||||
|
* @return the created info label
|
||||||
|
*/
|
||||||
|
private Component createInfoLabel(String infoString)
|
||||||
|
{
|
||||||
|
JMenuItem infoLabel = new JMenuItem();
|
||||||
|
|
||||||
|
infoLabel.setEnabled(false);
|
||||||
|
infoLabel.setFocusable(false);
|
||||||
|
|
||||||
|
infoLabel.setText("<html><b>" + infoString + "</b></html>");
|
||||||
|
|
||||||
|
return infoLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reloads all menu items.
|
||||||
|
*/
|
||||||
|
public void loadSkin()
|
||||||
|
{
|
||||||
|
Component[] components = getComponents();
|
||||||
|
for(Component component : components)
|
||||||
|
{
|
||||||
|
if(component instanceof Skinnable)
|
||||||
|
{
|
||||||
|
Skinnable skinnableComponent = (Skinnable) component;
|
||||||
|
skinnableComponent.loadSkin();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in new issue