/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ /* * HyplerlinkRenderer.java * * Created on 25. August 2004, 10:06 */ package Sirius.navigator.ui.attributes.renderer; import Sirius.navigator.ui.widget.*; import Sirius.server.localserver.attribute.ObjectAttribute; import Sirius.server.middleware.types.*; import org.apache.log4j.Logger; import java.awt.*; import java.awt.event.*; import java.net.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; import javax.swing.table.*; import de.cismet.tools.BrowserLauncher; /** * Ein einfacher Renderer f\u00FCr URLs. * * @author Pascal * @version $Revision$, $Date$ */ public class HyperlinkRenderer implements TableCellRenderer { //~ Instance fields -------------------------------------------------------- private final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(this.getClass()); private final HyperlinkLabel hyperlinkLabel; private final Logger logger; //~ Constructors ----------------------------------------------------------- /** * Creates a new HyperlinkRenderer object. */ public HyperlinkRenderer() { this.logger = Logger.getLogger(this.getClass()); this.hyperlinkLabel = new HyperlinkLabel(); this.hyperlinkLabel.setOpaque(true); this.hyperlinkLabel.setBorder(new EmptyBorder(1, 1, 1, 1)); this.hyperlinkLabel.setHyperlinkListener(new HyperlinkListener() { @Override public void hyperlinkUpdate(final HyperlinkEvent e) { if (log.isDebugEnabled()) { log.debug("hyperlinkUpdate"); // NOI18N } if (e.getEventType().equals(HyperlinkEvent.EventType.ACTIVATED)) { if (logger.isDebugEnabled()) { logger.debug("following link '" + e.getURL() + "'"); // NOI18N } // // Sirius.navigator.resource.PropertyManager.getManager().getAppletContext().showDocument(e.getURL(), // "_blank"); BrowserLauncher.openURL(e.getURL().toString()); } } }); } //~ Methods ---------------------------------------------------------------- @Override public Component getTableCellRendererComponent(final JTable table, final Object value, final boolean isSelected, final boolean hasFocus, final int row, final int column) { this.hyperlinkLabel.setFont(table.getFont()); if (isSelected) { // this.hyperlinkLabel.setForeground(table.getSelectionForeground()); this.hyperlinkLabel.setBackground(table.getSelectionBackground()); } else { // this.hyperlinkLabel.setForeground(table.getForeground()); this.hyperlinkLabel.setBackground(table.getBackground()); } if (value instanceof URL) { this.hyperlinkLabel.setUrl((URL)value); } else { try { this.hyperlinkLabel.setUrl(new URL(value.toString())); } catch (Throwable t) { logger.warn("no valid url: " + value + "(" + value.getClass() + ")"); // NOI18N } } return hyperlinkLabel; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public Component getComponent() { return hyperlinkLabel; } }