1 | package org.greenstone.gatherer.gui;
|
---|
2 |
|
---|
3 |
|
---|
4 | import java.awt.*;
|
---|
5 | import java.io.*;
|
---|
6 | import javax.swing.*;
|
---|
7 | import javax.swing.table.DefaultTableCellRenderer;
|
---|
8 | import org.greenstone.gatherer.Configuration;
|
---|
9 | import org.greenstone.gatherer.metadata.MetadataElement;
|
---|
10 | import org.greenstone.gatherer.metadata.MetadataTools;
|
---|
11 | import org.greenstone.gatherer.metadata.MetadataValueTableModel;
|
---|
12 | import org.greenstone.gatherer.util.Utility;
|
---|
13 |
|
---|
14 |
|
---|
15 | public class MetadataValueTableCellRenderer
|
---|
16 | extends DefaultTableCellRenderer
|
---|
17 | {
|
---|
18 | private MetadataValueTableModel metadata_value_table_model = null;
|
---|
19 |
|
---|
20 |
|
---|
21 | public MetadataValueTableCellRenderer(MetadataValueTableModel metadata_value_table_model)
|
---|
22 | {
|
---|
23 | super();
|
---|
24 | this.metadata_value_table_model = metadata_value_table_model;
|
---|
25 | }
|
---|
26 |
|
---|
27 |
|
---|
28 | /** Returns the default table cell renderer.
|
---|
29 | * @param table The <strong>JTable</strong>.
|
---|
30 | * @param value The value to assign to the cell at [row, column] as an <strong>Object</strong>.
|
---|
31 | * @param isSelected <i>true</i> if cell is selected.
|
---|
32 | * @param hasFocus <i>true</i> if cell has focus.
|
---|
33 | * @param row The row of the cell to render as an <i>int</i>.
|
---|
34 | * @param column The column of the cell to render as an <i>int</i>.
|
---|
35 | * @return The default table cell renderer <strong>Component</strong>.
|
---|
36 | */
|
---|
37 | public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
|
---|
38 | {
|
---|
39 | JLabel renderer = null;
|
---|
40 |
|
---|
41 | // First column: inherited metadata icon
|
---|
42 | if (column == 0 && value != null) {
|
---|
43 | renderer = new JLabel(Utility.getImage("upfolder.gif"));
|
---|
44 | }
|
---|
45 | else {
|
---|
46 | renderer = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
|
---|
47 | }
|
---|
48 |
|
---|
49 | // Set up the component
|
---|
50 | renderer.setOpaque(true);
|
---|
51 |
|
---|
52 | // Foreground
|
---|
53 | if (metadata_value_table_model.isCommon(row)) {
|
---|
54 | renderer.setForeground(Color.black);
|
---|
55 | }
|
---|
56 | else {
|
---|
57 | renderer.setForeground(Color.gray);
|
---|
58 | }
|
---|
59 |
|
---|
60 | // Background
|
---|
61 | if (isSelected) {
|
---|
62 | renderer.setBackground(Configuration.getColor("coloring.workspace_heading_background", true));
|
---|
63 | }
|
---|
64 | else {
|
---|
65 | if (column <= 1) {
|
---|
66 | renderer.setBackground(Configuration.getColor("coloring.collection_heading_background", true));
|
---|
67 | }
|
---|
68 | else {
|
---|
69 | renderer.setBackground(Configuration.getColor("coloring.collection_tree_background", true));
|
---|
70 | }
|
---|
71 | }
|
---|
72 |
|
---|
73 | // Finally the 3rd column of cells never paint focus.
|
---|
74 | if (column == 2) {
|
---|
75 | renderer.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
|
---|
76 | }
|
---|
77 |
|
---|
78 | // We set a tooltip over the element column containing the definition of the element
|
---|
79 | if (value instanceof MetadataElement) {
|
---|
80 | String interface_language_code = Configuration.getLanguage();
|
---|
81 | String metadata_element_definition = MetadataTools.getMetadataElementAttribute((MetadataElement) value, "definition", interface_language_code, "en");
|
---|
82 | if (metadata_element_definition != null) {
|
---|
83 | renderer.setToolTipText(Utility.formatHTMLWidth(metadata_element_definition, 60));
|
---|
84 | }
|
---|
85 | }
|
---|
86 |
|
---|
87 | return renderer;
|
---|
88 | }
|
---|
89 | }
|
---|