Improved code robustness

This commit is contained in:
bancika
2021-01-04 22:37:52 +01:00
parent 5415c29ee0
commit 67bbac196a
4 changed files with 46 additions and 25 deletions
@@ -46,6 +46,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.TreeMap; import java.util.TreeMap;
import java.util.function.Supplier;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
@@ -231,11 +232,16 @@ public class Presenter implements IPlugInPort {
importDefaultBlocks(); importDefaultBlocks();
} }
public void installPlugin(IPlugIn plugIn) { public void installPlugin(Supplier<IPlugIn> plugInSupplier) {
LOG.info(String.format("installPlugin(%s)", plugIn.getClass().getSimpleName())); try {
plugIns.add(plugIn); IPlugIn plugIn = plugInSupplier.get();
plugIn.connect(this); LOG.info(String.format("installPlugin(%s)", plugIn.getClass().getSimpleName()));
messageDispatcher.registerListener(plugIn); plugIns.add(plugIn);
plugIn.connect(this);
messageDispatcher.registerListener(plugIn);
} catch (Exception e) {
LOG.error("Error while installing plugin", e);
}
} }
public void dispose() { public void dispose() {
@@ -3477,5 +3477,21 @@
</changes> </changes>
<url>https://github.com/bancika/diy-layout-creator/releases</url> <url>https://github.com/bancika/diy-layout-creator/releases</url>
</org.diylc.appframework.update.Version> </org.diylc.appframework.update.Version>
<org.diylc.appframework.update.Version>
<versionNumber>
<major>4</major>
<minor>16</minor>
<build>0</build>
</versionNumber>
<releaseDate>2021-01-04 00:00:00.000 CET</releaseDate>
<name></name>
<changes>
<org.diylc.appframework.update.Change>
<changeType>IMPROVEMENT</changeType>
<description>Improved code robustness</description>
</org.diylc.appframework.update.Change>
</changes>
<url>https://github.com/bancika/diy-layout-creator/releases</url>
</org.diylc.appframework.update.Version>
</a> </a>
</java.util.Arrays_-ArrayList> </java.util.Arrays_-ArrayList>
@@ -122,29 +122,28 @@ public class MainFrame extends JFrame implements ISwingUI {
IConfigurationManager configManager = ConfigurationManager.getInstance(); 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 ToolBox(this)); presenter.installPlugin(() -> new EditMenuPlugin(this));
presenter.installPlugin(new FileMenuPlugin(this)); presenter.installPlugin(() -> new ConfigPlugin(this));
presenter.installPlugin(new EditMenuPlugin(this)); presenter.installPlugin(() -> new LayersMenuPlugin(this));
presenter.installPlugin(new ConfigPlugin(this)); presenter.installPlugin(() -> new CloudPlugIn(this));
presenter.installPlugin(new LayersMenuPlugin(this));
presenter.installPlugin(new CloudPlugIn(this));
if ("true".equalsIgnoreCase(System.getProperty("org.diylc.enableTests"))) if ("true".equalsIgnoreCase(System.getProperty("org.diylc.enableTests")))
presenter.installPlugin(new TestMenuPlugin(this)); presenter.installPlugin(() -> new TestMenuPlugin(this));
presenter.installPlugin(new HelpMenuPlugin(this)); presenter.installPlugin(() -> new HelpMenuPlugin(this));
presenter.installPlugin(new ActionBarPlugin(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 AutoSavePlugin(this));
presenter.installPlugin(new ComponentTree(this, canvasPlugin.getCanvasPanel()));
presenter.installPlugin(new FramePlugin());
presenter.installPlugin(new AutoSavePlugin(this));
presenter.createNewProject(); presenter.createNewProject();
@@ -121,7 +121,7 @@ public class LoadlineEditorFrame extends JFrame implements IView {
this.plugInPort = new Presenter(this, configManager); this.plugInPort = new Presenter(this, configManager);
this.plugInPort.installPlugin(new IPlugIn() { this.plugInPort.installPlugin(() -> new IPlugIn() {
@SuppressWarnings("incomplete-switch") @SuppressWarnings("incomplete-switch")
@Override @Override