mirror of https://github.com/sipwise/jitsi.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
280 lines
6.0 KiB
280 lines
6.0 KiB
/*
|
|
* 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 net.java.sip.communicator.util.swing.plaf.*;
|
|
|
|
import java.awt.*;
|
|
import java.net.*;
|
|
|
|
import javax.swing.*;
|
|
|
|
/**
|
|
* A button which text is a link. The button looks like a link.
|
|
*/
|
|
public class SIPCommLinkButton
|
|
extends JButton
|
|
{
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
/**
|
|
* Class id key used in UIDefaults.
|
|
*/
|
|
private static final String UIClassID = "LinkButtonUI";
|
|
|
|
/**
|
|
* Adds the ui class to UIDefaults.
|
|
*/
|
|
static
|
|
{
|
|
UIManager.getDefaults().put(UIClassID,
|
|
SIPCommLinkButtonUI.class.getName());
|
|
}
|
|
|
|
public static final int ALWAYS_UNDERLINE = 0;
|
|
|
|
public static final int HOVER_UNDERLINE = 1;
|
|
|
|
public static final int NEVER_UNDERLINE = 2;
|
|
|
|
private int linkBehavior;
|
|
|
|
private Color linkColor;
|
|
|
|
private Color colorPressed;
|
|
|
|
private Color visitedLinkColor;
|
|
|
|
private Color disabledLinkColor;
|
|
|
|
private URL buttonURL;
|
|
|
|
private boolean isLinkVisited;
|
|
|
|
/**
|
|
* Created Link Button.
|
|
*/
|
|
public SIPCommLinkButton()
|
|
{
|
|
this(null, null);
|
|
}
|
|
|
|
/**
|
|
* Created Link Button with text.
|
|
* @param text
|
|
*/
|
|
public SIPCommLinkButton(String text)
|
|
{
|
|
this(text, null);
|
|
}
|
|
|
|
/**
|
|
* Created Link Button with url.
|
|
* @param url
|
|
*/
|
|
public SIPCommLinkButton(URL url)
|
|
{
|
|
this(null, url);
|
|
}
|
|
|
|
/**
|
|
* Created Link Button with text and url.
|
|
* @param text
|
|
* @param url
|
|
*/
|
|
public SIPCommLinkButton(String text, URL url)
|
|
{
|
|
super(text);
|
|
|
|
linkBehavior = SIPCommLinkButton.HOVER_UNDERLINE;
|
|
|
|
linkColor = Color.blue;
|
|
colorPressed = Color.red;
|
|
visitedLinkColor = new Color(128, 0, 128);
|
|
|
|
if (text == null && url != null)
|
|
this.setText(url.toExternalForm());
|
|
setLinkURL(url);
|
|
|
|
this.setBorderPainted(false);
|
|
this.setContentAreaFilled(false);
|
|
this.setRolloverEnabled(true);
|
|
this.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
|
|
}
|
|
|
|
public String getUIClassID()
|
|
{
|
|
return SIPCommLinkButton.UIClassID;
|
|
}
|
|
|
|
/**
|
|
* Setup the tooltip.
|
|
*/
|
|
protected void setupToolTipText()
|
|
{
|
|
String tip = null;
|
|
if (buttonURL != null)
|
|
tip = buttonURL.toExternalForm();
|
|
setToolTipText(tip);
|
|
}
|
|
|
|
/**
|
|
* Changes link behaviour.
|
|
* @param bnew the new behaviour. One of ALWAYS_UNDERLINE, HOVER_UNDERLINE
|
|
* and NEVER_UNDERLINE.
|
|
*/
|
|
public void setLinkBehavior(int bnew)
|
|
{
|
|
if (bnew != ALWAYS_UNDERLINE && bnew != HOVER_UNDERLINE
|
|
&& bnew != NEVER_UNDERLINE)
|
|
throw new IllegalArgumentException("Not a legal LinkBehavior");
|
|
|
|
int old = linkBehavior;
|
|
linkBehavior = bnew;
|
|
firePropertyChange("linkBehavior", old, bnew);
|
|
repaint();
|
|
}
|
|
|
|
/**
|
|
* Returns the link behaviour.
|
|
* @return the link behaviour.
|
|
*/
|
|
public int getLinkBehavior()
|
|
{
|
|
return linkBehavior;
|
|
}
|
|
|
|
/**
|
|
* Sets the link color.
|
|
* @param color the new color.
|
|
*/
|
|
public void setLinkColor(Color color)
|
|
{
|
|
Color colorOld = linkColor;
|
|
linkColor = color;
|
|
firePropertyChange("linkColor", colorOld, color);
|
|
repaint();
|
|
}
|
|
|
|
/**
|
|
* Return the link color.
|
|
* @return link color.
|
|
*/
|
|
public Color getLinkColor()
|
|
{
|
|
return linkColor;
|
|
}
|
|
|
|
/**
|
|
* Sets the active link color.
|
|
* @param colorNew the new color.
|
|
*/
|
|
public void setActiveLinkColor(Color colorNew)
|
|
{
|
|
Color colorOld = colorPressed;
|
|
colorPressed = colorNew;
|
|
firePropertyChange("activeLinkColor", colorOld, colorNew);
|
|
repaint();
|
|
}
|
|
|
|
/**
|
|
* Returns the active link color.
|
|
* @return the active link color.
|
|
*/
|
|
public Color getActiveLinkColor()
|
|
{
|
|
return colorPressed;
|
|
}
|
|
|
|
/**
|
|
* Sets disabled link color.
|
|
* @param color the new color.
|
|
*/
|
|
public void setDisabledLinkColor(Color color)
|
|
{
|
|
Color colorOld = disabledLinkColor;
|
|
disabledLinkColor = color;
|
|
firePropertyChange("disabledLinkColor", colorOld, color);
|
|
if (!isEnabled())
|
|
repaint();
|
|
}
|
|
|
|
/**
|
|
* Returns the disabled link color.
|
|
* @return the disabled link color.
|
|
*/
|
|
public Color getDisabledLinkColor()
|
|
{
|
|
return disabledLinkColor;
|
|
}
|
|
|
|
/**
|
|
* Set visited link color.
|
|
* @param colorNew the new visited link color.
|
|
*/
|
|
public void setVisitedLinkColor(Color colorNew)
|
|
{
|
|
Color colorOld = visitedLinkColor;
|
|
visitedLinkColor = colorNew;
|
|
firePropertyChange("visitedLinkColor", colorOld, colorNew);
|
|
repaint();
|
|
}
|
|
|
|
/**
|
|
* Returns visited link color.
|
|
* @return visited link color.
|
|
*/
|
|
public Color getVisitedLinkColor()
|
|
{
|
|
return visitedLinkColor;
|
|
}
|
|
|
|
/**
|
|
* Set a link.
|
|
* @param url the url.
|
|
*/
|
|
public void setLinkURL(URL url)
|
|
{
|
|
URL urlOld = buttonURL;
|
|
buttonURL = url;
|
|
setupToolTipText();
|
|
firePropertyChange("linkURL", urlOld, url);
|
|
revalidate();
|
|
repaint();
|
|
}
|
|
|
|
/**
|
|
* Returns the url.
|
|
* @return the link url.
|
|
*/
|
|
public URL getLinkURL()
|
|
{
|
|
return buttonURL;
|
|
}
|
|
|
|
/**
|
|
* Set a link visited.
|
|
* @param flagNew is link visited.
|
|
*/
|
|
public void setLinkVisited(boolean flagNew)
|
|
{
|
|
boolean flagOld = isLinkVisited;
|
|
isLinkVisited = flagNew;
|
|
firePropertyChange("linkVisited", flagOld, flagNew);
|
|
repaint();
|
|
}
|
|
|
|
/**
|
|
* Returns is link visited.
|
|
* @return is link visited.
|
|
*/
|
|
public boolean isLinkVisited()
|
|
{
|
|
return isLinkVisited;
|
|
}
|
|
}
|