package org.docear.plugin.services.recommendations.dialog;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.SystemColor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.HashSet;
import java.util.Set;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.border.BevelBorder;
import org.docear.plugin.services.communications.CommunicationsController;
import org.docear.plugin.services.recommendations.RecommendationEntry;
import org.freeplane.core.util.TextUtils;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;
public class RecommendationEntryComponent extends JPanel {
private static final long serialVersionUID = 1L;
public static final int OPEN_RECOMMENDATION = 1;
public static final int IMPORT_RECOMMENDATION = 2;
private Set<ActionListener> actionListeners = new HashSet<ActionListener>();
public RecommendationEntryComponent(final RecommendationEntry recommendation) {
setLayout(new FormLayout(new ColumnSpec[] {
ColumnSpec.decode("default:grow"),
ColumnSpec.decode("50px"),},
new RowSpec[] {
RowSpec.decode("50px"),}));
final JLabel lblOpenButton = new JLabel(recommendation.getTitle());
// final JTextField lblOpenButton = new JTextField(recommendation.getTitle());
// lblOpenButton.setBorder( null );
// lblOpenButton.setOpaque( false );
// lblOpenButton.setEditable( false );
lblOpenButton.setIcon(new ImageIcon(RecommendationEntryComponent.class.getResource("/icons/document-open-remote_32x32.png")));
lblOpenButton.setToolTipText(TextUtils.getText("recommendation.preview.tooltip"));
lblOpenButton.setBorder(new BevelBorder(BevelBorder.RAISED, SystemColor.control, null, null, null));
lblOpenButton.setMinimumSize(new Dimension(200, 50));
lblOpenButton.setPreferredSize(new Dimension(200, 50));
//javax.swing.plaf.ColorUIResource[r=10,g=36,b=106]
final Color background = lblOpenButton.getBackground();
final Color selectionBackground = new Color(140, 180, 240);
lblOpenButton.addMouseListener(new MouseListener() {
public void mouseReleased(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseExited(MouseEvent e) {
setCursor(Cursor.getDefaultCursor());
setBackground(background);
}
public void mouseEntered(MouseEvent e) {
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
setBackground(selectionBackground);
}
public void mouseClicked(MouseEvent e) {
if(e.getButton() == MouseEvent.BUTTON1) {
fireActionEvent(new ActionEvent(lblOpenButton, RecommendationEntryComponent.OPEN_RECOMMENDATION, "OPEN_RECOMMENDATION"));
e.consume();
}
}
});
add(lblOpenButton, "1, 1");
JLabel lblImportButton = new JLabel("");
lblImportButton.setToolTipText(TextUtils.getText("recommendation.import.tooltip"));
lblImportButton.setHorizontalAlignment(SwingConstants.CENTER);
lblImportButton.setIcon(new ImageIcon(RecommendationEntryComponent.class.getResource("/icons/document-import_32x32.png")));
lblImportButton.setBorder(new BevelBorder(BevelBorder.RAISED, SystemColor.control, null, null, null));
lblImportButton.setMinimumSize(new Dimension(50, 50));
lblImportButton.setPreferredSize(new Dimension(50, 50));
MouseListener downloadMouseListener = new MouseListener() {
public void mouseReleased(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseExited(MouseEvent e) {
setCursor(Cursor.getDefaultCursor());
setBackground(background);
}
public void mouseEntered(MouseEvent e) {
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
setBackground(selectionBackground);
}
public void mouseClicked(MouseEvent e) {
if(e.getButton() == MouseEvent.BUTTON1) {
fireActionEvent(new ActionEvent(recommendation, RecommendationEntryComponent.IMPORT_RECOMMENDATION, "IMPORT_RECOMMENDATION"));
e.consume();
}
}
};
if("ftp".equals(recommendation.getLink().getProtocol().toLowerCase())) {
if(!CommunicationsController.useProxyServer()) {
lblImportButton.addMouseListener(downloadMouseListener);
}
else {
lblImportButton.setEnabled(false);
}
}
else {
lblImportButton.addMouseListener(downloadMouseListener);
}
add(lblImportButton, "2, 1");
}
public void addActionListener(ActionListener actionListener) {
actionListeners.add(actionListener);
}
private void fireActionEvent(ActionEvent actionEvent) {
for(ActionListener listener : actionListeners ) {
listener.actionPerformed(actionEvent);
}
}
}