/*
* Creado el 07/11/2008
*/
package se.cambio.openehr.view.util;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JLabel;
public class JLinkLabel extends JLabel implements MouseListener{
public static Color LINK_COLOR = Color.BLUE;
public static Color COMMENTED_LINK_COLOR = Color.GRAY;
/**
* Comentario para <code>serialVersionUID</code>
*/
private static final long serialVersionUID = 7112008L;
public JLinkLabel()
{
linkColor = LINK_COLOR;
hoverColor = new Color(128, 0, 128);
pressColor = Color.RED;
listeners = new ArrayList<ActionListener>();
actionCommand = "LINK_ACTION";
setForeground(linkColor);
addMouseListener(this);
}
public JLinkLabel(Color linkColor, Color hoverColor, Color pressColor)
{
this.linkColor = Color.BLUE;
this.hoverColor = new Color(128, 0, 128);
this.pressColor = Color.RED;
listeners = new ArrayList<ActionListener>();
actionCommand = "LINK_ACTION";
this.linkColor = linkColor;
this.hoverColor = hoverColor;
this.pressColor = pressColor;
setForeground(this.linkColor);
addMouseListener(this);
}
public void setActionCommand(String command)
{
actionCommand = command;
}
public void addActionListener(ActionListener listener)
{
listeners.add(listener);
}
public void removeActionListener(ActionListener listener)
{
listeners.remove(listener);
}
private void mouseClickedAction()
{
ActionEvent event = new ActionEvent(this, 0, actionCommand);
ActionListener listener;
for(Iterator<ActionListener> i$ = listeners.iterator(); i$.hasNext(); listener.actionPerformed(event))
listener = (ActionListener)i$.next();
}
public void setCommented(boolean commented){
if (commented){
linkColor = COMMENTED_LINK_COLOR;
}else{
linkColor = LINK_COLOR;
}
setForeground(linkColor);
}
public void setLinkColor(Color color)
{
linkColor = color;
setForeground(linkColor);
}
public Color getLinkColor()
{
return linkColor;
}
public void setHoverColor(Color color)
{
hoverColor = color;
}
public Color getHoverColor()
{
return hoverColor;
}
public void setPressColor(Color color)
{
pressColor = color;
}
public Color getPressColor()
{
return pressColor;
}
public void setText(String text)
{
if(super.isEnabled()){
setEnabledText(text);
}else{
setDisabledText(text);
}
}
public void setEnabledText(String text)
{
if(text != null && text.length() > 0){
text= text.replace("<", "<").replace(">", ">");
super.setText((new StringBuilder()).append("<html><u>").append(text).append("</u></html>").toString());
}else{
super.setText("");
}
}
public void setDisabledText(String text)
{
if(text != null && text.length() > 0)
super.setText(text);
else
super.setText("");
}
public void mouseClicked(MouseEvent e)
{
if(super.isEnabled()){
mouseClickedAction();
}
}
public void mousePressed(MouseEvent e)
{
if(super.isEnabled()){
setForeground(pressColor);
}
}
public void mouseReleased(MouseEvent e)
{
if(super.isEnabled()){
setForeground(hoverColor);
}
}
public void mouseEntered(MouseEvent e)
{
if(super.isEnabled()){
setForeground(hoverColor);
setCursor(Cursor.getPredefinedCursor(12));
}
}
public void mouseExited(MouseEvent e)
{
setForeground(linkColor);
setCursor(Cursor.getPredefinedCursor(0));
}
public void setEnabled(boolean enabled){
setText(super.getText());
super.setEnabled(enabled);
this.enabled = enabled;
}
public void setOcupado(boolean ocupado){
if (this.ocupado == ocupado){
return;
}else{
this.ocupado = ocupado;
}
setText(super.getText());
if (ocupado){
enabled = this.isEnabled();
super.setEnabled(false);
}else{
super.setEnabled(enabled);
}
}
public static final String LINK_ACTION = "LINK_ACTION";
private Color linkColor;
private Color hoverColor;
private Color pressColor;
public boolean ocupado = false;
public boolean enabled = true;
private java.util.List<ActionListener> listeners;
private String actionCommand;
}/*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 2.0/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 2.0 (the 'License'); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an 'AS IS' basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
*
* The Initial Developers of the Original Code are Iago Corbal and Rong Chen.
* Portions created by the Initial Developer are Copyright (C) 2012-2013
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Software distributed under the License is distributed on an 'AS IS' basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* ***** END LICENSE BLOCK *****
*/