From 73e4298f4b1873cfb11664110baa8ebdae2c6f32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20Ha=C3=9Flinger?= Date: Sun, 14 Mar 2021 14:28:00 +0100 Subject: [PATCH] Optimize structure and add documentation --- .../easyi18n/TranslatorToolWindowFactory.java | 21 ++- .../java/de/marhali/easyi18n/io/Filer.java | 31 ----- .../io/{translator => }/TranslatorIO.java | 4 +- .../JsonTranslatorIO.java | 7 +- .../PropertiesTranslatorIO.java | 7 +- .../easyi18n/model/DataSynchronizer.java | 2 - .../{data => model}/LocalizedNode.java | 2 +- .../{data => model}/SettingsState.java | 3 +- .../{data => model}/Translations.java | 9 +- .../model/table/TableModelTranslator.java | 4 +- .../model/tree/TreeModelTranslator.java | 6 +- .../easyi18n/{data => service}/DataStore.java | 43 +++++- .../{ => service}/SettingsService.java | 4 +- .../easyi18n/{ => service}/WindowManager.java | 6 +- .../marhali/easyi18n/ui/ActionsToolbar.form | 18 --- .../marhali/easyi18n/ui/ActionsToolbar.java | 6 - .../marhali/easyi18n/ui/action/AddAction.java | 6 +- .../easyi18n/ui/action/ReloadAction.java | 14 +- .../easyi18n/ui/action/SearchAction.java | 4 + .../easyi18n/ui/action/SettingsAction.java | 4 + .../CollapseTreeViewAction.java | 2 +- .../{ => treeview}/ExpandTreeViewAction.java | 2 +- .../marhali/easyi18n/ui/dialog/AddDialog.java | 4 +- .../easyi18n/ui/dialog/EditDialog.java | 6 +- .../easyi18n/ui/dialog/SettingsDialog.java | 11 +- .../marhali/easyi18n/ui/panel/TestPanel.form | 130 ------------------ .../marhali/easyi18n/ui/panel/TestPanel.java | 12 -- .../ui/{panel => renderer}/TableRenderer.java | 2 +- .../ui/{panel => renderer}/TreeRenderer.java | 7 +- .../easyi18n/ui/table/CustomTableModel.java | 65 --------- .../ui/{panel => tabs}/TableView.form | 2 +- .../ui/{panel => tabs}/TableView.java | 17 ++- .../easyi18n/ui/{panel => tabs}/TreeView.form | 2 +- .../easyi18n/ui/{panel => tabs}/TreeView.java | 19 ++- .../java/de/marhali/easyi18n/util/IOUtil.java | 6 +- .../de/marhali/easyi18n/util/MapUtil.java | 7 +- .../easyi18n/util/TranslationsUtil.java | 14 ++ .../de/marhali/easyi18n/util/TreeUtil.java | 12 +- .../java/de/marhali/easyi18n/util/UiUtil.java | 5 + src/main/resources/META-INF/plugin.xml | 2 +- 40 files changed, 178 insertions(+), 350 deletions(-) delete mode 100644 src/main/java/de/marhali/easyi18n/io/Filer.java rename src/main/java/de/marhali/easyi18n/io/{translator => }/TranslatorIO.java (92%) rename src/main/java/de/marhali/easyi18n/io/{translator => implementation}/JsonTranslatorIO.java (96%) rename src/main/java/de/marhali/easyi18n/io/{translator => implementation}/PropertiesTranslatorIO.java (96%) rename src/main/java/de/marhali/easyi18n/{data => model}/LocalizedNode.java (98%) rename src/main/java/de/marhali/easyi18n/{data => model}/SettingsState.java (88%) rename src/main/java/de/marhali/easyi18n/{data => model}/Translations.java (95%) rename src/main/java/de/marhali/easyi18n/{data => service}/DataStore.java (73%) rename src/main/java/de/marhali/easyi18n/{ => service}/SettingsService.java (92%) rename src/main/java/de/marhali/easyi18n/{ => service}/WindowManager.java (86%) delete mode 100644 src/main/java/de/marhali/easyi18n/ui/ActionsToolbar.form delete mode 100644 src/main/java/de/marhali/easyi18n/ui/ActionsToolbar.java rename src/main/java/de/marhali/easyi18n/ui/action/{ => treeview}/CollapseTreeViewAction.java (93%) rename src/main/java/de/marhali/easyi18n/ui/action/{ => treeview}/ExpandTreeViewAction.java (93%) delete mode 100644 src/main/java/de/marhali/easyi18n/ui/panel/TestPanel.form delete mode 100644 src/main/java/de/marhali/easyi18n/ui/panel/TestPanel.java rename src/main/java/de/marhali/easyi18n/ui/{panel => renderer}/TableRenderer.java (96%) rename src/main/java/de/marhali/easyi18n/ui/{panel => renderer}/TreeRenderer.java (82%) delete mode 100644 src/main/java/de/marhali/easyi18n/ui/table/CustomTableModel.java rename src/main/java/de/marhali/easyi18n/ui/{panel => tabs}/TableView.form (95%) rename src/main/java/de/marhali/easyi18n/ui/{panel => tabs}/TableView.java (89%) rename src/main/java/de/marhali/easyi18n/ui/{panel => tabs}/TreeView.form (95%) rename src/main/java/de/marhali/easyi18n/ui/{panel => tabs}/TreeView.java (90%) diff --git a/src/main/java/de/marhali/easyi18n/TranslatorToolWindowFactory.java b/src/main/java/de/marhali/easyi18n/TranslatorToolWindowFactory.java index b0c8ddb..ce6eec8 100644 --- a/src/main/java/de/marhali/easyi18n/TranslatorToolWindowFactory.java +++ b/src/main/java/de/marhali/easyi18n/TranslatorToolWindowFactory.java @@ -7,18 +7,21 @@ import com.intellij.openapi.wm.ToolWindowFactory; import com.intellij.ui.content.Content; import com.intellij.ui.content.ContentFactory; -import de.marhali.easyi18n.data.DataStore; +import de.marhali.easyi18n.service.DataStore; +import de.marhali.easyi18n.service.WindowManager; import de.marhali.easyi18n.ui.action.*; -import de.marhali.easyi18n.ui.panel.TableView; -import de.marhali.easyi18n.ui.panel.TreeView; +import de.marhali.easyi18n.ui.tabs.TableView; +import de.marhali.easyi18n.ui.tabs.TreeView; import org.jetbrains.annotations.NotNull; -import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; +/** + * Tool window factory which will represent the entire ui for this plugin. + * @author marhali + */ public class TranslatorToolWindowFactory implements ToolWindowFactory { @Override @@ -51,10 +54,6 @@ public class TranslatorToolWindowFactory implements ToolWindowFactory { store.addSynchronizer(treeView); store.addSynchronizer(tableView); - try { - store.reloadFromDisk(); - } catch (IOException e) { - e.printStackTrace(); - } + store.reloadFromDisk(); } -} +} \ No newline at end of file diff --git a/src/main/java/de/marhali/easyi18n/io/Filer.java b/src/main/java/de/marhali/easyi18n/io/Filer.java deleted file mode 100644 index 31c2518..0000000 --- a/src/main/java/de/marhali/easyi18n/io/Filer.java +++ /dev/null @@ -1,31 +0,0 @@ -package de.marhali.easyi18n.io; - -import com.intellij.openapi.project.Project; -import com.intellij.openapi.vfs.LocalFileSystem; -import com.intellij.openapi.vfs.VirtualFile; - -import java.io.File; - -/** - * Singleton service for file io operations. - * @author marhali - */ -public class Filer { - - private static Filer INSTANCE; - - private final Project project; - - public static Filer getInstance(Project project) { - return INSTANCE == null ? INSTANCE = new Filer(project) : INSTANCE; - } - - private Filer(Project project) { - this.project = project; - } - - public VirtualFile getFile() { - VirtualFile vfs = LocalFileSystem.getInstance().findFileByIoFile(new File(project.getBasePath() + "/src/lang/de.json")); - return vfs; - } -} \ No newline at end of file diff --git a/src/main/java/de/marhali/easyi18n/io/translator/TranslatorIO.java b/src/main/java/de/marhali/easyi18n/io/TranslatorIO.java similarity index 92% rename from src/main/java/de/marhali/easyi18n/io/translator/TranslatorIO.java rename to src/main/java/de/marhali/easyi18n/io/TranslatorIO.java index 586e172..1b99550 100644 --- a/src/main/java/de/marhali/easyi18n/io/translator/TranslatorIO.java +++ b/src/main/java/de/marhali/easyi18n/io/TranslatorIO.java @@ -1,6 +1,6 @@ -package de.marhali.easyi18n.io.translator; +package de.marhali.easyi18n.io; -import de.marhali.easyi18n.data.Translations; +import de.marhali.easyi18n.model.Translations; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/de/marhali/easyi18n/io/translator/JsonTranslatorIO.java b/src/main/java/de/marhali/easyi18n/io/implementation/JsonTranslatorIO.java similarity index 96% rename from src/main/java/de/marhali/easyi18n/io/translator/JsonTranslatorIO.java rename to src/main/java/de/marhali/easyi18n/io/implementation/JsonTranslatorIO.java index a423204..d5edaed 100644 --- a/src/main/java/de/marhali/easyi18n/io/translator/JsonTranslatorIO.java +++ b/src/main/java/de/marhali/easyi18n/io/implementation/JsonTranslatorIO.java @@ -1,12 +1,13 @@ -package de.marhali.easyi18n.io.translator; +package de.marhali.easyi18n.io.implementation; import com.google.gson.*; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; -import de.marhali.easyi18n.data.LocalizedNode; -import de.marhali.easyi18n.data.Translations; +import de.marhali.easyi18n.io.TranslatorIO; +import de.marhali.easyi18n.model.LocalizedNode; +import de.marhali.easyi18n.model.Translations; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/de/marhali/easyi18n/io/translator/PropertiesTranslatorIO.java b/src/main/java/de/marhali/easyi18n/io/implementation/PropertiesTranslatorIO.java similarity index 96% rename from src/main/java/de/marhali/easyi18n/io/translator/PropertiesTranslatorIO.java rename to src/main/java/de/marhali/easyi18n/io/implementation/PropertiesTranslatorIO.java index c03cb40..5feeafe 100644 --- a/src/main/java/de/marhali/easyi18n/io/translator/PropertiesTranslatorIO.java +++ b/src/main/java/de/marhali/easyi18n/io/implementation/PropertiesTranslatorIO.java @@ -1,11 +1,12 @@ -package de.marhali.easyi18n.io.translator; +package de.marhali.easyi18n.io.implementation; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; -import de.marhali.easyi18n.data.LocalizedNode; -import de.marhali.easyi18n.data.Translations; +import de.marhali.easyi18n.io.TranslatorIO; +import de.marhali.easyi18n.model.LocalizedNode; +import de.marhali.easyi18n.model.Translations; import de.marhali.easyi18n.util.TranslationsUtil; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/de/marhali/easyi18n/model/DataSynchronizer.java b/src/main/java/de/marhali/easyi18n/model/DataSynchronizer.java index aab858d..fc25fe4 100644 --- a/src/main/java/de/marhali/easyi18n/model/DataSynchronizer.java +++ b/src/main/java/de/marhali/easyi18n/model/DataSynchronizer.java @@ -1,7 +1,5 @@ package de.marhali.easyi18n.model; -import de.marhali.easyi18n.data.Translations; - import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; diff --git a/src/main/java/de/marhali/easyi18n/data/LocalizedNode.java b/src/main/java/de/marhali/easyi18n/model/LocalizedNode.java similarity index 98% rename from src/main/java/de/marhali/easyi18n/data/LocalizedNode.java rename to src/main/java/de/marhali/easyi18n/model/LocalizedNode.java index 874b05f..3c7eb2b 100644 --- a/src/main/java/de/marhali/easyi18n/data/LocalizedNode.java +++ b/src/main/java/de/marhali/easyi18n/model/LocalizedNode.java @@ -1,4 +1,4 @@ -package de.marhali.easyi18n.data; +package de.marhali.easyi18n.model; import de.marhali.easyi18n.util.MapUtil; diff --git a/src/main/java/de/marhali/easyi18n/data/SettingsState.java b/src/main/java/de/marhali/easyi18n/model/SettingsState.java similarity index 88% rename from src/main/java/de/marhali/easyi18n/data/SettingsState.java rename to src/main/java/de/marhali/easyi18n/model/SettingsState.java index f206bbe..6ece3b0 100644 --- a/src/main/java/de/marhali/easyi18n/data/SettingsState.java +++ b/src/main/java/de/marhali/easyi18n/model/SettingsState.java @@ -1,9 +1,10 @@ -package de.marhali.easyi18n.data; +package de.marhali.easyi18n.model; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** + * Represents the persistent settings which can be configured. * @author marhali */ public class SettingsState { diff --git a/src/main/java/de/marhali/easyi18n/data/Translations.java b/src/main/java/de/marhali/easyi18n/model/Translations.java similarity index 95% rename from src/main/java/de/marhali/easyi18n/data/Translations.java rename to src/main/java/de/marhali/easyi18n/model/Translations.java index d034866..0d84dd5 100644 --- a/src/main/java/de/marhali/easyi18n/data/Translations.java +++ b/src/main/java/de/marhali/easyi18n/model/Translations.java @@ -1,4 +1,4 @@ -package de.marhali.easyi18n.data; +package de.marhali.easyi18n.model; import de.marhali.easyi18n.util.TranslationsUtil; @@ -14,8 +14,11 @@ import java.util.List; */ public class Translations { - private @NotNull List locales; - private @NotNull LocalizedNode nodes; + @NotNull + private final List locales; + + @NotNull + private final LocalizedNode nodes; /** * Constructs a new translation state instance. diff --git a/src/main/java/de/marhali/easyi18n/model/table/TableModelTranslator.java b/src/main/java/de/marhali/easyi18n/model/table/TableModelTranslator.java index 27265d0..d5011e9 100644 --- a/src/main/java/de/marhali/easyi18n/model/table/TableModelTranslator.java +++ b/src/main/java/de/marhali/easyi18n/model/table/TableModelTranslator.java @@ -1,9 +1,9 @@ package de.marhali.easyi18n.model.table; -import de.marhali.easyi18n.data.LocalizedNode; +import de.marhali.easyi18n.model.LocalizedNode; import de.marhali.easyi18n.model.KeyedTranslation; import de.marhali.easyi18n.model.TranslationUpdate; -import de.marhali.easyi18n.data.Translations; +import de.marhali.easyi18n.model.Translations; import org.jetbrains.annotations.Nls; diff --git a/src/main/java/de/marhali/easyi18n/model/tree/TreeModelTranslator.java b/src/main/java/de/marhali/easyi18n/model/tree/TreeModelTranslator.java index 067408a..dc87a52 100644 --- a/src/main/java/de/marhali/easyi18n/model/tree/TreeModelTranslator.java +++ b/src/main/java/de/marhali/easyi18n/model/tree/TreeModelTranslator.java @@ -4,9 +4,9 @@ import com.intellij.ide.projectView.PresentationData; import com.intellij.openapi.project.Project; import com.intellij.ui.JBColor; -import de.marhali.easyi18n.SettingsService; -import de.marhali.easyi18n.data.LocalizedNode; -import de.marhali.easyi18n.data.Translations; +import de.marhali.easyi18n.service.SettingsService; +import de.marhali.easyi18n.model.LocalizedNode; +import de.marhali.easyi18n.model.Translations; import de.marhali.easyi18n.util.TranslationsUtil; import de.marhali.easyi18n.util.UiUtil; diff --git a/src/main/java/de/marhali/easyi18n/data/DataStore.java b/src/main/java/de/marhali/easyi18n/service/DataStore.java similarity index 73% rename from src/main/java/de/marhali/easyi18n/data/DataStore.java rename to src/main/java/de/marhali/easyi18n/service/DataStore.java index 50f5eba..ecdf86f 100644 --- a/src/main/java/de/marhali/easyi18n/data/DataStore.java +++ b/src/main/java/de/marhali/easyi18n/service/DataStore.java @@ -1,18 +1,20 @@ -package de.marhali.easyi18n.data; +package de.marhali.easyi18n.service; import com.intellij.openapi.project.Project; -import de.marhali.easyi18n.SettingsService; -import de.marhali.easyi18n.io.translator.TranslatorIO; +import de.marhali.easyi18n.model.LocalizedNode; +import de.marhali.easyi18n.model.Translations; +import de.marhali.easyi18n.io.TranslatorIO; import de.marhali.easyi18n.model.DataSynchronizer; import de.marhali.easyi18n.model.KeyedTranslation; import de.marhali.easyi18n.model.TranslationDelete; import de.marhali.easyi18n.model.TranslationUpdate; import de.marhali.easyi18n.util.IOUtil; import de.marhali.easyi18n.util.TranslationsUtil; -import org.jetbrains.annotations.NotNull; -import java.io.IOException; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; @@ -40,11 +42,18 @@ public class DataStore { this.synchronizer = new ArrayList<>(); } + /** + * Registers a new synchronizer which will receive {@link #translations} updates. + * @param synchronizer Synchronizer. See {@link DataSynchronizer} + */ public void addSynchronizer(DataSynchronizer synchronizer) { this.synchronizer.add(synchronizer); } - public void reloadFromDisk() throws IOException { + /** + * Loads all translations from disk and overrides current {@link #translations} state. + */ + public void reloadFromDisk() { String localesPath = SettingsService.getInstance(project).getState().getLocalesPath(); if(localesPath == null || localesPath.isEmpty()) { @@ -60,11 +69,20 @@ public class DataStore { // Propagate changes synchronizer.forEach(synchronizer -> synchronizer.synchronize(translations, searchQuery)); + + } else { + // If state cannot be loaded from disk, show empty instance + this.translations = new Translations(new ArrayList<>(), + new LocalizedNode(LocalizedNode.ROOT_KEY, new ArrayList<>())); } }); } } + /** + * Saves the current translation state to disk. See {@link TranslatorIO#save(Translations, String, Consumer)} + * @param callback Complete callback. Indicates if operation was successful(true) or not + */ public void saveToDisk(@NotNull Consumer callback) { String localesPath = SettingsService.getInstance(project).getState().getLocalesPath(); @@ -76,11 +94,19 @@ public class DataStore { io.save(translations, localesPath, callback); } - public void searchBeyKey(String fullPath) { + /** + * Propagates provided search string to all synchronizer to display only relevant keys + * @param fullPath Full i18n key (e.g. user.username.title). Can be null to display all keys + */ + public void searchBeyKey(@Nullable String fullPath) { // Use synchronizer to propagate search instance to all views synchronizer.forEach(synchronizer -> synchronizer.synchronize(translations, this.searchQuery = fullPath)); } + /** + * Processes the provided update. Updates translation instance and propagates changes. See {@link DataSynchronizer} + * @param update The update to process. For more information see {@link TranslationUpdate} + */ public void processUpdate(TranslationUpdate update) { if(update.isDeletion() || update.isKeyChange()) { // Delete origin i18n key String originKey = update.getOrigin().getKey(); @@ -120,6 +146,9 @@ public class DataStore { }); } + /** + * @return Current translation state + */ public Translations getTranslations() { return translations; } diff --git a/src/main/java/de/marhali/easyi18n/SettingsService.java b/src/main/java/de/marhali/easyi18n/service/SettingsService.java similarity index 92% rename from src/main/java/de/marhali/easyi18n/SettingsService.java rename to src/main/java/de/marhali/easyi18n/service/SettingsService.java index d8bd269..e2e8f3f 100644 --- a/src/main/java/de/marhali/easyi18n/SettingsService.java +++ b/src/main/java/de/marhali/easyi18n/service/SettingsService.java @@ -1,11 +1,11 @@ -package de.marhali.easyi18n; +package de.marhali.easyi18n.service; import com.intellij.openapi.components.PersistentStateComponent; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.components.State; import com.intellij.openapi.project.Project; -import de.marhali.easyi18n.data.SettingsState; +import de.marhali.easyi18n.model.SettingsState; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/de/marhali/easyi18n/WindowManager.java b/src/main/java/de/marhali/easyi18n/service/WindowManager.java similarity index 86% rename from src/main/java/de/marhali/easyi18n/WindowManager.java rename to src/main/java/de/marhali/easyi18n/service/WindowManager.java index c6dfb32..cf4d632 100644 --- a/src/main/java/de/marhali/easyi18n/WindowManager.java +++ b/src/main/java/de/marhali/easyi18n/service/WindowManager.java @@ -1,9 +1,9 @@ -package de.marhali.easyi18n; +package de.marhali.easyi18n.service; import com.intellij.openapi.wm.ToolWindow; -import de.marhali.easyi18n.ui.panel.TableView; -import de.marhali.easyi18n.ui.panel.TreeView; +import de.marhali.easyi18n.ui.tabs.TableView; +import de.marhali.easyi18n.ui.tabs.TreeView; public class WindowManager { diff --git a/src/main/java/de/marhali/easyi18n/ui/ActionsToolbar.form b/src/main/java/de/marhali/easyi18n/ui/ActionsToolbar.form deleted file mode 100644 index 76392c6..0000000 --- a/src/main/java/de/marhali/easyi18n/ui/ActionsToolbar.form +++ /dev/null @@ -1,18 +0,0 @@ - -
- - - - - - - - - - - - - - - -
diff --git a/src/main/java/de/marhali/easyi18n/ui/ActionsToolbar.java b/src/main/java/de/marhali/easyi18n/ui/ActionsToolbar.java deleted file mode 100644 index 2b77820..0000000 --- a/src/main/java/de/marhali/easyi18n/ui/ActionsToolbar.java +++ /dev/null @@ -1,6 +0,0 @@ -package de.marhali.easyi18n.ui; - -import javax.swing.*; - -public class ActionsToolbar { -} diff --git a/src/main/java/de/marhali/easyi18n/ui/action/AddAction.java b/src/main/java/de/marhali/easyi18n/ui/action/AddAction.java index 916e20f..61365ce 100644 --- a/src/main/java/de/marhali/easyi18n/ui/action/AddAction.java +++ b/src/main/java/de/marhali/easyi18n/ui/action/AddAction.java @@ -4,7 +4,7 @@ import com.intellij.icons.AllIcons; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; -import de.marhali.easyi18n.WindowManager; +import de.marhali.easyi18n.service.WindowManager; import de.marhali.easyi18n.ui.dialog.AddDialog; import de.marhali.easyi18n.util.TreeUtil; @@ -12,6 +12,10 @@ import org.jetbrains.annotations.NotNull; import javax.swing.tree.TreePath; +/** + * Add translation action. + * @author marhai + */ public class AddAction extends AnAction { public AddAction() { diff --git a/src/main/java/de/marhali/easyi18n/ui/action/ReloadAction.java b/src/main/java/de/marhali/easyi18n/ui/action/ReloadAction.java index 0d0584c..a7cbffc 100644 --- a/src/main/java/de/marhali/easyi18n/ui/action/ReloadAction.java +++ b/src/main/java/de/marhali/easyi18n/ui/action/ReloadAction.java @@ -4,12 +4,14 @@ import com.intellij.icons.AllIcons; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; -import de.marhali.easyi18n.data.DataStore; +import de.marhali.easyi18n.service.DataStore; import org.jetbrains.annotations.NotNull; -import java.io.IOException; - +/** + * Reload translations action. + * @author marhali + */ public class ReloadAction extends AnAction { public ReloadAction() { @@ -18,10 +20,6 @@ public class ReloadAction extends AnAction { @Override public void actionPerformed(@NotNull AnActionEvent e) { - try { - DataStore.getInstance(e.getProject()).reloadFromDisk(); - } catch (IOException ioException) { - ioException.printStackTrace(); - } + DataStore.getInstance(e.getProject()).reloadFromDisk(); } } \ No newline at end of file diff --git a/src/main/java/de/marhali/easyi18n/ui/action/SearchAction.java b/src/main/java/de/marhali/easyi18n/ui/action/SearchAction.java index 2bebafd..d078c3e 100644 --- a/src/main/java/de/marhali/easyi18n/ui/action/SearchAction.java +++ b/src/main/java/de/marhali/easyi18n/ui/action/SearchAction.java @@ -16,6 +16,10 @@ import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.util.function.Consumer; +/** + * Search translations by key action. + * @author marhali + */ public class SearchAction extends AnAction implements CustomComponentAction { private final Consumer searchCallback; diff --git a/src/main/java/de/marhali/easyi18n/ui/action/SettingsAction.java b/src/main/java/de/marhali/easyi18n/ui/action/SettingsAction.java index 65ecd00..12ff0a1 100644 --- a/src/main/java/de/marhali/easyi18n/ui/action/SettingsAction.java +++ b/src/main/java/de/marhali/easyi18n/ui/action/SettingsAction.java @@ -6,6 +6,10 @@ import com.intellij.openapi.actionSystem.AnActionEvent; import de.marhali.easyi18n.ui.dialog.SettingsDialog; import org.jetbrains.annotations.NotNull; +/** + * Plugin settings action. + * @author marhali + */ public class SettingsAction extends AnAction { public SettingsAction() { diff --git a/src/main/java/de/marhali/easyi18n/ui/action/CollapseTreeViewAction.java b/src/main/java/de/marhali/easyi18n/ui/action/treeview/CollapseTreeViewAction.java similarity index 93% rename from src/main/java/de/marhali/easyi18n/ui/action/CollapseTreeViewAction.java rename to src/main/java/de/marhali/easyi18n/ui/action/treeview/CollapseTreeViewAction.java index 6ac8f2d..6bc00de 100644 --- a/src/main/java/de/marhali/easyi18n/ui/action/CollapseTreeViewAction.java +++ b/src/main/java/de/marhali/easyi18n/ui/action/treeview/CollapseTreeViewAction.java @@ -1,4 +1,4 @@ -package de.marhali.easyi18n.ui.action; +package de.marhali.easyi18n.ui.action.treeview; import com.intellij.icons.AllIcons; import com.intellij.openapi.actionSystem.AnAction; diff --git a/src/main/java/de/marhali/easyi18n/ui/action/ExpandTreeViewAction.java b/src/main/java/de/marhali/easyi18n/ui/action/treeview/ExpandTreeViewAction.java similarity index 93% rename from src/main/java/de/marhali/easyi18n/ui/action/ExpandTreeViewAction.java rename to src/main/java/de/marhali/easyi18n/ui/action/treeview/ExpandTreeViewAction.java index a4f2a03..eb1fe99 100644 --- a/src/main/java/de/marhali/easyi18n/ui/action/ExpandTreeViewAction.java +++ b/src/main/java/de/marhali/easyi18n/ui/action/treeview/ExpandTreeViewAction.java @@ -1,4 +1,4 @@ -package de.marhali.easyi18n.ui.action; +package de.marhali.easyi18n.ui.action.treeview; import com.intellij.icons.AllIcons; import com.intellij.openapi.actionSystem.AnAction; diff --git a/src/main/java/de/marhali/easyi18n/ui/dialog/AddDialog.java b/src/main/java/de/marhali/easyi18n/ui/dialog/AddDialog.java index b70defc..d3ebbe9 100644 --- a/src/main/java/de/marhali/easyi18n/ui/dialog/AddDialog.java +++ b/src/main/java/de/marhali/easyi18n/ui/dialog/AddDialog.java @@ -7,7 +7,7 @@ import com.intellij.ui.components.JBLabel; import com.intellij.ui.components.JBScrollPane; import com.intellij.ui.components.JBTextField; -import de.marhali.easyi18n.data.DataStore; +import de.marhali.easyi18n.service.DataStore; import de.marhali.easyi18n.model.KeyedTranslation; import de.marhali.easyi18n.model.TranslationCreate; @@ -18,7 +18,7 @@ import java.util.HashMap; import java.util.Map; /** - * + * Create translation dialog. * @author marhali */ public class AddDialog { diff --git a/src/main/java/de/marhali/easyi18n/ui/dialog/EditDialog.java b/src/main/java/de/marhali/easyi18n/ui/dialog/EditDialog.java index ee7c418..6dab340 100644 --- a/src/main/java/de/marhali/easyi18n/ui/dialog/EditDialog.java +++ b/src/main/java/de/marhali/easyi18n/ui/dialog/EditDialog.java @@ -6,7 +6,7 @@ import com.intellij.openapi.ui.DialogWrapper; import com.intellij.ui.components.JBLabel; import com.intellij.ui.components.JBScrollPane; import com.intellij.ui.components.JBTextField; -import de.marhali.easyi18n.data.DataStore; +import de.marhali.easyi18n.service.DataStore; import de.marhali.easyi18n.model.KeyedTranslation; import de.marhali.easyi18n.model.TranslationDelete; import de.marhali.easyi18n.model.TranslationUpdate; @@ -18,6 +18,10 @@ import java.awt.*; import java.util.HashMap; import java.util.Map; +/** + * Edit translation dialog. + * @author marhali + */ public class EditDialog { private final Project project; diff --git a/src/main/java/de/marhali/easyi18n/ui/dialog/SettingsDialog.java b/src/main/java/de/marhali/easyi18n/ui/dialog/SettingsDialog.java index 5bcc2c8..8d99065 100644 --- a/src/main/java/de/marhali/easyi18n/ui/dialog/SettingsDialog.java +++ b/src/main/java/de/marhali/easyi18n/ui/dialog/SettingsDialog.java @@ -8,12 +8,11 @@ import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.ui.components.JBLabel; import com.intellij.ui.components.JBTextField; -import de.marhali.easyi18n.SettingsService; -import de.marhali.easyi18n.data.DataStore; +import de.marhali.easyi18n.service.SettingsService; +import de.marhali.easyi18n.service.DataStore; import javax.swing.*; import java.awt.*; -import java.io.IOException; /** * Plugin configuration dialog. @@ -39,11 +38,7 @@ public class SettingsDialog { SettingsService.getInstance(project).getState().setPreviewLocale(previewText.getText()); // Reload instance - try { - DataStore.getInstance(project).reloadFromDisk(); - } catch (IOException e) { - e.printStackTrace(); - } + DataStore.getInstance(project).reloadFromDisk(); } } diff --git a/src/main/java/de/marhali/easyi18n/ui/panel/TestPanel.form b/src/main/java/de/marhali/easyi18n/ui/panel/TestPanel.form deleted file mode 100644 index 55d85b9..0000000 --- a/src/main/java/de/marhali/easyi18n/ui/panel/TestPanel.form +++ /dev/null @@ -1,130 +0,0 @@ - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/src/main/java/de/marhali/easyi18n/ui/panel/TestPanel.java b/src/main/java/de/marhali/easyi18n/ui/panel/TestPanel.java deleted file mode 100644 index 97d75c8..0000000 --- a/src/main/java/de/marhali/easyi18n/ui/panel/TestPanel.java +++ /dev/null @@ -1,12 +0,0 @@ -package de.marhali.easyi18n.ui.panel; - -import javax.swing.*; - -public class TestPanel { - private JPanel panel1; - private JTextField textField1; - private JTextField textField2; - private JTextField textField3; - private JTextField textField4; - private JTextField textField5; -} diff --git a/src/main/java/de/marhali/easyi18n/ui/panel/TableRenderer.java b/src/main/java/de/marhali/easyi18n/ui/renderer/TableRenderer.java similarity index 96% rename from src/main/java/de/marhali/easyi18n/ui/panel/TableRenderer.java rename to src/main/java/de/marhali/easyi18n/ui/renderer/TableRenderer.java index 79a86c5..18aeab4 100644 --- a/src/main/java/de/marhali/easyi18n/ui/panel/TableRenderer.java +++ b/src/main/java/de/marhali/easyi18n/ui/renderer/TableRenderer.java @@ -1,4 +1,4 @@ -package de.marhali.easyi18n.ui.panel; +package de.marhali.easyi18n.ui.renderer; import com.intellij.ui.JBColor; diff --git a/src/main/java/de/marhali/easyi18n/ui/panel/TreeRenderer.java b/src/main/java/de/marhali/easyi18n/ui/renderer/TreeRenderer.java similarity index 82% rename from src/main/java/de/marhali/easyi18n/ui/panel/TreeRenderer.java rename to src/main/java/de/marhali/easyi18n/ui/renderer/TreeRenderer.java index 4b26dd0..b8ae3c5 100644 --- a/src/main/java/de/marhali/easyi18n/ui/panel/TreeRenderer.java +++ b/src/main/java/de/marhali/easyi18n/ui/renderer/TreeRenderer.java @@ -1,4 +1,4 @@ -package de.marhali.easyi18n.ui.panel; +package de.marhali.easyi18n.ui.renderer; import com.intellij.ide.util.treeView.NodeRenderer; import com.intellij.navigation.ItemPresentation; @@ -11,6 +11,11 @@ import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.TreeCellRenderer; import java.awt.*; +/** + * Similar to {@link NodeRenderer} but will will override {@link #getPresentation(Object)} to + * make {@link ItemPresentation} visible. + * @author marhali + */ public class TreeRenderer extends NodeRenderer { @Override diff --git a/src/main/java/de/marhali/easyi18n/ui/table/CustomTableModel.java b/src/main/java/de/marhali/easyi18n/ui/table/CustomTableModel.java deleted file mode 100644 index 2c0a991..0000000 --- a/src/main/java/de/marhali/easyi18n/ui/table/CustomTableModel.java +++ /dev/null @@ -1,65 +0,0 @@ -package de.marhali.easyi18n.ui.table; - -import org.jetbrains.annotations.Nls; - -import javax.swing.event.TableModelListener; -import javax.swing.table.TableModel; - -public class CustomTableModel implements TableModel { - - - @Override - public int getRowCount() { - return 2; - } - - @Override - public int getColumnCount() { - return 3; - } - - @Nls - @Override - public String getColumnName(int columnIndex) { - switch (columnIndex) { - case 0: - return "key"; - case 1: - return "de"; - case 2: - return "en"; - } - - return null; - } - - @Override - public Class getColumnClass(int columnIndex) { - return String.class; - } - - @Override - public boolean isCellEditable(int rowIndex, int columnIndex) { - return false; - } - - @Override - public Object getValueAt(int rowIndex, int columnIndex) { - return columnIndex == 0 ? "key" : "val"; - } - - @Override - public void setValueAt(Object aValue, int rowIndex, int columnIndex) { - - } - - @Override - public void addTableModelListener(TableModelListener l) { - - } - - @Override - public void removeTableModelListener(TableModelListener l) { - - } -} diff --git a/src/main/java/de/marhali/easyi18n/ui/panel/TableView.form b/src/main/java/de/marhali/easyi18n/ui/tabs/TableView.form similarity index 95% rename from src/main/java/de/marhali/easyi18n/ui/panel/TableView.form rename to src/main/java/de/marhali/easyi18n/ui/tabs/TableView.form index 00b4c80..9729297 100644 --- a/src/main/java/de/marhali/easyi18n/ui/panel/TableView.form +++ b/src/main/java/de/marhali/easyi18n/ui/tabs/TableView.form @@ -1,5 +1,5 @@ -
+ diff --git a/src/main/java/de/marhali/easyi18n/ui/panel/TableView.java b/src/main/java/de/marhali/easyi18n/ui/tabs/TableView.java similarity index 89% rename from src/main/java/de/marhali/easyi18n/ui/panel/TableView.java rename to src/main/java/de/marhali/easyi18n/ui/tabs/TableView.java index 640dd9e..3638686 100644 --- a/src/main/java/de/marhali/easyi18n/ui/panel/TableView.java +++ b/src/main/java/de/marhali/easyi18n/ui/tabs/TableView.java @@ -1,24 +1,31 @@ -package de.marhali.easyi18n.ui.panel; +package de.marhali.easyi18n.ui.tabs; import com.intellij.openapi.project.Project; import com.intellij.ui.components.JBScrollPane; import com.intellij.ui.table.JBTable; -import de.marhali.easyi18n.data.DataStore; -import de.marhali.easyi18n.data.LocalizedNode; + +import de.marhali.easyi18n.service.DataStore; +import de.marhali.easyi18n.model.LocalizedNode; import de.marhali.easyi18n.model.DataSynchronizer; -import de.marhali.easyi18n.data.Translations; +import de.marhali.easyi18n.model.Translations; import de.marhali.easyi18n.model.KeyedTranslation; import de.marhali.easyi18n.model.TranslationDelete; import de.marhali.easyi18n.model.table.TableModelTranslator; import de.marhali.easyi18n.ui.dialog.EditDialog; import de.marhali.easyi18n.ui.listener.DeleteKeyListener; import de.marhali.easyi18n.ui.listener.PopupClickListener; +import de.marhali.easyi18n.ui.renderer.TableRenderer; + import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.event.MouseEvent; +/** + * Shows translation state as table. + * @author marhali + */ public class TableView implements DataSynchronizer { private final Project project; @@ -77,4 +84,4 @@ public class TableView implements DataSynchronizer { public JBTable getTable() { return table; } -} +} \ No newline at end of file diff --git a/src/main/java/de/marhali/easyi18n/ui/panel/TreeView.form b/src/main/java/de/marhali/easyi18n/ui/tabs/TreeView.form similarity index 95% rename from src/main/java/de/marhali/easyi18n/ui/panel/TreeView.form rename to src/main/java/de/marhali/easyi18n/ui/tabs/TreeView.form index d93a66e..c448049 100644 --- a/src/main/java/de/marhali/easyi18n/ui/panel/TreeView.form +++ b/src/main/java/de/marhali/easyi18n/ui/tabs/TreeView.form @@ -1,5 +1,5 @@ - + diff --git a/src/main/java/de/marhali/easyi18n/ui/panel/TreeView.java b/src/main/java/de/marhali/easyi18n/ui/tabs/TreeView.java similarity index 90% rename from src/main/java/de/marhali/easyi18n/ui/panel/TreeView.java rename to src/main/java/de/marhali/easyi18n/ui/tabs/TreeView.java index 701d752..d120d37 100644 --- a/src/main/java/de/marhali/easyi18n/ui/panel/TreeView.java +++ b/src/main/java/de/marhali/easyi18n/ui/tabs/TreeView.java @@ -1,4 +1,4 @@ -package de.marhali.easyi18n.ui.panel; +package de.marhali.easyi18n.ui.tabs; import com.intellij.ide.projectView.PresentationData; import com.intellij.openapi.actionSystem.ActionManager; @@ -6,18 +6,19 @@ import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.project.Project; import com.intellij.ui.treeStructure.Tree; -import de.marhali.easyi18n.data.DataStore; -import de.marhali.easyi18n.data.LocalizedNode; +import de.marhali.easyi18n.service.DataStore; +import de.marhali.easyi18n.model.LocalizedNode; import de.marhali.easyi18n.model.DataSynchronizer; -import de.marhali.easyi18n.data.Translations; +import de.marhali.easyi18n.model.Translations; import de.marhali.easyi18n.model.KeyedTranslation; import de.marhali.easyi18n.model.TranslationDelete; import de.marhali.easyi18n.model.tree.TreeModelTranslator; -import de.marhali.easyi18n.ui.action.CollapseTreeViewAction; -import de.marhali.easyi18n.ui.action.ExpandTreeViewAction; +import de.marhali.easyi18n.ui.action.treeview.CollapseTreeViewAction; +import de.marhali.easyi18n.ui.action.treeview.ExpandTreeViewAction; import de.marhali.easyi18n.ui.dialog.EditDialog; import de.marhali.easyi18n.ui.listener.DeleteKeyListener; import de.marhali.easyi18n.ui.listener.PopupClickListener; +import de.marhali.easyi18n.ui.renderer.TreeRenderer; import de.marhali.easyi18n.util.TreeUtil; import org.jetbrains.annotations.NotNull; @@ -28,6 +29,10 @@ import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreePath; import java.awt.event.MouseEvent; +/** + * Show translation state as tree. + * @author marhali + */ public class TreeView implements DataSynchronizer { private final Project project; @@ -129,4 +134,4 @@ public class TreeView implements DataSynchronizer { public Tree getTree() { return tree; } -} +} \ No newline at end of file diff --git a/src/main/java/de/marhali/easyi18n/util/IOUtil.java b/src/main/java/de/marhali/easyi18n/util/IOUtil.java index ff8a318..7ee00e6 100644 --- a/src/main/java/de/marhali/easyi18n/util/IOUtil.java +++ b/src/main/java/de/marhali/easyi18n/util/IOUtil.java @@ -2,9 +2,9 @@ package de.marhali.easyi18n.util; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; -import de.marhali.easyi18n.io.translator.JsonTranslatorIO; -import de.marhali.easyi18n.io.translator.PropertiesTranslatorIO; -import de.marhali.easyi18n.io.translator.TranslatorIO; +import de.marhali.easyi18n.io.implementation.JsonTranslatorIO; +import de.marhali.easyi18n.io.implementation.PropertiesTranslatorIO; +import de.marhali.easyi18n.io.TranslatorIO; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/de/marhali/easyi18n/util/MapUtil.java b/src/main/java/de/marhali/easyi18n/util/MapUtil.java index 9c89fc8..e7a1c0d 100644 --- a/src/main/java/de/marhali/easyi18n/util/MapUtil.java +++ b/src/main/java/de/marhali/easyi18n/util/MapUtil.java @@ -1,6 +1,6 @@ package de.marhali.easyi18n.util; -import de.marhali.easyi18n.data.LocalizedNode; +import de.marhali.easyi18n.model.LocalizedNode; import java.util.List; import java.util.TreeMap; @@ -11,6 +11,11 @@ import java.util.TreeMap; */ public class MapUtil { + /** + * Converts the provided list into a tree map. + * @param list List of nodes + * @return TreeMap based on node key and node object + */ public static TreeMap convertToTreeMap(List list) { TreeMap map = new TreeMap<>(); diff --git a/src/main/java/de/marhali/easyi18n/util/TranslationsUtil.java b/src/main/java/de/marhali/easyi18n/util/TranslationsUtil.java index 6dcca0b..bbe21a7 100644 --- a/src/main/java/de/marhali/easyi18n/util/TranslationsUtil.java +++ b/src/main/java/de/marhali/easyi18n/util/TranslationsUtil.java @@ -7,8 +7,17 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; +/** + * Utility tool to support the translations instance + * @author marhali + */ public class TranslationsUtil { + /** + * Retrieve all sections for the specified path (mostly fullPath) + * @param path The path + * @return Sections. E.g. input user.username.title -> Output: [user, username, title] + */ public static @NotNull List getSections(@NotNull String path) { if(!path.contains(".")) { return new ArrayList<>(Collections.singletonList(path)); @@ -17,6 +26,11 @@ public class TranslationsUtil { return new ArrayList<>(Arrays.asList(path.split("\\."))); } + /** + * Concatenate the given sections to a single string. + * @param sections The sections + * @return Full path. E.g. input [user, username, title] -> Output: user.username.title + */ public static @NotNull String sectionsToFullPath(@NotNull List sections) { StringBuilder builder = new StringBuilder(); diff --git a/src/main/java/de/marhali/easyi18n/util/TreeUtil.java b/src/main/java/de/marhali/easyi18n/util/TreeUtil.java index d0b35f2..6d9fe91 100644 --- a/src/main/java/de/marhali/easyi18n/util/TreeUtil.java +++ b/src/main/java/de/marhali/easyi18n/util/TreeUtil.java @@ -1,14 +1,22 @@ package de.marhali.easyi18n.util; import com.intellij.ide.projectView.PresentationData; -import de.marhali.easyi18n.data.LocalizedNode; -import de.marhali.easyi18n.model.tree.TreeModelTranslator; +import de.marhali.easyi18n.model.LocalizedNode; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreePath; +/** + * Swing tree utility + * @author marhali + */ public class TreeUtil { + /** + * Constructs the full path for a given {@link TreePath} + * @param path TreePath + * @return Full key (e.g user.username.title) + */ public static String getFullPath(TreePath path) { StringBuilder builder = new StringBuilder(); diff --git a/src/main/java/de/marhali/easyi18n/util/UiUtil.java b/src/main/java/de/marhali/easyi18n/util/UiUtil.java index 5fdad39..34af963 100644 --- a/src/main/java/de/marhali/easyi18n/util/UiUtil.java +++ b/src/main/java/de/marhali/easyi18n/util/UiUtil.java @@ -8,6 +8,11 @@ import java.util.Map; */ public class UiUtil { + /** + * Generates a html compliant string which shows all defined translations + * @param messages Contains locales with desired translation + * @return String with html format + */ public static String generateHtmlTooltip(Map messages) { StringBuilder builder = new StringBuilder(); diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index c876f3f..7f34f55 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -9,6 +9,6 @@ - + \ No newline at end of file