package com.jsonde.gui.components;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class JActionLabel extends JLabel implements MouseListener {
private Action action;
public JActionLabel(Action action) {
super();
Object nameObject = action.getValue(Action.NAME);
if (null != nameObject) {
super.setText((String) nameObject);
}
this.action = action;
addMouseListener(this);
}
private final static String HOVER_PRE_HTML = "<html><u><font color=\"blue\">";
public void mouseEntered(MouseEvent e) {
super.setText(HOVER_PRE_HTML + getText());
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
}
public void mouseExited(MouseEvent e) {
super.setText(getText().substring(HOVER_PRE_HTML.length()));
setCursor(Cursor.getDefaultCursor());
}
@Override
public void setText(String text) {
if (getText().startsWith(HOVER_PRE_HTML)) {
super.setText(HOVER_PRE_HTML + text);
} else {
super.setText(text);
}
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
Component component = e.getComponent();
if (component.contains(e.getPoint())) {
ActionEvent event = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, "labelClicked");
action.actionPerformed(event);
}
}
public void mouseClicked(MouseEvent e) {
}
}