StatusSelectorBox component generalized in SIPCommSelectorBox, in order to be used as a common control in other places in the gui.

cusax-fix
Yana Stamcheva 20 years ago
parent 48301a03f2
commit 02680e54eb

@ -28,6 +28,7 @@
import javax.swing.JPopupMenu;
import javax.swing.Timer;
import net.java.sip.communicator.impl.gui.main.customcontrols.SIPCommSelectorBox;
import net.java.sip.communicator.impl.gui.main.i18n.Messages;
import net.java.sip.communicator.impl.gui.utils.AntialiasingManager;
import net.java.sip.communicator.impl.gui.utils.ImageLoader;
@ -38,12 +39,13 @@
import net.java.sip.communicator.service.protocol.icqconstants.IcqStatusEnum;
import net.java.sip.communicator.util.Logger;
public class StatusSelectorBox extends JLabel
implements MouseListener {
private JPopupMenu popup;
private Map itemsMap;
/**
* The component containging the list of statuses for a protocol,
* where the user could change its status.
*
* @author Yana Stamcheva
*/
public class StatusSelectorBox extends SIPCommSelectorBox{
private Logger logger = Logger.getLogger(StatusSelectorBox.class.getName());
@ -51,90 +53,43 @@ public class StatusSelectorBox extends JLabel
private BufferedImage[] animatedImageArray;
private Image backgroundImage = ImageLoader
.getImage(ImageLoader.STATUS_SELECTOR_BOX);
private Connecting connecting = new Connecting();
private ProtocolProviderService protocolProvider;
private Map itemsMap;
public StatusSelectorBox( MainFrame mainFrame,
ProtocolProviderService protocolProvider) {
super();
this.setPreferredSize(new Dimension(
this.backgroundImage.getWidth(this),
this.backgroundImage.getHeight(this)));
this.setVerticalAlignment(JLabel.CENTER);
this.setHorizontalAlignment(JLabel.CENTER);
this.mainFrame = mainFrame;
this.mainFrame = mainFrame;
this.protocolProvider = protocolProvider;
this.popup = new JPopupMenu();
this.popup.setInvoker(this);
this.addMouseListener(this);
}
public StatusSelectorBox( MainFrame mainFrame,
ProtocolProviderService protocolProvider,
Map itemsMap,
Image selectedItem) {
this.setPreferredSize(new Dimension(
this.backgroundImage.getWidth(this),
this.backgroundImage.getHeight(this)));
this.setVerticalAlignment(JLabel.CENTER);
this.setHorizontalAlignment(JLabel.CENTER);
this.setIcon(new ImageIcon(selectedItem));
super(selectedItem);
this.itemsMap = itemsMap;
this.mainFrame = mainFrame;
this.protocolProvider = protocolProvider;
this.itemsMap = itemsMap;
this.popup = new JPopupMenu();
this.popup.setInvoker(this);
this.addMouseListener(this);
this.init();
}
public void init() {
Iterator iter = itemsMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry)iter.next();
JMenuItem item
= new JMenuItem
(((IcqStatusEnum)entry.getKey()).getStatusName(),
new ImageIcon((Image)entry.getValue()));
item.addActionListener(new ItemActionListener());
this.popup.add(item);
}
}
public void addItem(String text, Icon icon){
JMenuItem item = new JMenuItem( text, icon);
item.addActionListener(new ItemActionListener());
this.popup.add(item);
this.addItem(((IcqStatusEnum)entry.getKey()).getStatusName(),
new ImageIcon((Image)entry.getValue()),
new ItemActionListener());
}
}
private class ItemActionListener implements ActionListener{
@ -229,7 +184,7 @@ else if(e1.getErrorCode()
break;
}
}
setIcon(menuItem.getIcon());
setSelected(menuItem);
}
}
}
@ -247,66 +202,7 @@ public void stopConnecting(){
this.connecting.stop();
}
public Point calculatePopupLocation(){
Component component = this;
Point point = new Point();
int x = this.getX();
int y = this.getY();
while(component.getParent() != null){
component = component.getParent();
x += component.getX();
y += component.getY();
}
point.x = x;
point.y = y + this.getHeight();
return point;
}
protected void paintComponent(Graphics g){
AntialiasingManager.activateAntialiasing(g);
g.drawImage(this.backgroundImage, 0, 0, this);
super.paintComponent(g);
}
public void mouseClicked(MouseEvent e) {
if (!this.popup.isVisible()) {
this.popup.setLocation(calculatePopupLocation());
this.popup.setVisible(true);
}
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
private class Connecting extends Timer {
public Connecting(){

@ -0,0 +1,141 @@
/*
* SIP Communicator, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package net.java.sip.communicator.impl.gui.main.customcontrols;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Iterator;
import java.util.Map;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import net.java.sip.communicator.impl.gui.utils.AntialiasingManager;
import net.java.sip.communicator.impl.gui.utils.ImageLoader;
/**
* SIPCommSelectorBox is very similar to a JComboBox. It
* allows having a list of icon-text pairs and when choosing
* on of them, to show only the selected icon without the text.
*
* @author Yana Stamcheva
*/
public class SIPCommSelectorBox extends JLabel
implements MouseListener {
private JPopupMenu popup;
private Object selectedItem;
private Image backgroundImage = ImageLoader
.getImage(ImageLoader.STATUS_SELECTOR_BOX);
public SIPCommSelectorBox(){
this.setPreferredSize(new Dimension(
this.backgroundImage.getWidth(this),
this.backgroundImage.getHeight(this)));
this.setVerticalAlignment(JLabel.CENTER);
this.setHorizontalAlignment(JLabel.CENTER);
this.popup = new JPopupMenu();
this.popup.setInvoker(this);
this.addMouseListener(this);
}
public SIPCommSelectorBox(Object selectedItem){
this();
this.selectedItem = selectedItem;
if(selectedItem instanceof Image)
this.setIcon(new ImageIcon((Image)selectedItem));
else
this.setText(selectedItem.toString());
}
public void addItem(String text, Icon icon,
ActionListener actionListener){
JMenuItem item = new JMenuItem(text, icon);
item.addActionListener(actionListener);
this.popup.add(item);
}
public Point calculatePopupLocation(){
Component component = this;
Point point = new Point();
int x = this.getX();
int y = this.getY();
while(component.getParent() != null){
component = component.getParent();
x += component.getX();
y += component.getY();
}
point.x = x;
point.y = y + this.getHeight();
return point;
}
protected void paintComponent(Graphics g){
AntialiasingManager.activateAntialiasing(g);
g.drawImage(this.backgroundImage, 0, 0, this);
super.paintComponent(g);
}
public void mouseClicked(MouseEvent e) {
if (!this.popup.isVisible()) {
this.popup.setLocation(calculatePopupLocation());
this.popup.setVisible(true);
}
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
public void setSelected(JMenuItem menuItem){
this.setIcon(menuItem.getIcon());
}
}
Loading…
Cancel
Save