diff --git a/CHANGELOG.md b/CHANGELOG.md
index b18c1f78..64725b18 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,7 +10,18 @@
### Fixed
-## [4.0.1] - Dec 08, 2024
+## [4.0.2] - Dec 29, 2024
+
+### Added
+
+- Localization support for actions
+
+### Fixed
+
+- Usage of correct resource bundle
+- NotNull parameter 'parent' of getFirstChildOfType #886
+
+## 4.0.1 - Dec 08, 2024
### Added
diff --git a/gradle.properties b/gradle.properties
index cbc2835f..442acf8f 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -4,7 +4,7 @@
pluginName=CSV Editor
pluginId=net.seesharpsoft.intellij.plugins.csv
-pluginVersion=4.0.1
+pluginVersion=4.0.2
pluginSinceBuild=242
diff --git a/src/main/java/net/seesharpsoft/intellij/plugins/csv/CsvPlugin.java b/src/main/java/net/seesharpsoft/intellij/plugins/csv/CsvPlugin.java
index ed27a98c..f4bcb690 100644
--- a/src/main/java/net/seesharpsoft/intellij/plugins/csv/CsvPlugin.java
+++ b/src/main/java/net/seesharpsoft/intellij/plugins/csv/CsvPlugin.java
@@ -1,5 +1,6 @@
package net.seesharpsoft.intellij.plugins.csv;
+import com.intellij.DynamicBundle;
import com.intellij.ide.BrowserUtil;
import com.intellij.ide.actions.ShowSettingsUtilImpl;
import com.intellij.ide.plugins.IdeaPluginDescriptor;
@@ -114,7 +115,7 @@ public void run(@NotNull ProgressIndicator progressIndicator) {
public static ResourceBundle getResourceBundle() {
if (_resourceBundle == null) {
- _resourceBundle = ResourceBundle.getBundle("i18n/CSVEditorResources");
+ _resourceBundle = DynamicBundle.getPluginBundle(getPluginDescriptor());
}
return _resourceBundle;
}
diff --git a/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/CsvTableModelBase.java b/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/CsvTableModelBase.java
index 7e7c3de6..76bd38c7 100644
--- a/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/CsvTableModelBase.java
+++ b/src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/CsvTableModelBase.java
@@ -92,7 +92,8 @@ private void resetCachedValues() {
}
private void resetPointer() {
- myPointedRecord = PsiHelper.getFirstChildOfType(getPsiFile(), CsvRecord.class);
+ PsiFile psiFile = getPsiFile();
+ myPointedRecord = psiFile == null ? null : PsiHelper.getFirstChildOfType(psiFile, CsvRecord.class);
myPointedRow = 0;
}
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 08f17a4b..13395840 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
@@ -26,7 +26,7 @@