From 7975e49b2363ff88182e930da94b057ec0cb228f Mon Sep 17 00:00:00 2001 From: Georgy Litvinov Date: Mon, 20 Apr 2020 12:55:54 +0200 Subject: [PATCH] Wrap text in table --- .../libreoffice/metadata/views/EditorGUI.java | 6 +-- .../metadata/views/MetadataCellEditor.java | 50 +++++++++++++++++++ .../metadata/views/MetadataTable.java | 20 ++++++++ .../metadata/views/MetadataTableRenderer.java | 24 +++++++++ 4 files changed, 97 insertions(+), 3 deletions(-) create mode 100644 source/pro/litvinovg/libreoffice/metadata/views/MetadataCellEditor.java create mode 100644 source/pro/litvinovg/libreoffice/metadata/views/MetadataTable.java create mode 100644 source/pro/litvinovg/libreoffice/metadata/views/MetadataTableRenderer.java 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; + } +}