diff --git a/.bettercodehub.yml b/.bettercodehub.yml
index efca290b..c5f9ef68 100644
--- a/.bettercodehub.yml
+++ b/.bettercodehub.yml
@@ -1,3 +1,3 @@
-component_depth: 10
+component_depth: 8
languages:
-- java
+ - java
diff --git a/CHANGELOG b/CHANGELOG
index d7db1df6..606163bd 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,9 @@
+2.3.1
+Mar 31, 2019
+
+NEW: use default color scheme font for table editor as well
+FIX: ConcurrentModificationException tackled (table editor)
+
2.3.0
Mar 04, 2019
diff --git a/gradle.properties b/gradle.properties
index 8b985ea6..1c579bf2 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -3,7 +3,7 @@
# https://www.jetbrains.com/intellij-repository/snapshots
name='CSV Plugin'
-pluginVersion=2.3.0
+pluginVersion=2.3.1
javaVersion=1.8
javaTargetVersion=1.8
downloadIntellijSources=false
diff --git a/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/CsvTableEditor.java b/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/CsvTableEditor.java
index 53b0c6ca..0a6e428c 100644
--- a/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/CsvTableEditor.java
+++ b/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/CsvTableEditor.java
@@ -6,6 +6,8 @@
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.command.CommandProcessor;
import com.intellij.openapi.editor.Document;
+import com.intellij.openapi.editor.colors.EditorColorsManager;
+import com.intellij.openapi.editor.colors.EditorFontType;
import com.intellij.openapi.fileEditor.*;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Key;
@@ -27,6 +29,7 @@
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
+import java.awt.*;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.util.Collections;
@@ -295,6 +298,10 @@ public int getRowCount() {
return getDataHandler().getCurrentState().length;
}
+ public Font getFont() {
+ return EditorColorsManager.getInstance().getGlobalScheme().getFont(EditorFontType.PLAIN);
+ }
+
public int getColumnCount() {
Object[][] currentData = getDataHandler().getCurrentState();
return currentData.length > 0 ? currentData[0].length : 0;
diff --git a/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/swing/CsvTableEditorActions.java b/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/swing/CsvTableEditorActions.java
index 671a9ed3..73a39a3e 100644
--- a/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/swing/CsvTableEditorActions.java
+++ b/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/swing/CsvTableEditorActions.java
@@ -14,7 +14,6 @@
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.URI;
-import java.util.Vector;
public class CsvTableEditorActions extends CsvTableEditorUtilBase {
@@ -145,18 +144,6 @@ public void actionPerformed(ActionEvent e) {
}
}
- private void removeColumn(DefaultTableModel tableModel, int column) {
- int prevColumnCount = tableModel.getColumnCount();
-
- Vector rows = tableModel.getDataVector();
- for (Object row : rows) {
- ((Vector) row).remove(column);
- }
-
- tableModel.setColumnCount(prevColumnCount - 1);
- tableModel.fireTableStructureChanged();
- }
-
private final class DeleteColumnAction implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
diff --git a/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/swing/CsvTableEditorSwing.form b/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/swing/CsvTableEditorSwing.form
index 144a04c0..9d3684ca 100644
--- a/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/swing/CsvTableEditorSwing.form
+++ b/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/swing/CsvTableEditorSwing.form
@@ -15,37 +15,16 @@
-
+
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
@@ -53,50 +32,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
@@ -107,7 +47,10 @@
-
+
+
+
+
@@ -116,7 +59,10 @@
-
+
+
+
+
@@ -125,7 +71,10 @@
-
+
+
+
+
@@ -136,7 +85,10 @@
-
+
+
+
+
@@ -144,32 +96,108 @@
-
-
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/swing/CsvTableEditorSwing.java b/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/swing/CsvTableEditorSwing.java
index 321bd71e..114c0175 100644
--- a/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/swing/CsvTableEditorSwing.java
+++ b/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/swing/CsvTableEditorSwing.java
@@ -118,14 +118,17 @@ private void initializedUIComponents() {
tblEditor.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
tblEditor.setShowColumns(true);
+ tblEditor.setFont(getFont());
setTableRowHeight(0);
tblEditor.getColumnModel().addColumnModelListener(tableEditorListener);
- tblEditor.setDefaultRenderer(String.class, new MultiLineCellRenderer(this.tableEditorKeyListener, this));
- tblEditor.setDefaultRenderer(Object.class, new MultiLineCellRenderer(this.tableEditorKeyListener, this));
- tblEditor.setDefaultEditor(String.class, new MultiLineCellRenderer(this.tableEditorKeyListener, this));
- tblEditor.setDefaultEditor(Object.class, new MultiLineCellRenderer(this.tableEditorKeyListener, this));
+ MultiLineCellRenderer cellRenderer = new MultiLineCellRenderer(this.tableEditorKeyListener, this);
+ MultiLineCellRenderer cellEditor = new MultiLineCellRenderer(this.tableEditorKeyListener, this);
+ tblEditor.setDefaultRenderer(String.class, cellRenderer);
+ tblEditor.setDefaultRenderer(Object.class, cellRenderer);
+ tblEditor.setDefaultEditor(String.class, cellEditor);
+ tblEditor.setDefaultEditor(Object.class, cellEditor);
tblEditor.registerKeyboardAction(this.tableEditorActions.undo,
KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_MASK), JComponent.WHEN_FOCUSED);
tblEditor.registerKeyboardAction(this.tableEditorActions.redo,
@@ -201,7 +204,7 @@ public void updateEditorLayout() {
getFileEditorState().setColumnWidths(columnWidths);
}
- float zoomFactor = calcuateZoomFactor();
+ float zoomFactor = calculateZoomFactor();
for (int i = 0; i < currentColumnCount; ++i) {
TableColumn column = this.tblEditor.getColumnModel().getColumn(i);
column.setPreferredWidth(Math.round(columnWidths[i] * zoomFactor));
@@ -212,7 +215,7 @@ public void updateEditorLayout() {
panelInfo.setVisible(getFileEditorState().showInfoPanel());
}
- private float calcuateZoomFactor() {
+ private float calculateZoomFactor() {
float fontHeight = getFontHeight();
return fontHeight / baseFontHeight;
}
@@ -386,7 +389,7 @@ public JComponent getPreferredFocusedComponent() {
public void storeCurrentTableLayout() {
int[] widths = getCurrentColumnsWidths();
- float zoomFactor = calcuateZoomFactor();
+ float zoomFactor = calculateZoomFactor();
for (int i = 0; i < widths.length; i++) {
widths[i] /= zoomFactor;
}
@@ -459,7 +462,7 @@ protected String generateCsv(Object[][] data) {
}
private int getGlobalFontSize() {
- return EditorColorsManager.getInstance().getGlobalScheme().getEditorFontSize();
+ return EditorColorsManager.getInstance().getGlobalScheme().getEditorFontSize();
}
private int getFontHeight() {
diff --git a/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/swing/MultiLineCellRenderer.java b/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/swing/MultiLineCellRenderer.java
index a633da67..0f191dd3 100644
--- a/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/swing/MultiLineCellRenderer.java
+++ b/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/swing/MultiLineCellRenderer.java
@@ -17,7 +17,7 @@
public class MultiLineCellRenderer extends JTextArea implements TableCellRenderer, TableCellEditor {
- private Set cellEditorListenerSet = Collections.synchronizedSet(new HashSet<>());
+ private Set cellEditorListenerSet = new HashSet<>();
private final UserDataHolder userDataHolder;
public MultiLineCellRenderer(CsvTableEditorKeyListener keyListener, UserDataHolder userDataHolderParam) {
@@ -142,11 +142,15 @@ protected void fireCancelCellEditing() {
@Override
public void addCellEditorListener(CellEditorListener cellEditorListener) {
- cellEditorListenerSet.add(cellEditorListener);
+ synchronized (cellEditorListenerSet) {
+ cellEditorListenerSet.add(cellEditorListener);
+ }
}
@Override
public void removeCellEditorListener(CellEditorListener cellEditorListener) {
- cellEditorListenerSet.remove(cellEditorListener);
+ synchronized (cellEditorListenerSet) {
+ cellEditorListenerSet.remove(cellEditorListener);
+ }
}
}
diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml
index bb7f6ecd..b66f16ac 100644
--- a/src/main/resources/META-INF/plugin.xml
+++ b/src/main/resources/META-INF/plugin.xml
@@ -46,9 +46,8 @@
-NEW: Zoom table-editor cells with Ctrl+Mouse Wheel (contribution by @royqh1979)
-FIX: Scratches are now recognised as CSV
-FIX: Several issues resolved by reworking column/row editing
+NEW: use default color scheme font for table editor as well
+FIX: ConcurrentModificationException tackled (table editor)
]]>