JTextPaneTableCellRenderer.java
01 package gate.gui.creole.manager;
02 
03 import gate.gui.MainFrame;
04 
05 import java.awt.Component;
06 import java.awt.Font;
07 
08 import javax.swing.AbstractCellEditor;
09 import javax.swing.JTable;
10 import javax.swing.JTextPane;
11 import javax.swing.UIManager;
12 import javax.swing.event.HyperlinkEvent;
13 import javax.swing.event.HyperlinkListener;
14 import javax.swing.table.TableCellEditor;
15 import javax.swing.text.html.HTMLDocument;
16 
17 public class JTextPaneTableCellRenderer extends AbstractCellEditor implements
18                                                                     TableCellEditor {
19 
20   private static final long serialVersionUID = 3745411623553392990L;
21 
22   private JTextPane textPane = new JTextPane();
23 
24   private Object value;
25 
26   public JTextPaneTableCellRenderer() {
27     textPane.setContentType("text/html");
28     textPane.setEditable(false);
29     textPane.setOpaque(true);
30     textPane.setBorder(null);
31 
32     textPane.setForeground(UIManager.getColor("Table.selectionForeground"));
33     textPane.setBackground(UIManager.getColor("Table.selectionBackground"));
34 
35     Font font = UIManager.getFont("Label.font");
36     String bodyRule =
37         "body { font-family: " + font.getFamily() "; " "font-size: "
38             + font.getSize() "pt; "
39             (font.isBold() "font-weight: bold;" """}";
40     ((HTMLDocument)textPane.getDocument()).getStyleSheet().addRule(bodyRule);
41 
42     textPane.addHyperlinkListener(new HyperlinkListener() {
43 
44       @Override
45       public void hyperlinkUpdate(HyperlinkEvent e) {
46         if (e.getEventType().equals(HyperlinkEvent.EventType.ACTIVATED))
47             MainFrame.getInstance().showHelpFrame(e.getURL().toString()"CREOLE Plugin Manager");
48       }
49     });
50   }
51 
52   @Override
53   public Object getCellEditorValue() {
54     return value;
55   }
56 
57   @Override
58   public Component getTableCellEditorComponent(JTable table, Object value,
59       boolean isSelected, int row, int column) {
60 
61     textPane.setText((String)value);
62 
63     this.value = value;
64 
65     return textPane;
66   }
67 
68 }