diff --git a/source/pro/litvinovg/libreoffice/metadata/views/EditorGUI.java b/source/pro/litvinovg/libreoffice/metadata/views/EditorGUI.java index 723b6f7..7b00dfb 100644 --- a/source/pro/litvinovg/libreoffice/metadata/views/EditorGUI.java +++ b/source/pro/litvinovg/libreoffice/metadata/views/EditorGUI.java @@ -191,8 +191,8 @@ public class EditorGUI extends JFrame { createDocPropsModel(); createCustomDocPropsModel(); - tableDocStandard = new JTable(); - tableDocCustom = new JTable(); + tableDocStandard = new MetadataTable(); + tableDocCustom = new MetadataTable(); configureTableDocStandard(); configureTableDocCustom(); @@ -218,7 +218,7 @@ public class EditorGUI extends JFrame { private void addMetadataTab(OutlineElement element) { JPanel panelOutline = new JPanel(); - JTable tableOutline = new JTable(); + JTable tableOutline = new MetadataTable(); MetadataTableModel outlineTableModel = createOutlineTableModel(element); tableModels.add(outlineTableModel); configureTableOutline(tableOutline, outlineTableModel); diff --git a/source/pro/litvinovg/libreoffice/metadata/views/MetadataCellEditor.java b/source/pro/litvinovg/libreoffice/metadata/views/MetadataCellEditor.java new file mode 100644 index 0000000..bc1fe6a --- /dev/null +++ b/source/pro/litvinovg/libreoffice/metadata/views/MetadataCellEditor.java @@ -0,0 +1,50 @@ +package pro.litvinovg.libreoffice.metadata.views; + +import java.awt.Component; +import java.awt.event.ComponentAdapter; +import java.awt.event.ComponentEvent; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; + +import javax.swing.AbstractCellEditor; +import javax.swing.JTable; +import javax.swing.JTextArea; +import javax.swing.table.TableCellEditor; + +public class MetadataCellEditor extends AbstractCellEditor implements TableCellEditor { + JTextArea comp = new JTextArea(); + JTable table; + int row; + + public MetadataCellEditor() { + comp.setLineWrap(true); + comp.setWrapStyleWord(true); + comp.addComponentListener(new ComponentAdapter() { + public void componentResized(ComponentEvent e) { + super.componentResized(e); + table.setRowHeight(row, (int) (comp.getPreferredSize().getHeight())); + } + }); + comp.addKeyListener(new KeyAdapter() { + public void keyTyped(KeyEvent e) { + super.keyTyped(e); + table.setRowHeight(row, (int) (comp.getPreferredSize().getHeight())); + } + }); + } + + public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { + this.table = table; + this.row = row; + + comp.setText((String) value); + comp.setFont(table.getFont()); + + return comp; + } + + public Object getCellEditorValue() { + return comp.getText(); + } + +} diff --git a/source/pro/litvinovg/libreoffice/metadata/views/MetadataTable.java b/source/pro/litvinovg/libreoffice/metadata/views/MetadataTable.java new file mode 100644 index 0000000..63ea8ad --- /dev/null +++ b/source/pro/litvinovg/libreoffice/metadata/views/MetadataTable.java @@ -0,0 +1,20 @@ +package pro.litvinovg.libreoffice.metadata.views; + +import javax.swing.DefaultCellEditor; +import javax.swing.JTable; +import javax.swing.JTextField; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; + +public class MetadataTable extends JTable { + + public TableCellRenderer getCellRenderer(int row, int col) { + return new MetadataTableRenderer(); + } + + public TableCellEditor getCellEditor(int row, int col) { + return new MetadataCellEditor(); + } + +} diff --git a/source/pro/litvinovg/libreoffice/metadata/views/MetadataTableRenderer.java b/source/pro/litvinovg/libreoffice/metadata/views/MetadataTableRenderer.java new file mode 100644 index 0000000..8fe3ecc --- /dev/null +++ b/source/pro/litvinovg/libreoffice/metadata/views/MetadataTableRenderer.java @@ -0,0 +1,24 @@ +package pro.litvinovg.libreoffice.metadata.views; + +import java.awt.Component; + +import javax.swing.JTable; +import javax.swing.JTextArea; +import javax.swing.table.TableCellRenderer; + +public class MetadataTableRenderer extends JTextArea implements TableCellRenderer{ + private static final long serialVersionUID = 1L; + + public MetadataTableRenderer() { + setOpaque(true); + setLineWrap(true); + setWrapStyleWord(true); + } + + public Component getTableCellRendererComponent(JTable table,Object value, + boolean isSelected, boolean hasFocus, int row,int column) { + + this.setText(value == null ? "" : value.toString()); + return this; + } +}