From 67bbac196a6d1f53002c8980021c834c6a255a83 Mon Sep 17 00:00:00 2001 From: bancika Date: Mon, 4 Jan 2021 22:37:52 +0100 Subject: [PATCH] Improved code robustness --- .../src/org/diylc/presenter/Presenter.java | 16 +++++--- .../src/org/diylc/presenter/update.xml | 16 ++++++++ .../src/org/diylc/swing/gui/MainFrame.java | 37 +++++++++---------- .../swing/loadline/LoadlineEditorFrame.java | 2 +- 4 files changed, 46 insertions(+), 25 deletions(-) diff --git a/diylc/diylc-core/src/org/diylc/presenter/Presenter.java b/diylc/diylc-core/src/org/diylc/presenter/Presenter.java index e998b1f8..d53b857c 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/Presenter.java +++ b/diylc/diylc-core/src/org/diylc/presenter/Presenter.java @@ -46,6 +46,7 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeMap; +import java.util.function.Supplier; import javax.swing.JOptionPane; @@ -231,11 +232,16 @@ public class Presenter implements IPlugInPort { importDefaultBlocks(); } - public void installPlugin(IPlugIn plugIn) { - LOG.info(String.format("installPlugin(%s)", plugIn.getClass().getSimpleName())); - plugIns.add(plugIn); - plugIn.connect(this); - messageDispatcher.registerListener(plugIn); + public void installPlugin(Supplier plugInSupplier) { + try { + IPlugIn plugIn = plugInSupplier.get(); + LOG.info(String.format("installPlugin(%s)", plugIn.getClass().getSimpleName())); + plugIns.add(plugIn); + plugIn.connect(this); + messageDispatcher.registerListener(plugIn); + } catch (Exception e) { + LOG.error("Error while installing plugin", e); + } } public void dispose() { diff --git a/diylc/diylc-core/src/org/diylc/presenter/update.xml b/diylc/diylc-core/src/org/diylc/presenter/update.xml index 06eede2d..5aa1e9eb 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/update.xml +++ b/diylc/diylc-core/src/org/diylc/presenter/update.xml @@ -3477,5 +3477,21 @@ https://github.com/bancika/diy-layout-creator/releases + + + 4 + 16 + 0 + + 2021-01-04 00:00:00.000 CET + + + + IMPROVEMENT + Improved code robustness + + + https://github.com/bancika/diy-layout-creator/releases + diff --git a/diylc/diylc-swing/src/org/diylc/swing/gui/MainFrame.java b/diylc/diylc-swing/src/org/diylc/swing/gui/MainFrame.java index ed0117f3..34f18858 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/gui/MainFrame.java +++ b/diylc/diylc-swing/src/org/diylc/swing/gui/MainFrame.java @@ -122,29 +122,28 @@ public class MainFrame extends JFrame implements ISwingUI { IConfigurationManager configManager = ConfigurationManager.getInstance(); - this.presenter = new Presenter(this, configManager); + this.presenter = new Presenter(this, configManager); - canvasPlugin = new CanvasPlugin(this, configManager); - - presenter.installPlugin(new ToolBox(this)); - presenter.installPlugin(new FileMenuPlugin(this)); - presenter.installPlugin(new EditMenuPlugin(this)); - presenter.installPlugin(new ConfigPlugin(this)); - presenter.installPlugin(new LayersMenuPlugin(this)); - presenter.installPlugin(new CloudPlugIn(this)); + presenter.installPlugin(() -> new ToolBox(this)); + presenter.installPlugin(() -> new FileMenuPlugin(this)); + presenter.installPlugin(() -> new EditMenuPlugin(this)); + presenter.installPlugin(() -> new ConfigPlugin(this)); + presenter.installPlugin(() -> new LayersMenuPlugin(this)); + presenter.installPlugin(() -> new CloudPlugIn(this)); if ("true".equalsIgnoreCase(System.getProperty("org.diylc.enableTests"))) - presenter.installPlugin(new TestMenuPlugin(this)); - presenter.installPlugin(new HelpMenuPlugin(this)); - presenter.installPlugin(new ActionBarPlugin(this)); + presenter.installPlugin(() -> new TestMenuPlugin(this)); + presenter.installPlugin(() -> new HelpMenuPlugin(this)); + presenter.installPlugin(() -> new ActionBarPlugin(this)); - presenter.installPlugin(new StatusBar(this)); + presenter.installPlugin(() -> new StatusBar(this)); + + canvasPlugin = new CanvasPlugin(this, configManager); + presenter.installPlugin(() -> canvasPlugin); + presenter.installPlugin(() -> new ComponentTree(this, canvasPlugin.getCanvasPanel())); + + presenter.installPlugin(() -> new FramePlugin()); - presenter.installPlugin(canvasPlugin); - - presenter.installPlugin(new ComponentTree(this, canvasPlugin.getCanvasPanel())); - presenter.installPlugin(new FramePlugin()); - - presenter.installPlugin(new AutoSavePlugin(this)); + presenter.installPlugin(() -> new AutoSavePlugin(this)); presenter.createNewProject(); diff --git a/diylc/diylc-swing/src/org/diylc/swing/loadline/LoadlineEditorFrame.java b/diylc/diylc-swing/src/org/diylc/swing/loadline/LoadlineEditorFrame.java index 5b4ab7ab..6e5285e8 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/loadline/LoadlineEditorFrame.java +++ b/diylc/diylc-swing/src/org/diylc/swing/loadline/LoadlineEditorFrame.java @@ -121,7 +121,7 @@ public class LoadlineEditorFrame extends JFrame implements IView { this.plugInPort = new Presenter(this, configManager); - this.plugInPort.installPlugin(new IPlugIn() { + this.plugInPort.installPlugin(() -> new IPlugIn() { @SuppressWarnings("incomplete-switch") @Override