From 0c26029a5251352263f14f294b0538f93f61b99f Mon Sep 17 00:00:00 2001
From: Amandine Tournay <amandine.tournay@pasteur.fr>
Date: Tue, 9 Mar 2021 19:28:11 +0100
Subject: [PATCH] Added project

---
 .gitignore                                    |    6 +
 pom.xml                                       |   86 +
 .../workspaceeditor/PropertiesDialog$1.class  |  Bin 0 -> 875 bytes
 .../workspaceeditor/PropertiesDialog$2.class  |  Bin 0 -> 838 bytes
 .../workspaceeditor/PropertiesDialog$3.class  |  Bin 0 -> 930 bytes
 .../workspaceeditor/PropertiesDialog.class    |  Bin 0 -> 4907 bytes
 .../workspaceeditor/PropertiesDialog.java     |  149 ++
 .../workspaceeditor/TextFieldFilter.class     |  Bin 0 -> 1841 bytes
 .../workspaceeditor/TextFieldFilter.java      |   44 +
 .../workspaceeditor/TitledPopupMenu.class     |  Bin 0 -> 1014 bytes
 .../workspaceeditor/TitledPopupMenu.java      |   27 +
 .../WorkspaceEditorPlugin$1.class             |  Bin 0 -> 1523 bytes
 .../WorkspaceEditorPlugin$10.class            |  Bin 0 -> 968 bytes
 .../WorkspaceEditorPlugin$11.class            |  Bin 0 -> 1552 bytes
 .../WorkspaceEditorPlugin$12$1.class          |  Bin 0 -> 4730 bytes
 .../WorkspaceEditorPlugin$12$2.class          |  Bin 0 -> 4303 bytes
 .../WorkspaceEditorPlugin$12$3.class          |  Bin 0 -> 4303 bytes
 .../WorkspaceEditorPlugin$12$4.class          |  Bin 0 -> 2824 bytes
 .../WorkspaceEditorPlugin$12.class            |  Bin 0 -> 5053 bytes
 .../WorkspaceEditorPlugin$13.class            |  Bin 0 -> 1559 bytes
 .../WorkspaceEditorPlugin$2.class             |  Bin 0 -> 1134 bytes
 .../WorkspaceEditorPlugin$3.class             |  Bin 0 -> 2214 bytes
 .../WorkspaceEditorPlugin$4$1.class           |  Bin 0 -> 994 bytes
 .../WorkspaceEditorPlugin$4.class             |  Bin 0 -> 3535 bytes
 .../WorkspaceEditorPlugin$5.class             |  Bin 0 -> 1804 bytes
 .../WorkspaceEditorPlugin$6.class             |  Bin 0 -> 5616 bytes
 .../WorkspaceEditorPlugin$7.class             |  Bin 0 -> 1494 bytes
 .../WorkspaceEditorPlugin$8.class             |  Bin 0 -> 2316 bytes
 .../WorkspaceEditorPlugin$9.class             |  Bin 0 -> 1433 bytes
 .../WorkspaceEditorPlugin$MainPanel.class     |  Bin 0 -> 8338 bytes
 ...orkspaceEditorPlugin$PDBMouseAdapter.class |  Bin 0 -> 3884 bytes
 ...ceEditorPlugin$PluginActionAdapter$1.class |  Bin 0 -> 3356 bytes
 ...ceEditorPlugin$PluginActionAdapter$2.class |  Bin 0 -> 3356 bytes
 ...ceEditorPlugin$PluginActionAdapter$3.class |  Bin 0 -> 2535 bytes
 ...ceEditorPlugin$PluginActionAdapter$4.class |  Bin 0 -> 2623 bytes
 ...paceEditorPlugin$PluginActionAdapter.class |  Bin 0 -> 6194 bytes
 ...eEditorPlugin$PluginDescriptorButton.class |  Bin 0 -> 5981 bytes
 .../WorkspaceEditorPlugin$SizeButton.class    |  Bin 0 -> 2973 bytes
 .../WorkspaceEditorPlugin.class               |  Bin 0 -> 18457 bytes
 .../WorkspaceEditorPlugin.java                | 1587 +++++++++++++++++
 .../workspaceeditor/images/WE_Help.png        |  Bin 0 -> 36988 bytes
 .../workspaceeditor/images/minusWorkspace.png |  Bin 0 -> 721 bytes
 .../workspaceeditor/images/plusBand.png       |  Bin 0 -> 514 bytes
 .../workspaceeditor/images/plusWorkspace.png  |  Bin 0 -> 743 bytes
 .../workspaceeditor/images/sqBtnLarge.jpg     |  Bin 0 -> 1199 bytes
 .../workspaceeditor/images/sqBtnMedium.jpg    |  Bin 0 -> 966 bytes
 .../workspaceeditor/images/sqBtnSmall.jpg     |  Bin 0 -> 1338 bytes
 47 files changed, 1899 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 pom.xml
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/PropertiesDialog$1.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/PropertiesDialog$2.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/PropertiesDialog$3.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/PropertiesDialog.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/PropertiesDialog.java
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/TextFieldFilter.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/TextFieldFilter.java
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/TitledPopupMenu.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/TitledPopupMenu.java
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$1.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$10.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$11.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$12$1.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$12$2.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$12$3.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$12$4.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$12.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$13.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$2.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$3.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$4$1.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$4.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$5.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$6.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$7.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$8.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$9.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$MainPanel.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PDBMouseAdapter.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PluginActionAdapter$1.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PluginActionAdapter$2.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PluginActionAdapter$3.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PluginActionAdapter$4.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PluginActionAdapter.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PluginDescriptorButton.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$SizeButton.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin.class
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin.java
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/images/WE_Help.png
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/images/minusWorkspace.png
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/images/plusBand.png
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/images/plusWorkspace.png
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/images/sqBtnLarge.jpg
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/images/sqBtnMedium.jpg
 create mode 100644 src/main/java/plugins/tprovoost/workspaceeditor/images/sqBtnSmall.jpg

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3d47f98
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+.idea/
+target/
+.settings/
+*.iml
+.project
+.classpath
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..e684fe9
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <!-- Inherited Icy Parent POM -->
+    <parent>
+        <groupId>org.bioimageanalysis.icy</groupId>
+        <artifactId>parent-pom-plugin</artifactId>
+        <version>1.0.3</version>
+    </parent>
+
+    <!-- Project Information -->
+    <artifactId>workspace-editor</artifactId>
+    <version>1.3.2</version>
+
+    <packaging>jar</packaging>
+
+    <name>Workspace Editor</name>
+    <description>
+        Edit the workspaces with a simple drag’n drop system.
+        Requires Icy 1.2 at least.
+    </description>
+    <url>http://icy.bioimageanalysis.org/plugin/workspace-editor/</url>
+    <inceptionYear>2020</inceptionYear>
+
+    <organization>
+        <name>Institut Pasteur</name>
+        <url>https://pasteur.fr</url>
+    </organization>
+
+    <licenses>
+        <license>
+            <name>GNU GPLv3</name>
+            <url>https://www.gnu.org/licenses/gpl-3.0.en.html</url>
+            <distribution>repo</distribution>
+        </license>
+    </licenses>
+
+    <developers>
+        <developer>
+            <id>sdallongeville</id>
+            <name>Stéphane Dallongeville</name>
+            <url>https://research.pasteur.fr/fr/member/stephane-dallongeville/</url>
+            <roles>
+                <role>founder</role>
+                <role>lead</role>
+                <role>architect</role>
+                <role>developer</role>
+                <role>debugger</role>
+                <role>tester</role>
+                <role>maintainer</role>
+                <role>support</role>
+            </roles>
+        </developer>
+    </developers>
+
+    <!-- Project properties -->
+    <properties>
+
+    </properties>
+
+    <!-- Project build configuration -->
+    <build>
+
+    </build>
+
+    <!-- List of project's dependencies -->
+    <dependencies>
+        <!-- The core of Icy -->
+        <dependency>
+            <groupId>org.bioimageanalysis.icy</groupId>
+            <artifactId>icy-kernel</artifactId>
+        </dependency>
+    </dependencies>
+
+    <!-- Icy Maven repository (to find parent POM) -->
+    <repositories>
+        <repository>
+            <id>icy</id>
+            <name>Icy's Nexus</name>
+            <url>https://icy-nexus.pasteur.fr/repository/Icy/</url>
+        </repository>
+    </repositories>
+</project>
\ No newline at end of file
diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/PropertiesDialog$1.class b/src/main/java/plugins/tprovoost/workspaceeditor/PropertiesDialog$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..8067b43a77262f7de967af705db5b842e1494e75
GIT binary patch
literal 875
zcmbVKO>Yx16dWgM(=1yO0xb{<<s+apNGye_99oc~v`9rMss!Y~&DlIs!`6;$C*f})
z@gZ^G2k@g1&r2jE4oIyJ_M7$d?9A9de|`S};4$u%Q4rV~XOofAF7ab)rp7p*%#8iu
z#xf-uDsOCZWX+hYSLF7T%*?2{Sw=~q@m@~l$HdK)9wnWD^H!$5lX_*eK+Tcm<~~`+
z_|3tdfOsLW+%?*HseNB&6Ix&$VF-amf2>^dA?xX#UeFGo-&I=qX97=JXCc_=3zWKM
zNENX57!l4zD54%C#zlc*D>PJlO4G~9$$;!@Imk$$-ZLqilx&sp{9`Ft5!gP1j^-v?
zsd9{**%8@y#-7knV7=7~StoMl6Pl9t$)A|_L%p-nk8lmw%UBb5bo%gO+`zg(<jD7x
zQ@O8F>uoSB*y7s%e$B^TnTbv5xe9Tt{QFWK1ljCpU#FRI{7w$Z9~*WQA81Xsn@Q)$
z;U<S(<aba&0}EJWRL;>-trl(~ufaF5%sb~9ZE<IT*QkB}3##pJxbP|Oxx{lg4QykD
z=Qyt;tl}~wfh)K=XXwlsD(%mx7QdqLmmtcicd>-0Imv2{D{~T{!g6mhO%b=5w17Kk
S@>=36sN*hI5$^>FJbnY|Yuv8@

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/PropertiesDialog$2.class b/src/main/java/plugins/tprovoost/workspaceeditor/PropertiesDialog$2.class
new file mode 100644
index 0000000000000000000000000000000000000000..8b9bc8cdaea9f277b3c81fda31b695d09ff97d49
GIT binary patch
literal 838
zcmbVKU279T6g`uTS$ADctXjWXYil0T2(HAU4;7)*3c{*|N*)9sCYx(IbvqMgCh6}I
z`~V;P0sbiQ&Jqwrgmz(O?!DYO_nfoy^Vjzu03P99jE2D0w3<zncDbKgGdITh{KVLg
zZYoQnvGT^|`_@d!dPVNJl9ics2Qiugog+Dyc_sBEe=|Cw(#L2CtkzX|;&Yml_W4ff
zmC=QAo-|p3mOoUk`;Z40r=Psd_n#`Q{4;?ky|Vyp4h5RKW=shLE@p^vK1GCfh6Ejf
zs23XAh0^qTc03~cR*otXSSm~@tD&?i<cnf6ND+8^1|Ho3OKHp6n|-n$j6J5Yz*?{P
zr+s_D%I(cziW|5U<EFsi^yX!_jTM2^ksm6jYF*9VyC7Jw#FhVz=4%ILW=ndZf*sfX
zei9D?ZC13W%gQ*VC$GpK8dj9O)co6bE9o3L+-1`vUgsb>o!~t`#0IYfDOWFWw8eR-
zr2YF}koCXe(x<xTGVd+!0p4SY_pFXnT)|b&m=Ts22s;aer2iRN^cC0t0Higv<gud~
jWVz0h1xTQ=iaQJwVU0l>On05nCY#>I21kKppupd6F&)>T

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/PropertiesDialog$3.class b/src/main/java/plugins/tprovoost/workspaceeditor/PropertiesDialog$3.class
new file mode 100644
index 0000000000000000000000000000000000000000..4c202fa4017cc95287a9b40415dccf523b951916
GIT binary patch
literal 930
zcmbVKZEF)j5Pmjy=9=?tE>-JWYg>()M)1TG6)J+%3PP#{B_H~2b6JzEm))?tNq?8%
z8-DNy_@l(xGa!fv&B5-@%*{UY>@)M@=eO?wI=B;|!mu+brbDT0<|anZw6-og(dNCK
z@LY(2blPNxMo)xsQrPE`7kb$2L<kwuV?N_q!PPK(-9Hw&i%?})FQfd#Wnw0j%bw*<
zYSoq22_+0e)s3WW-lxLd(^uZ5`%k2j?kU5g)*=AgJ%(^k4@3<N=MqF%iV>impoWwo
zX!(SCS1R#pI_?YemiG(6u+r5zFM8Za@6Uswe+t9H1$Z<&^prX;wK){#oi<}JVAyDN
z|0&<TmvVQz7vnOnM!3T8;Pm1pxP~=`C7$QPmMwU^kc3CSd0bDhflY?k3fGfXmO6zk
z`pdvbvbFy`g|5BPQ<IAq(#w1C?-9G_Wgvz2RbFT-)$l;LktT(bmx{({ui(}Si%n``
zK<f-xn)+VSU{`3>5L5IlSv%zWNZh{r2}%14mOqp^4ce=e1B|djds5ml&f@}k#0aZ%
zgo8Okqx}&{_!XD@8GOe2AE0F-0Tfhzj1;N_TrJBs=72y0Tev}x0d7)m1x?(dGo*&r
Mahohp*wdl!7gK`s#{d8T

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/PropertiesDialog.class b/src/main/java/plugins/tprovoost/workspaceeditor/PropertiesDialog.class
new file mode 100644
index 0000000000000000000000000000000000000000..4313250bc45f2610af5f3a30826213695704da17
GIT binary patch
literal 4907
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

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/PropertiesDialog.java b/src/main/java/plugins/tprovoost/workspaceeditor/PropertiesDialog.java
new file mode 100644
index 0000000..0576bf1
--- /dev/null
+++ b/src/main/java/plugins/tprovoost/workspaceeditor/PropertiesDialog.java
@@ -0,0 +1,149 @@
+package plugins.tprovoost.workspaceeditor;
+
+import icy.main.Icy;
+import icy.preferences.WorkspaceLocalPreferences;
+import icy.workspace.Workspace;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.AbstractAction;
+import javax.swing.Box;
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComponent;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JRootPane;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+import javax.swing.KeyStroke;
+import javax.swing.border.EmptyBorder;
+
+public class PropertiesDialog extends JDialog {
+
+	private static PropertiesDialog singleton = new PropertiesDialog();
+
+	/** Default serial UID */
+	private static final long serialVersionUID = 1L;
+
+	/** {@link JTextField} containing the name of the workspace. */
+	private JTextField tfWorkspaceName;
+
+	/** {@link JTextArea} containing the description of the workspace. */
+	private JTextField tfWorkspaceDesc;
+
+	private JCheckBox cboxEnabled;
+
+	/** result of the dialog */
+	private boolean changed = false;
+
+	private PropertiesDialog() {
+		super(Icy.getMainInterface().getMainFrame(), "Properties", ModalityType.APPLICATION_MODAL);
+
+		getContentPane().setLayout(new BorderLayout());
+
+		JPanel panel = new JPanel();
+		JRootPane root = getRootPane();
+		root.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("ESCAPE"), "quit");
+		root.getActionMap().put("quit", new AbstractAction() {
+			/** */
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				setVisible(false);
+			}
+		});
+		panel.setBorder(new EmptyBorder(4, 4, 4, 4));
+		getContentPane().add(panel);
+		panel.setLayout(new GridLayout(6, 1));
+
+		JLabel lblWorkspaceName = new JLabel("<html><b>Name:</b></html>");
+		panel.add(lblWorkspaceName);
+
+		tfWorkspaceName = new JTextField("");
+		panel.add(tfWorkspaceName);
+		tfWorkspaceName.setColumns(10);
+
+		JLabel lblWorkspaceDescription = new JLabel("<html><b>Description:</b></html>");
+		panel.add(lblWorkspaceDescription);
+
+		tfWorkspaceDesc = new JTextField("");
+		panel.add(tfWorkspaceDesc);
+
+		JPanel panelEnabled = new JPanel();
+		panelEnabled.setLayout(new BoxLayout(panelEnabled, BoxLayout.X_AXIS));
+		cboxEnabled = new JCheckBox("Enabled");
+		panelEnabled.add(Box.createHorizontalGlue());
+		panelEnabled.add(cboxEnabled);
+		panelEnabled.add(Box.createHorizontalGlue());
+		panel.add(panelEnabled);
+
+		JPanel panelButtons = new JPanel();
+		panelButtons.setBorder(new EmptyBorder(4, 10, 4, 10));
+		panel.add(panelButtons);
+
+		JButton btnCancel = new JButton("Cancel");
+		btnCancel.addActionListener(new ActionListener() {
+
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				setVisible(false);
+			}
+		});
+		panelButtons.setLayout(new BoxLayout(panelButtons, BoxLayout.X_AXIS));
+		panelButtons.add(btnCancel);
+
+		JButton btnOk = new JButton("OK");
+		btnOk.addActionListener(new ActionListener() {
+
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				changed = true;
+				setVisible(false);
+			}
+		});
+
+		Component horizontalGlue = Box.createHorizontalGlue();
+		panelButtons.add(horizontalGlue);
+		panelButtons.add(Box.createHorizontalStrut(10));
+		Component horizontalGlue2 = Box.createHorizontalGlue();
+		panelButtons.add(horizontalGlue2);
+		panelButtons.add(btnOk);
+		
+		pack();
+	}
+
+	public boolean changed() {
+		return changed;
+	}
+
+	public String getWkName() {
+		return tfWorkspaceName.getText();
+	}
+
+	public String getWkDescription() {
+		return tfWorkspaceDesc.getText();
+	}
+
+	public boolean isWorkspaceEnabled() {
+		return cboxEnabled.isSelected();
+	}
+
+	public static PropertiesDialog getInstance() {
+		return singleton;
+	}
+
+	public void initGUI(Workspace currentWorkspace) {
+		tfWorkspaceName.setText(currentWorkspace.getName());
+		tfWorkspaceDesc.setText(currentWorkspace.getDescription());
+		cboxEnabled.setSelected(WorkspaceLocalPreferences.isWorkspaceEnable(currentWorkspace.getName()));
+		repaint();
+	}
+}
diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/TextFieldFilter.class b/src/main/java/plugins/tprovoost/workspaceeditor/TextFieldFilter.class
new file mode 100644
index 0000000000000000000000000000000000000000..0f3259c1765342d294cead6ec54bdc0056eadacb
GIT binary patch
literal 1841
zcmb7EYggMw5WQ;z21mT?m;fnh9<;TM8#R#7hf@+`UJ8z#f-z0{pt8J`m)MezB%t(P
zmD4&o`OwqP`B6QYm5pse^PxINEA3<M+&eQnZ~uMsH-II)3?syFuUS8`gzag5({+v=
z$Mdxl$9?HF4U_Y#@Eunx@!$Ln!RyrxQTMqUhQe?|n5UX`Bs9}$G##7UzNVX}-IELx
z9(RRNFLT!uj=iU^F|a2LqdCX+e8cw3M*WBn5)t_@h5^yA$SQwm92=T(LU0Yk;u(ga
zhr$;A3Y|zK%M41+sqzR0Frh-l=rE$R_PgUWBDjjFFyag|lAFst=g2j=w$u69^F>|7
zHB2+aEbeFP&6=T`j-B-aPYm;kw)47STiUMg3fsyg-{&&|hFKL6Twxf`3!4{?8WrxA
zj7ps|MDvbGnhjD;^Uk8;*M!Hgl>gt6CiU_EB2||9Z%O^P-#byP9CFjo1c9=RMnEZu
zXul|iv8EwxKX;xwhN+Gl8Td`tXx4=35sLJaQ1J;qjUa_|7z+%O-3*-{RPj0PQld<k
z8$P*=C;Gy6ekc>h7ZmwR#*1qa3hAOs1$m!gm@>03s(vj<w=TDqReUM8Mrdn`3#;aj
z;A;@vHw@Rha68<tQo-5Q776oIJjAzDP220w53+@lp3UpoUA?f$FxN}yMU(k$ewvZU
zk5oKHmU3Cn=J(cn<_E=sOmHunomfYpA*W&u>p{``7hp+QUt}+Ad4b2vc*(M4v8iH9
zN|=-q^g?NU=UFkIE$PLA+<l^ATXMYK=6GTMU{%lU(W^XKT3U*rfM;P8`$H8}evo@l
z_*}(z*kQOr(ba>SX;KE~68c784li0{q~el_J<xSjJ>IS(iA7%e)OKA2g{0wo70>a4
z5?OVPlg^!c(09Il;dOd?ITEr7v|B;3LLKFpyP4z*N#I8nKVg(1Toqo^@yIu${t@e$
zb_<UoWGzxvUfx<<qZ`If=+)_^nv3iPJ%joj;a%-^vv%LRD^pL3b=&4{u5Nf9_regA
zg%4DrOfc0kjkraHJV1>ugjoz?h-TqnHcTV+5*i0+jrtjlV>EkACmDUmQm-(cicY>p
z>@UpxK`S9#m+Jvq913D&Glh?6O>J9X4mW5f(LU~=ZIe}q*2Yr{uW<8&a5F?LM$oeX
z+*I4714qWVgLwi}WIN~pza<&6hnFPqXA3PP|AF>2)xy0M8Xhbw=`(zFhLsjp>2Ko<
zy8Ii8=3nD!3%lvmpO~48E7jq+G7+f;18ZS_Ki$F)J+UbY5lGY^2^z&sL@Aup#N{?I
zNfVc4BvGXPw2Os+`TaJhF7pz8#sM)N#U_4%LAs(?MFl1Wahf_smHrf3<>V!VUt!T#
McAgsDv_oa&9b;j(5C8xG

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/TextFieldFilter.java b/src/main/java/plugins/tprovoost/workspaceeditor/TextFieldFilter.java
new file mode 100644
index 0000000..7251a35
--- /dev/null
+++ b/src/main/java/plugins/tprovoost/workspaceeditor/TextFieldFilter.java
@@ -0,0 +1,44 @@
+package plugins.tprovoost.workspaceeditor;
+
+import icy.gui.component.IcyTextField;
+import icy.resource.ResourceUtil;
+
+import java.awt.AlphaComposite;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.awt.RenderingHints;
+
+public class TextFieldFilter extends IcyTextField {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	Image img = ResourceUtil.getAlphaIconAsImage("zoom");
+
+	public TextFieldFilter() {
+	}
+
+	public TextFieldFilter(String name) {
+		super(name);
+	}
+
+	@Override
+	protected void paintComponent(Graphics g) {
+		super.paintComponent(g);
+		Graphics2D g2 = (Graphics2D) g.create();
+		int w = getWidth();
+		int h = getHeight();
+ 
+		// set rendering presets
+		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+		g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BICUBIC);
+		g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.7f));
+		
+		// draw images
+		g2.drawImage(img, w - h, 5, h - 10, h - 10, null);
+		g2.dispose();
+	}
+}
diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/TitledPopupMenu.class b/src/main/java/plugins/tprovoost/workspaceeditor/TitledPopupMenu.class
new file mode 100644
index 0000000000000000000000000000000000000000..4f2a3af23cd25a8dffdd9561dd72bbde7d013f9f
GIT binary patch
literal 1014
zcmb7@TTc@~6vzKldXci+DHjn%Mdc<7<*|mODTswqjFd)SY=(AH2A7%5&J^@h_*vvZ
zq7TMr62Fpqb|K{!A8gW@&YV5J|2hA&J^TIr2Y_WPrx0UU^1W75D&tx|&_`Mu>mKXi
zgYkJ?h=#N}a4XV!qVZb$Eq_a>Rtj;3;RAleKf2~vs;0ZqjxqEZ5lHS;MPQ^>yTw%o
zw!zR{(8^e@Y?XU0k@(j9bM}7m^Dl<v3#p`CVaQCELZ<6+BJS9Lz`2<!L%g6HB8?98
zI7p+5p|>QJD7OyxL{Q;-o?sX#={iYr5~lOTW!&yd!?0ZX?*?-us`z09zEu)KkI$vD
z1%2piC6pyEE-L58)?E*{zc1^CN>5>wVK4$*jbv9laToVe7-tx1N8bq5Amdc?6|s$j
z3EU@3HrL+ODr;{mwS2i!%$JJ!onm>NVdC7Wka|6DYEyj5h4@Ja5Alcus`=9H+6_i+
zyBvCU+1mErfvDSD8Y7r;@B~kzG1_ZvhU}F#uZ2t`dz&{?4aYX^AcJ9g3!3D{W#Mh3
z7-G#V^?Ey$U8PB+cXTVLi<dGS^w5o0aUtx1!6_;wf`Z455hjHthVg$G8&=BDK`Z$~
zKj@FZ$gTvEw5RA4!yWpPEV^iQ=w^k^G1`-}bEoM35<SyPYdX5^r`!Sb(Ruj%DfH7h
z{3J1mA!5YC_Agj9QVcaSb3ZY%HGhJ!6Fm5e$FuXNcy@^%prjC(pn>#alrUqF#N>H$
hTOxxQ%n~|5(K*aVg+8au7#85to~GC$wU>=|{snRM`CI@1

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/TitledPopupMenu.java b/src/main/java/plugins/tprovoost/workspaceeditor/TitledPopupMenu.java
new file mode 100644
index 0000000..cbee625
--- /dev/null
+++ b/src/main/java/plugins/tprovoost/workspaceeditor/TitledPopupMenu.java
@@ -0,0 +1,27 @@
+package plugins.tprovoost.workspaceeditor;
+
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.RenderingHints;
+
+import javax.swing.JPopupMenu;
+
+public class TitledPopupMenu extends JPopupMenu {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -5086816009462968371L;
+
+	public TitledPopupMenu(String name) {
+		super(name);
+	}
+
+	@Override
+	protected void paintComponent(Graphics g) {
+		Graphics2D g2 = (Graphics2D) g;
+		g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
+		super.paintComponent(g2);
+	}
+	
+}
diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$1.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..d01c1b3ee4c6cba9531a32610b614a26853a4f02
GIT binary patch
literal 1523
zcmbtU?M@R>5IwgoUAnAN3o4>i)K%LeEcFYqh%pT$m<l8iO!&9mUfYYyZnJw^;4%E=
z$6J^v5`XvrK9q6pQbEOlDNS}eGdnY9X70K3{m0jD0Pf+bh8V+i({0s-7h19z_-)@0
zrM2Y;ufwM8a9$JA53HBJ^tni1jsnc0h6F=;!*1J_YkPHTsk*@(sUgWw6wZ!SZwbrs
zH=Dl4J!vgCJF9$K&I|6=OeK{Y6vQhcl-%P1LsB+GXiic^l`cyvQIZ+q2|3F!lj}N5
zevKhf_G>%^hBF2<^y-MC-#`j!hImdn^jCz(7h9WE9<16`mosE4zGJ&<b|94AF(y<~
z45e<1F^kkxpF9{>jls-Sj-PI6J-?=72*VmKF-&ziOaqs3g`wAW93F<|G=q1Fk^V>j
z2ke*^uH->UM;4<Rt`eJ0ZsD(B1J`h!L927AzAy~t@|8oTuE;=mbwU_|Y2YSqF{C<u
z7KwmMr)gB7Y+K<L0a(wMZI8QzlS4s6o;Y&!tAR1as#L%?{WgE*x~i&i0~4@*tE$Mb
z*nL$;TUQiLhJGt>h`FOD5sGNgwp~%PC3&-T3Vjuwks|$(sWRv*QDQnrav%QZ_Lxv%
zbc^OZ$Mr*+)e9~ge$Bw+=!yj`kHJ{*Xfc#sI}CZK;R!?bc;Ztz>a_n{EEuI*9H*xT
zES*-DnU-ISo)mPl_K|d-bY;;CW1nFZzToV~$mblrljH-uL5AK&B<mQ!AZZNeaiNnT
zp!fvYvV~7D_Hc0*Ba8duja}SU()b?k9A?c#-fs#09c6is5qyXc3j0|)2$T<#C`PDR
q+@+Nrqlf{j_W^Yj$3sGlVG57vKS8XSMv0^h*?KU8*`(TE(eEdZv$Z7v

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$10.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$10.class
new file mode 100644
index 0000000000000000000000000000000000000000..18d6d736dc2fed590588759c5b56a348fb1c68df
GIT binary patch
literal 968
zcmbVLU2hUW6g?M^g>`KawQBvUEh^BaTce3l8ea%T6RIXPZPK@48DZ)&Lw1MikMhL_
zHSxh8;EyuiS@46XFKjY9_ukxd?#J2v_WjFO0Qa!vAxC&Ljwb`9)6k9+b7D+t!?z}R
zla56sWnWp7goi)<PUgSN0JXb29twoYu{aT7Ec76J(L0ur^-v_NWKm_pCn}a&j3nPy
zCWN9Ls<gI4c-URAaEnQHl~(pKVYj|8OXGl0Xq&z)gK#E*hmwyxmIIVgA>`{WVY#cc
zd_EcVWb#V%Vo9iWO(fz2ktpZSf(17ece7|Syh}Hgh$1<*gpGRl&-JyYUbf<Wn<zbK
zHI7QS#Qkr-8^u0Wan-|>IVq-j0j}XXp(J%bJydo`xG<xhCu649tP^2rzA%A!tm@zO
z3I4vBB$1PqVXOcALblxyyu*%;Vv};)d(sX~-@_fkg9XJ8&_I**ijC<1D*B(XSij(z
z)-q|wB28tAHC8&$=M<<?af0)2kmFN^&(YIt-DlrL{O0CI1kKM_`jF+E<#&;DkZYsL
zcHnGAox^#)xjt5A3?0VjIp%FuFMh)1_iX0y8~!wduT4{Ca8AaJtT|`h#Ck@tks)ii
R#diU>QO71*u2EN-pC9DT`)dFI

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$11.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$11.class
new file mode 100644
index 0000000000000000000000000000000000000000..26258c8617a6f3172797623bbc842409d37ecf96
GIT binary patch
literal 1552
zcmbtUT~8B16g{)8U0N0>l@A3`)Pik6mI{hc6tQB0DM(U-@kyuK30>Uoklm#aAN)@y
zfW!ymvp>psXIly+@=`b1ote9L?zwZ%x%2zakDmbMu&P62SlV;;cWl=;gFR0+r1S&x
zKzg73J#Gn6wFBvy@6Xn2;d(3Fkk03IL>ZF1yunR}yF2FF%C4{i9WjQ{(8>=2Q#6Dd
znCpS4mux=}uJ9OQLCyBlvkZ%+4$%t?gAMMatxB;*Ig56R48tXbeQ5dzHs$oDDC-sZ
zQXbNd*s|@~!E=UkreoYIf@ilGqD5I1aWM25(9xx4{RZMlBoM)M1Kk*4h-8#&U&(gG
z=6<~*ym!3f2!>QiTHM*@o~_m`V^r0NVY$<6i6c68(x&2<10INCjc5{8hOta|4)ZcW
zYl^Bub~}MvxUFN1YW&Yq8n}aTI>e3$%EBSaMOE?3Fp$YM<6e+MLC3vIDk%pZ5tBd~
zlR73C7CMxGfd|Mi#JOb&-%sZsF>L-PuT2>@6AbH+M$W(#rWv|gF!KywJ4eZO%;W~Q
z-7W44r;xx5W_6ehs~uJ@-413T52~B4n6$r;42RAbRLXc|*M;lb(hV`^4LrsZa`w-h
zhcBq;+*j#4t|S+BKEue>Qe#Mz<-TW$*S6|`k#-kfyl7^W21#veuH{Idq_ZJ{nyeal
z25RLVNAhZWA1St#Q>ef;lMKeXOIJ_P;l3}ZrQ+=pV4V6iLhm(b$)svrAemBaOP8cZ
zZ#NA3+e5QOT1RN?%S|1lH#dEZWbQjs-$KVh`o_o++6N5LTx}v(4C4lk3^y^-3R9sl
zD)40Ph@u=Jd4kbjxO<BG%5aKoYdFEf6U?1Q?^WR1NAzo-Fro1fWvCgcg+ej0fTx5L
dp=4G1ODND7rDj{k3e8evQ+cUphO953{RN#*y&nJo

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$12$1.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$12$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..617bd7f0952057b9dea682f32a8e6303fa632db3
GIT binary patch
literal 4730
zcmb_f>vvSu75|;fkQ;}~YeZrK=!jEDB4K#cN)rk~2oOyIHK{>ti#IbTnF}-b4)@;4
zqc8iw+IOvKYoS`TD%jR)V_`_3)!3J7`9JuzpZcv|yPE#ay)&5!BsMFUwI=sG_TFco
zy?^_0KKSpocL40h`#Lm%z4>fm$g;hppLd;M$MO8+h~u8|@@7iPwB<W)vcEj<2<FEF
zhQ!WYiJdwk0&7m2!)7vT+C#}>1E*!m*HI&|DOfc}{G=R~wx2wZ@-4^ivOHhf(iN!j
zGnSXwNd>x=u0fkX?Xa0m448IW;DIhHHCEBSqIaUt^v)cTgO+V6B@zcoUYSzJ%CZoz
z-N}y$tnUi6FZfnA*=5;hWLha+KFy~zfyPCiMy{H@>g0U_mm6>8vWq<M#_P?0mqiL|
zYkE{5((a_?Z4kKKfR0)<y2HS2h^kSYffX>+sNTRztcqe8HW*lqjRMOW75i$MQ1%pZ
z1Jdm?2eMKi*5#zk?4zb@sd;HJq7Wgl?-opy*hy=zHUp>~m+qkB<|Kh}cVlRS8`0RI
zkjWcHk-!!mpAcwWIu;FVMI-TOrc%=L5<3J&ZpqtCOSMB=6wTPC<32{j60c*R1=}lk
z*)7nw<h!&rEd(_xx&ym(FbUKx5V;2P)F%b>A?f#+IU;9WV^iqMAm8-*u4NCk)#6jc
znm6V}u?MX>K0PNXg+vD0u$PgZa%^TGzvFDd%o1%IO3(<zwP#GXSDr0MJ0;tiPS%1U
z8*4Xh+wtQAGM;nN)}STRwRlh<-<Oebm3O?jGZ<IUjnC%Ic&dtLSf;nf6|rMy$KrX%
z^DJUM9)dJZHlKU0%sI?KN>s^Z@j=(g1qZ}8+j3;{_9zbGkdAhNjmlU<1uL1h%&aq%
z>?YpKA$cg68R)=afvA^pM#2?=t<{$-+3aR3syH}`hjerb80v_eY1zrn)R=*X(M6Ne
z3Ef=kqygPQmIr~m=#8>60ri~ywiW2XaUI758WyH9@L4><6HC$$yMdn@=93)k(c66j
z@eZX$U^|-(p$}x7mI`dv8m|R2&q|f)<L$0ARo;){go4{+0{1I*X5F>eLJ`H|_=1kl
z6RxT}j3&JiqA&T-vAmLg+_a^EFX9w4kTQO!oiF%h51gyYK<!R0@7OByRQVvRoYgBO
zKXnE~<+C~o-?qm;lCLDGI!sDSI!uAJmCAP1^fKLMK8h!>A&N8xb*Kod5L8N^fgxm=
z5G)$qWKX~nSq{XYNOqRi>GIRa>R^40RpgX+4dh_6oY->IzcG|cIw~LK4V(p!s3j!G
znq!#O%{lFW>zZRhMOM1|1_~Hv0-(JG_Ecm2W~(l2ohU}}B^|8(TNZ~717F5h7->Q5
zN`*9*#p=^b9&9?PjPf-DPvYxLWf{}!3GUD0cv9*AO#|P;Id%zW<XErd71qwVESG52
zZ!7OSO+;6$$_=IScMW_G-=|<Roeq_Fcs?Z-O2YrAH&P1z(7=!IV;Y$LpmnOHFKkX7
zKViR6(RS8nQ9PsW@>79Bi?j0${Y*kZqSC!ZF^-=bcutiGl|$OIrst_zp=@*Bzy<s=
zw2fjD$X08=a4KAywQf+2^=%X{82A-lB$(NKrb8W0&ZEPEMe?KlbMuMgc-g?O@ru9-
zTI0BDIj-ds)cXl4#~n)M3tom<D{qa;td|_jnmNv#q?xypt~D^=*vUtNPe)efn4`)9
zc$aa!X5b<&QL<Mp`N76p60FM34*bTzZ&i3iJad??YsMP}ey>`{)vnAsW_tDwA|RNg
zHijv1{)UdmcBRK0>ya{6l`KpC4ude0GxJ1fxE&<1Qa)r0xgu3?UEV&7r`iF=cG!MI
ztN=xaKOTIjhsK;ncr0IThR@xs*WR0NQbjZyUwc0u-S)NZqajxI`ey13i$u_)>-ZB(
zc@Wd{TAs<U*D1IudDv22e#5NOsvnNq6+ivjVW+Z=NAPt^KjWkgyobLqgmX^8lkHh6
z#YdNFFv2TVj_X$Y<;I=#oi?A7LC{OqiB)r7dR$O0tYix=%uOGN^Wn0LzvYOmS)*Pz
zz?ztP+XP>}Y=SS}HGDH`{H?|sQm^Ic5a-MJZD_vl3S!OMu3%kr%N49|u8&;7oy}L#
zFcI)<;{O`*Kzj~%acrnD8gMty2FLecb0|@}5S}kunlB?ZiF+r}R75g%e-RIy$BNiz
zV*4j?U}6$SrqE4f_r^X~BLr#J712M5lhfGKz3qKOCa&X&$F5?ahg<85NVP7%goE|V
zr(g+8<3wwuKBAZ|Vr|Q|`bZH@5nlf##9Gv(e|Cj5cLpm(jPxt^uL@k4xz<v|H>U6u
z-%1plniadJRS69kzSAE_`oT1wDdO2y{StQ7>!s7jTWdnH`kEqsR>Uv*gK0Q<UM;><
z#H)%tIPHVkbI+4*)+VnjE;TFScgn~SC?nh0KqJ3^JG2*3r@e%Fem80_W0UqOwra0o
zxAqEJwTsxNUBZ6tbsW*&z$xubWVE+1tWDr4?QJ~Ewdb`WirOTmwJCh4UB|yP!d{ya
zQLQM}Y43{7+O*iFy%#w1C|w58QgWsmy@|Kz&Q|;zf4~GGas>ax+xR0vc8ZUg%LG;g
zMfBkccO&=^_i}cX0GZ?s6f{EmDbio#%F~E$`Va2Wv1bOiqeh3&ah)@rby;Uyff=G_
z&a#dZ!N#f?ikq_&GStmr3u>zc1>#PJyW3}o{du^k&Y!7{hIjBTzY)Her}0;gni&J5
bOyGZ`>L)n*JHO)`{e#~G_tl@mJOBO%B7TxG

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$12$2.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$12$2.class
new file mode 100644
index 0000000000000000000000000000000000000000..2f235a0d371fc5ef453855599eff712f18934dcc
GIT binary patch
literal 4303
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
U`T^T{O3$+G;=KA(6y)Fk0E+Gs@Bjb+

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$12$3.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$12$3.class
new file mode 100644
index 0000000000000000000000000000000000000000..61dee7834265a88d7ab403ce455f59af6d2fa326
GIT binary patch
literal 4303
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
IMM3`k4=2b59{>OV

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$12$4.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$12$4.class
new file mode 100644
index 0000000000000000000000000000000000000000..99417a66f90ead21161a429763fb944dd4b833d9
GIT binary patch
literal 2824
zcmbtWU2_vv7=8|0yCEzz#?lHDy427nr8JZlL4w5+iWbsRZ7tfWc)B@Bmu~ii-A!Zg
zgFBtkU%-tw{sLwscD!)B^1{F5jN^MYNz)H-Iwdok^PaQsdC&Xtoaf!Y|NZ?B0ONR~
z;}FC3vQsJAuAdIdp4^bq57JfXt@~we36Zx0>80<t=F{PPKHQKPyOfyF(ZLXV$TxV}
z;chW~Z}p+D0v(+Ur^8iV4boymxIuc#3T)}-Y(EgL@EAISHQP^&kpsDddyrv>Y;Y$L
zaDSa4nX|20+xxcPiA8#UOB8I^R!+2bt#UWdaAlvn5;sYGhmp?f%HSl!&&gMbVV~z`
z_Nlkq&(sn_M^@&=VKBUIKu1JLZx}d?sFIEwI07RI4ZQ}A;!OrEsWx@xY*)-xN~^+K
z<g1Qgi07omoh9zsYTjJzP=#cee1#MwCa5G`JVeO6@Cwo^393wgGWS9dO)EfUQcF>o
z7|?N+;o89=WZ*3%2u9qpgzqOVGE`rwnyG{4Arr+Qk~)S6k_QaOKnla{SjHI^4;)J-
z^)kGXqazsAae<-tB^S;>8k9-BD1td&BII-@Q;k}NG_eqPwp+|ZaEY+y*Ze3Z@V1W2
zJGi8wWZ(*}G90y}OT-aOKdNwt&~~Z`jnG_nje85?QAN0x$fTAdxJE$Fa@UoCxhl-O
za6};T5nN~R7T1KS?!9lyf~k;eZn2$d?cOqKDs|~PHM1;z-zLzT4V0R+F`##zC`lq9
zWvp2<v*5{6c!W9Nit4~<6q9&Q#|?%)m91jMPUmgz$YOey0LP2sRyZ>-g_{gfe@#{!
zD-1*1qiiN^ZyHle5!|8_DSm1MOB@%$ZHD0~Pnb1XG5tzYsB$+j1KG?;BLONMH=_6e
zcXZ6`^)f5ng6)-BUfxBH3QOfsi~DwQIf^;V>$t}-_!7+QB54C3;v>pOm|>w}qieoj
zhTp@1bp8ky4SWp6hCbgQOcKk{@*qAj@Tp?GE>Ad;=eN3@+OlHcGki{0ijb_D2tlv6
z1?5U$JLxIU<2BXQ=vF)c*YPD$YsgwVUmIA3MQ4&7V%+4+_Uq8-nq*)O!a$*Qo{E{S
z#sjPwu<=m&Z9i`KJrjikR|gd!rP5jUL_v58|9-pcg=9V7eq%tQOeF4$U@OLHx54Z^
zFF@L|Y66T7?E60&Cg3du+*+UI<z_>OF35^!iQBen87JFEZTol_RT-j;PrH^Qed2;y
z5v<9)fv-?wFiNuGi>zZ?>#7Z$+0zDQ)%#W#ApIGaJ}I&e_kBSHI<~Xh>-d)8^8P@#
z3pZp-6`|eqso_u!>3I!WET&p15R0ou8jjRP>C5U6Jx6hjw7N)|q<II8-NWafBQ`wp
z9P!}`&uRJ_dY*;aC+NSEw4wFmB*})7(T!8+qmjO(aHe64#mJVj{?qWUh;5>O6X)tU
zA0Mk@{3(va--%~7@$R#DHa@+H_n)FbYH@nH>zKX2eak{?R!2(;O)dY0v)lESwK~4|
z6LWRs>nL{oLSAn_Slh(93PFPk;SS;?p2Kl%2)$YoCur=`QaG)hN53|Lvot1X9MVQH
zuB9=hUBq2&3@h3t)U*kFuU*CuH2$bv4b#xm2(_683L1~#Q6hXgONVy)AFRaa=zyk&
kP{9U`9aNtx9+Nac@*LgYuW7?KBz;GtN$cvTvP-}J00Rv<G5`Po

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$12.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$12.class
new file mode 100644
index 0000000000000000000000000000000000000000..77734e5ddd08972ea2a7f292b608f8ff1e1dcd3c
GIT binary patch
literal 5053
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
J!g|_Y{|9V+`JMm(

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$13.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$13.class
new file mode 100644
index 0000000000000000000000000000000000000000..cb4acd15a3298732e92d360754df85b466064bc0
GIT binary patch
literal 1559
zcmbVM(M}UV6g|_eU0T+*qM(8z;;L;y7DOZnF+r%tq!=Ou^>Nsau(HfHJKLf!{*#G~
z#s@#Zk22m_)>aZAX8X{&GxyAynS1WpU%!9+1Tc?96B&jlEx*0zN##VXFz5t<ikzb$
zJWws}3eohUAavgRo!8^}X1u|kn>UeV82i9G+~G%&BRWDx&PLEyVztRzkq8-b(Y~kb
zS%#%X%5#<(20Glgce!jbEH*s%Q~!eftJ&LJ9juG@p7bIwkoGfz_oqaXThXbf462g)
zDk%@I?l5H6f~LrW;i82L$mytL!NfoT1}<61V~D}1XlSY7N%5+ExGTbKzUvEyp+?|x
ze}{*jo+pc0U0Q~fw67rnsVvr^)~hZ_EkX4iuQX26v#zCGuI>~tiW?@zNQjhjTDXaE
zl9aoyP|AM9@HxF6)zoj_;GW#%QuxbxOkmQ)ZHCp9PqKSt7VcnxVbE=dAr(ybAVVRp
zaBL28%Q@wxjmKhq^dhZAVJm2du6XY078pI%gfm(!>X^E8{XltgZ$m`;LDRw%rm5BZ
zfH!;l7={yZeJ=N$ttccsX-YltQc4l7`CKWXOgIep{?BD5<`}M?fn_M3^rQ(=d*KZ9
z`TixYlZIx<_o_|;l6B~lmMNFDw}A4Hb{4JZ)jSH6AEamrnRumCo9e=<O?OeOeM9++
z-ipigpCcfQ2Ch(S=@=ypV}wR}CaxtkF9@B{x!PA)-*KIWVi&jiGzFbDUZZGi#Z)85
z@PtZ}+PF((ROcS)dO~U?r0f*Nw-_|u{ljSW7_EfSz<s({1{G9k%#vGcctFu4#WR@2
ULppPwqJ{W$O3-hDP>+%M1N2n2ZU6uP

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$2.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$2.class
new file mode 100644
index 0000000000000000000000000000000000000000..0d5db33f694991d04f7e9bac1f0b6a51fbd78162
GIT binary patch
literal 1134
zcmbVL(M}UV6g@*LTb9+<s#FnV)hca47EohMiN+u#Bt?lBNO*GC4rO3F)9g+`KE=P#
zL;-#91N<oCouv{Uj1S#pXYReZ_sp4d@BI4x<0pW}c<Nw);dv+Owxmh|(~0$g)`<xY
zb-bT+cql|u8XX6lfBmJ@UrP(h^A55Mg*|@2gNUnE@OFDogvP-j!+09yhb9mQLYd%I
zXrxvRnHZr&%rIznWm2A{(;IyrUnh_Ssib+quu$n6rMkh8UDQo61cu8V9OPVNkoPcz
z0z;-^6Y>qI#G7t=Tg31Ab|e^z4IT1mgU8bPy<pZ}ilN>wnesecD$i4?)<nFc<F;rr
zOjH{GRCCEHTd!`oxQS5*w-}!FsilY8_Okg{M4C6xyPd;0!|*$i7#<scB|OSuf?<vf
zUnYJ_OV#p?_T#gJX}_ucBi;26xiU5$YGtJAikB|#;=Y4>3}Z4p3R+zmG$oI8D_GQO
zN5<{fspp}L2Mi9?*&xGY@8aojt(%z6tDi}6F;d-fF^Q^!3WI0y+gz%ENP4JYin=R4
zN<&*^tGdO&sCi@m)03uP-SBXKm3Mk=b=P$_4#l#xjUPQ%=i*zKu?->tmsA+(gm|tB
zv#XmPJu*8)aaR$y6-A@J81W<#349v24E>kD3I#iL^dbl7AA(EKVX~f(ZzFDP>KnY;
z39fuebFR`lNIAe~6lwKR+r>3pCy(I<MtTSzdI+W3S9r%L6~~HqPT_w-E_;fHn-(qu
z3s*#z)?=b^LjEZMd{3cAQUawOG*H4c9ufFVTFFMJJRoxbvzVhjOM^I1yooa<S%&oe
E0pSoWvj6}9

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$3.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$3.class
new file mode 100644
index 0000000000000000000000000000000000000000..69456d1fd626693cb28b6f4752243ad9fb76d0ab
GIT binary patch
literal 2214
zcmbtVZBrXn6n-v=YzRxCv9*dV-D;$~Z<W@*1X0S1rY3+Uf}&M#c5lL#&E2@Wf$~%Q
z1%B>~QuISVX_;w#8~=v?!09-iy9p2~I2}x8@7}jP_nhZE=edvm{^0?Daja@+W4K;(
z>lH@^W?1vRb<YbzbHnr3f*QAku$|EJ&E?(kY&2esK1h#ih%@xu;p^OVxvZEAr8~k3
zHMBFFi)Q&oXo__qLvzXs9Z%+*AQV#g4DI2n6QnQE>A7PbpCKa?j&#CFhKYe=TNzwp
zh);XA=m0~P4h@MUV(8Y<fgXm~fZEWVbEKHBS4+Y#@{%hUQaR7!?h^MMHEvGERZt9>
z<2sWbr=Yrd1l6MO%bs5qHpBUW+@WaBDr7T*OG&(lUJWlXTs<b1I$p+Eh6J}P5d`UR
zhT{J~H0M~G`xM$IPbP^z7#hwqoH=5Pjth8&L92*xo>vLyQv-vI;3I++Lf?^<Oaf`j
zOt2Xw(T@QQ7Z0$ou}Q}uhKM5Kt2%cnDW{ttwh%QlxRSsKLuX-=XjwJNjw=!vW0)#Z
z9;2ZVta^3VHl!CCC1F%O+bKK39y79`L0f2bLmE6VxHQCFUah&p@T9vrmc%8zq2YCg
zvntX`-7#&4yI#f26TrM8W}=Z!MR=JZsq8dn7%sLt+6?&L5U8xbiEA3JGU)1vDtDxr
zwKjEJ#|^@R5X{q5R)$0*s$_;ff^yfHX!n8jOeZEVso^b#-lKQvcpLA~iB0Qsew3u%
z!z@Q@l&YHy#;o$f2v>z6=>x+nH~M13C~;}uFcO%d;=4(GW7-#7NktNKcu&K-#1%#U
zyJoOKsW)#e)YR%CmqJGtx2Rqecv)Gihr0;oTk2)ntJXZJ>ZAq3hEBE4G;z)zLN-O(
zoQ^!^iI?2Am6r^+pDjyAl|s76gS8n^R{BNZq?OVAVN@uKIzGUMBu)Wer|gjst*AmT
z>i9?rQ@1Z%kK237Of+r?N2IsJyZ_P*0((#58+Ddyfu{)u>47f-LNB1>y9yz<*7Cg8
zl)7ZWtNWIiqmm)Q?0M08Ka8ook)yNHa=n0(mlxrxXY2Sf5>~%1iAY&V*TJ;QgFplt
zEQWqXzCGvm#p5Z&7)~67P(zvF%Cmj^6x?L%ApS7uE{M_d99U0}x)SKRY@??GNt*4X
z-enrAndH#$chHCK<HWsa&q-?AX%FxKDQfkopTzSxMI(|SywJ4pC*t%6ibLN*-^Q6O
zoXd}-UfsfLU!yBEoEqJR`3<gZ<I4A-Yaun2nr`35?EL5s;`f^0jErvK{pCFa3sH9q
z1?5W&%9lxWQ~M+N{1bWbkWSwr5<Min-yvQ<BK>@fVS1bRnY8E^itATQ;Wy;)I|}$C
zieaeXXEO%!7)w}=qR8T7d_p*wNMnV1F?>p=okZ*j`ZV-E!D(v$qJv`ij27B(8=uoV
ZPA+@_PQ6}QDbc!3<^=UB^j6@}?;l3Zd5-`9

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$4$1.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$4$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..f65cae498a3d113c1b99028d1295bcd1690fcbc4
GIT binary patch
literal 994
zcmbtTUuzRV5dUrN%$f8wXKJg~*4BE~B#KASml739ji97jsHEWA=CY<+ueafLllZj+
ztKfqlz^~(zK8UktM3CS^T-cqN-I?F~-7h~reFkt34G#r|)-V|jWU3=G%+y#ZZK8?F
z-smBZh3HG8vgq))+|K3w+#tLkHa)lu!7(56DB<ZKdeJ);vGGu3Sj%tu#6)5&QWNdO
zMyj+UwGpYv7>edd>aa=vJ97unV(`X13H!-_VX0$1zK!%mQY6nFOP;6!X%rvGRGLQ&
z2etq3G!wkuWpH;@UzEU5@!{dD<u3Rrp<IT8MIQ^e$l%nhYNaDn@qBdB6WL4NO9Vr;
zqhg+Pc_ytqy>xA57#_|aZP=u|D?G3GzQ|sy>_qe#)@ykd(cevJ+Xl7j-7;2j&BGeQ
z;*3)ISjPrKSqsyZTITV)wO2MVMyag+3!BUi)F_L^6KT_4nK@8*ty7A-oyLjM)Wkhu
zj#S^nEr#v6XT--9tT6abQyRP7gljD{HmFMu?K3C@fo&TQRBhAfUleFBz^B)9#BG!8
z5Un(BpW=Mu&MAV%M^xYCic54BNfG#pWjd`9sp1kY6J^%(6lRBDEO4pu9)a@#SN{N%
u^M`K~!}lCy`Iq7pgiLT9n*`(F1_2Zh;wDiSTd1K<T$S#&h}vb{)A|WBn*;;^

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$4.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$4.class
new file mode 100644
index 0000000000000000000000000000000000000000..835a694ad30cc0d121b2beb9d5941ebd50b6af5c
GIT binary patch
literal 3535
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
KV#&`+^z(nIqy91g

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$5.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$5.class
new file mode 100644
index 0000000000000000000000000000000000000000..ead353dfd78c1a1164a126c1200469f9831a1253
GIT binary patch
literal 1804
zcmbtUQBxCF6#fp0Y*<!^DIyZlwZ@u2%L+=Z4XskZ78;Ni#3|F4%jObRH+$3F4H<rl
zzo5^~RGaBTUpvzu<@DUmqPAkElV)af?>T$+-t&FuJLk_=zx@v279JTGAlz;F?S>ab
zPTUIBky26YbX52>Y6(}$x)-a^d3<88CiYhHL21E2mXLoUj)dcjpy52+e<I!3z#w5N
z@rq9D$RioV&XOB@DyVr;ECU%52IE67D&6GUYkgi{<wF*|z>B{mESCE|rLs%NE~~m6
z0^zI$1342Jj9M5%o{%Z)fYF*4$jx?hUxqtk-<O0!O}WC~6``l?)S1<w2-SX*DJ?Ll
zQISx!CBp+1Hf5b~rCd9e%~j28wX$ns0+R+V67KZLrG+9c5pu$HWfYZe5qACuqczVx
zej}kb;;EXr4BNmJ!iD#QSh$K02}VQ4o1)1)kCiJu@QJ{-<IoEl)f`G(ndmq&@e#@f
zZv0J!y&ww}OtVDfPi^6IQO>6%z9rOZWiN-12_q}gms*~-3_}&>FiR-za4BssmQC9g
zL7-xLU)psYC+j9|V&1?U;gW{YXnRiG6TWIV8_b?)$d$yhxWjG}%;->cdLF`!x3fsm
zyo;~0o5QDEj+4A{_>A!5QYh_X)wZK{y6K1@wqup1Woz--uRHgi{R78#Jm0s|?6pvJ
zcsr=8Ua)G(P-x(@CO*fa0hZrCAuX%mzzdrvkiG!7o8k7H{~6DouKaxqOS-suE^g92
z4?JH6TxAo>ST(RhIH&nMV7H^+J&HZw!UKHGW$aN;7(a!;y$YW{fi(;3_?9q~s(5am
zu-U(iPb&*yxYwP@P-C+Gtuc9=Y{$ZVx*=NWd@#3FJ9MSSMwmQxsLtw6=OM5fxW0;5
z>>DyZRCNp6$utVv0l``ec!n<fB8p@Lo99-BpEIC*UXL#x?F0M_!DR0+?{2fLJ?8Yx
z3s}>?V&r)ebB_N9IR-R>0`D!o=dV7%7_Zzi7*9`lk)E(V{R^xvF8qP)^K|<XQ-y0U
zas3(27G?^cbm9Dr>xG5Foi6S^L-BRgy-XKhJ=SL7S{L8w3^LFe%=5jVF_?57!!(X5
zn&9@n$W1+o3KcQK>nyKxG==+g8Ea%G*^Vce*3)dkwXb1=^WEe#&mc2gyvi3mWMcqZ
T_>R{sYvg<E@J<t>q4Mu9Wv=#l

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$6.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$6.class
new file mode 100644
index 0000000000000000000000000000000000000000..68db5f0d331b70e287cac5a2660bca911726cd22
GIT binary patch
literal 5616
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

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$7.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$7.class
new file mode 100644
index 0000000000000000000000000000000000000000..c974977686519dd0ceb9f4aef9302ab412695501
GIT binary patch
literal 1494
zcmbtUT~8B16g^W4OP9qW2x>tAty+q*sA$C^Nd-(Wg)~v?tHXAL)n&JtnFW3E@A#+~
zLF0ozz#nD2vs5vJr)3^??wyZ2_nbZV{`&pnCxE+Hw2)z#ZwK+FA1YV3WwaATO1ry}
ze5=~r6QbqoNV+fo`YVawNG=pB7P1V5H++Y`bJeaNZo0J%r6u=t&C`AqG7KmoeI7K0
zROG){U1nfU8Tyx^P-!0OCJ$oKP05(S7<%-UuZpvjR6S)@RSL4;hrV89SSY2AGSy_r
zE=4Vo1EFwWqt8Yc1|2vUV(2QF1NpiiiuHJVL&)cRBM=OO^~fW*oIsP`S<D(x4Ar#B
z6e|QOPplG!4Iy7ga$B?*#!GcWy~}sCD|SSv-9y$_j9r~-+8D(p3u6qGlw3NvjB$ou
z?s-C~;vB<=Q!ttu{u=kg1`kD0&0!K(EnH!!rG!-c7tBEs*BEjES304LVe~kmYf-Gk
zA)kiL8xBgCIwFL0+Bgj%$?uD`AGkFs`TM%Bbk)W*Zdtg=Fm%GUgBc^gZZ8mA+Qi1J
zgWG1slA=vCX{s-h;n;B?|0{#Reip^j6Hk02*}{p%J!2jx)vbhH5Gg9{HKDhnmV*b0
z{AEnV?W~5OkV{0M5~T0kKWZ&3Fs!HjLye@nEDPmHzfIleajdoJB_k(qV1g>Ni`qv9
z1$3i_JS*{f2L?>pCN`*S`)TJ4d2@6!L$h6;-bcRt4QKa~Gw0}QZi9WqFxif=DZ&WO
z)68%I7dsJNbs|iZzasw~1-6fldHn$8&f)>wqqu{}QixCJW1lh1_Nc19ByWr)nM`!v
p0Aaa9ec9ldqc=0Shx;^VNqZH{lU1M{la(2hwEB?FRB3*M%pYwbtlt0t

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$8.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$8.class
new file mode 100644
index 0000000000000000000000000000000000000000..2e7f99f0558ba4a534117d46a649eeb8f8603799
GIT binary patch
literal 2316
zcmbtVU31%15Ixs+qFBgn66(-6rIcd8NvPG*Kx`5UiQ__wow#-D(gF{+@*P)1l{Au^
zkQZin;7{-`m}$~Znc)Y(6JIZUz5p-4UtriP%O5T2ixW?*)zxax+1<12ul{}TC4lqz
zKtYV5=vwWTY5RKMdd{}v_<_FTcw4^94I!Fl;CTA=?tMADuZ1sU3knhpGavG8uJfHh
z7u&)P^s3YL#Y&UAf$$hcgWIN`JxeH+Az_v%$g*jh!3Bop+|W^G8w`n((-cWCJfUF(
zqblM^X;5&4A)b>CM=Pc+HrjV?3GXVuWeJAKieqrA!97#nM~4ZS6vNW6WU>WHO1mQq
zRr7@JizdU#T;-rbmSs(sW*aJ|a9qJt#K<&u^>$!ddid-bSsJF1VMv*N$*}{^vDTa&
z`=F5Pw%ZP(kT+GFz)1y9Gb|3-8V%3j6vG%d49Y@wxps&Kb@C50Tk$-;TQU7$NyTYo
z6+FlAWLTbuA8UACHgCkR1ovb<FKWnPwohq+;p4+l8nQ6iDmU#Kw}llZFfT>+62o-V
z<1mSmV_CuoOvk47CXvTk1v<mZp&>P#!^;HbdScrojaj>OA(2G0)){n$^kZthfL9f~
zLhn9SiW(MCpk}m0ASXl8-?Zz7Cj<#@GB?{7am_JFxiYcWG%R76L3QQPs-R`VF#f0~
z1EYDH=^qcQla6Fb;q`zUTUG8xgP00u=nAFBX^14&s)mxp8Vj+?c2lLpvWAONCyFOr
zYD~}_zLI4cTY_9pU|qu{yu*-;w0w@lym=Vq$O?X>`#YxH(l2$TP(@k61{Lc6PrIDf
zJl<+aPI+9`u!&<-x4P5z3~|wv3n_EpF3!t<w7<%>VL3iwRz+~zX=-TTI;}g);RDT&
zRA_OcRu4S#CIu4yx@`-uWN}(ZwB3?D4J&w$VPjZbc0{)(e8V$c`Y~B;2Z2KZm^%0Y
zPSJjj)6WwdAD2s-tP%QGFh=J|vKA1d51`J?@6p#iXrI$v3`gmElzhOx#yHuUw4q`G
zlXNA?;#d^nQzXI&h57qPe}>fDU8wglvyW#x)(c<Y^o{879_IFNCOV(r$N4=JC0;zl
zo08nvH&EEOm|)-0=J_6r?1vD4s)G^X0|mT}3&h}!@NG6h=9@iApOCXmsu&^N#hE@G
z)@MLw*M-cL$a^1a{TgIs&Df7fv7d09{Y<O#7v$NmG_}7C@GACr6(e2@Z}sS0CUTNa
zI;ujC%iH^?^r4Q(MzP<avOh?te-4CC_rj-p;YrI;0~%4bnTP7y&4#L6dlcg@8sEP$
u&Hfp{$n-EW5k?$Wh;$5fT%~J*#`+rGB`ZTbr5NO2o=$I&&rQ0%kJx|VByn2+

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$9.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$9.class
new file mode 100644
index 0000000000000000000000000000000000000000..1f778d193d9a492a4d64ae9646f6fa1c39647048
GIT binary patch
literal 1433
zcmbtUZBG+H5PtSrI9gAsEuuhqQLC1soG6O5Xo84|ra}`8eluCFD=Z$j&EB@?&oWUY
ze((qQql~lHs=*LGluPz@c6N8>nVDzy=dbTS0NlqD7Y;+U6}ER|6#J&7RY$4V_y<aV
zh+8}mqA88i{@Xw6wPf8$E|jV+(hRvh-r;`8qaA-^drt($#UR6EqU8t17ab89e<d(d
zMRge)5edyOXm({>x=Y^ceY&rak!2Z4^ORw^+_#n4Er#@}YKjaP&U<h%ltl`|9x})=
zq{{Zda9u`Xy}iFJ^c%h%3Wj`L1w7p1TH19_nYKYO)cOTes!~wHJV{kU==VzRizdT#
zxqf0c*KB5Mvs+nQ!MKYthNV7p>0tszh9MpVB2LQEI73FeXxm1H{)*Q8ldXC!iz&>w
zm}V#>!5rWAaMfmeAP5E5HlFJqO1Qz0=|Nf`s%)GU(?>r(ki^qh4IYV*Al<^Oi!xQy
zLOQ<dp<)qbwAfc2u@Z(uxXl2IZQg?q!t)o~0>gU$*t+RT8fepK!bc@#U_`RwX?17F
zZmPBp#0zN&Ieub~&fCC<Q)^KWs+erQ7G_s9JuKl7!?{rLX1AG%wwHP|`yYw-GNP7U
z4S5`k*acB^y-%8zy1t%^IMA|156iQ*F)CshJ$VB&)RQS117NwFZB2T%92yy_1HmV0
zk=9m|t;~IeSNVnupOZ5e=|4zk;1rN2*|Rd;Dqw_W3KpY13-5XsrYc|H9pUmJCcDzL
zL)^4de(nf&{#nf<O;*Q{b;dE`OkmO}CLTr;98*0HAi6K$9{EVoLu*kl;sMQR;?F}=
QNy?MXVzS?3(k{dK4K2TzKL7v#

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$MainPanel.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$MainPanel.class
new file mode 100644
index 0000000000000000000000000000000000000000..00ab3f73b10cc9f6dd89a9cd5c749138ed781820
GIT binary patch
literal 8338
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
NxsE=MvQ44l{{aDY%vb;b

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PDBMouseAdapter.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PDBMouseAdapter.class
new file mode 100644
index 0000000000000000000000000000000000000000..568931a0307f2e59ac0d1fed7b9d6b43b1d2be24
GIT binary patch
literal 3884
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
JZ5OT~^j{BU;3WV6

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PluginActionAdapter$1.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PluginActionAdapter$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..28d3069e4cee62fd14d4bf1a349286bab6312d80
GIT binary patch
literal 3356
zcmc&$TXz#x6#h<|bRZ10mQtZ|@e&~omjMwGT7=%vNLnJTMesVEoVL?WX5!2wZM`ds
z_@F<)Kj4cmu4N<o;Nsa=pS&z}slP+~&LpKN6qhSzEwk3->~qdO`|QiN_u1e5_06{c
zj^ZN?EdrxOr!-@`fe{vcuk3k2Xe@aCd{8tkDf4#d`NqYS`A9U+MF*1AVZaJ)&mG8{
z#ZdamBN}1?9dl;cG#t~NG0soTNh{RQCa^17H5WodmZcjS)stB}2&F51fwpkg4w6Tx
zQMQRH^$Bb&n@-XWWg!sQmW{M1g|=f1_`bQM?k7)|;;|gtnwR+uSu<{4E((Z@K>KZ5
z0%x<fwY2J`RsSR>%wT?4PTQ`nypkL=-F)3t30|G@*0z4d`GmmdsixYzu92DMXx%$0
z5F7IHaw7z`>d>%3QQLHEL_$&b>evKbQ9E>O#+C$Hai5NM>=bBCspIWg+m&Ob!j$wU
z%qd3-bY?xvbS6#TR`c3oOaVgRd^25>JVLj(n-OSp(x3MHg3Jr-NmX5TJ32=cQu}%*
z6G&pOhKB{tH4&RS_8}#(!L%$H1j)k!SDTB2-o`@Smp~c^H0&2R))3Nl98}ScTaGmS
z1Prh)(7LVb<erX4aFm(g%Ys)X61Jr>z13LM)ekCU;FylbaGV%2^Nd(`Dsv~B3Y38p
zI!=ON-oTvqO%^c4T@xB5KJzeI@7sh^IIV#R*tx3O%C3$x7$DYNxfrrQtVpO=OT&=B
za6>Lit}O-$3}QsbSv)DA&&Y7dF@s>tEYKrsZypbQ+nu39lE~<I8s}E=!_v9%|KKMA
z%&3krrM^b>mF5ZLa6!W}0(<|Rhjff%g6A1u<s1R0mX(pqYlhbay|&UI$Zrb(O~_$V
z$3;9xkFtW-bhx~Z4o$mp5SMj4j~4_s(P=r~_Ix{B5;#q;dH#%1ECsWScF|sxPGC$s
zW`Q%$FpIX~+f!4XYg~wi5l0qSs8$5fmO;Fv<7K=;$w9s3GpYY1xOY;e%#;ob%t39|
z4924DU|qkgAUUmL2D7V>WM*G$HY6J?z;wzS91ZgV#~T!(j3X>38n&qKuE?Qw9$wW@
z<okJ-Y|-H>r^f=b%-otosH3E+Y`ZTV&&=Oy(%7}IYV7={2aTw(O1@9XR1>YEHmj>T
zop&ahz~=GLwB|?6V)R05cvGNf-L5WrHw6;oUdgxQSzEpFJ-0NhZzB(>^E6__wHz-X
zyhmj?>*aO4hbt_F1+Nsyp=w_yu=|c@dQ|PNywc>)xa=h(GbCGwEo=KRF0AdyxUjYi
z^Nq?y-R+vT7WcE6Y2_D3tfND9JU~aM>UW}%-A**J*I{4X!mk}2<i3a0Fz0cOJ?Z_+
z=u972Mpt^*GP=_{V$0Z`{t7)`L}zyKzl~=Q{~o(Z>xxDX_V8|yegF?vC5r9TL`nQ4
z{UtiD<Dm+ANp<n-uHewc6*`tDwY`Ez)j|c2k9~$y2fs$YzzqzJ9;jgWWQ<#s@Kkl6
zpzMxV1?QCrwX7!3lJQanFY+XV^y$qT)jfF~b_H&YQ&tctD_WtfIK=J`@gI<g|A_AR
zPuLg#8U68JFc|+8m*T&{;k*?89arLi;N$q8k+o^Wltndb6;;Lp?d`{5EYhnjtY>K~
z;WhHTPR=g0++^Pn(;zgw!GN3sPVoM>xYvTW@eaor%h9`dpH!Ou$}zn@pu{w(s~nZQ
P4>=~8NY}`tyv^U=63PXf

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PluginActionAdapter$2.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PluginActionAdapter$2.class
new file mode 100644
index 0000000000000000000000000000000000000000..b5339ddd3074928a83ae7f3df4e19e0f7ce411c0
GIT binary patch
literal 3356
zcmc&$S#ujj5dOy2dShi08^<<@$-yBKSxLN!LkNi-5?=uk*%q;}iMcXfjqSBpyJB}G
z+uRTc;Q@XCe}ETWsKO%fK;@aA!V^aU1ym7wR&pdCp(vp$RJEF(nVz0LzV7Mo{`%%y
z0H^Sgjs}L&oSmPy9N!3Xo?CETKQNYEZ^_RIQ_74LxSlb+J|79^>F_|TGz^%5<vIfy
zkqe|3>(voqXk8QqVc5c%H^yfdr5WgGVmJ`4isitN1?dDv>14|C1L;VQp($9f{Mbp-
zC{;(5`WTuE!j4&i%=!!+sZfi2VA;li=ZRHyKk>9H9@DnWC7DSQYtqTc6$X}MXxX&I
za4BV(s}(O*{1clL{?f3Vvm8r#B{nFWOx08gu1x9HrhdiwB*W+Ny4t+0k;(dK-95z+
z8FDkS84P<kbnH-62S+oain^a;C%B^aaqPnGC>rqqM+^2dG{)8OmXzhlv3zz`dXr+-
zmJDqv*A(`Y@GLbiFGds~7{=@AnpiKny+wqeO-pai^|CU<a424K*=BT(D5UmvPel>K
zVI7Y$T&^QFIgTLCutS)p^!?Zgh8y+8L3eE-?~5XVV>*s9oURG!9LH6(HPe>Di^9N3
z9c0~}ZE}yJ7pEu_JehS1goKWGvbz+Es`^0+892@HIL;7;M1~^P8BcCyQ-LyYmg5{K
z%sVLOJwXLbahHXLiBEYLuJ`T4d0fyz3D{OqZGD&HA_fTSj$8?-K&(rsR!hea!*ES5
zift?gQ4C^);}V`?;PWyVvW4%Di7a_!<INL+XF2oakQkC2&){+eKU6xG{~!E>fEnc&
zQ|jxazS2C3G_L4)mf`Tf^AN`bCh0uIS2>5lE@x%v^0MJoK`*b=2=Yw<AQRG<;+V$s
z<WZ{NWgTX=(V=cP4q}Gm1-!_xlbn|JEZ4JwRfY=$HrJasa(RD&qMfr=r0pAXw#d@V
zHAK!bJZpB=b&M<FFk;Ir6{>XsWXm94=6D6yNU~oo`C|M(3GSX!DKpDqf^tw_5dK)0
z9aPt66eQ<3=CM$LBxUx^dPB0t0!&U>gso$V;Y^JplyL;h$(k+dyC-r;I~T9&$kF?G
zk8I)al+z==C{S)KBH+lYD%;{o+ZCC+O&WDAR5kYh(}PB+F!P>AkSQfvYk5{xb=tNj
z8pE!MK$uITA{V~UI^JaH+P13;-%W<-gq!zFdC5|5eAitKtJ}yPb)JkEaZKCw3ErbJ
zSa35O@8LR?!mOM3<xr_FV>r0wnI2X9>#sENCmre~Lo+0`4!bw@W3;fbBcp|lWtiTm
zblBZ)XlwBxH8YL$X^6D8s*VR}ZBzYDI8wJ0j@0W=U)?}o3tEZ$KB9(cuF=?)IJ$<m
z#IZHBCl0KkGqEqShP{ce(Dg-l<^cUS(HUsp;~>#o(dfb<x*J44gojHK*<R8_N&F=7
zCE9M`ks`W@YNxNWh@R<nI&zJuy+u5x7K(Uc>@%D{{x$j;ZewutSP{eLBD6&ko-Pd}
zD77zA#JCcnmeu4rV!T?!OLUTg^y!`3r9F8IRuN8_Qx@SXD;lA!=%MZp+7F0oKcZ9n
z2}iV_(Xai2LG4#u)qaCb^St&uu4{kbW9`q-+5{rXqO!G$DqxxH?Z*kMkXIY1o+Yq~
z*NE?R;%rC59qJn*I+%_(C?My7vvmJkwAX;Q@eYj<Do5|)eWDWNuQa9C2P82;)D0Sy
Rybo!NQ6k+W9_4NN{SD|Q2Ce`A

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PluginActionAdapter$3.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PluginActionAdapter$3.class
new file mode 100644
index 0000000000000000000000000000000000000000..8a0839f72430fc0fb608f8afb04be866e8378738
GIT binary patch
literal 2535
zcmb_e>r&fR5dMy#k}(PwhbA-uq7pY?(%=w>q^Z-S#E_O^11%Jq^m;5EY=NxfNHQK?
zpwm}K-y$;&W%{EJkcaAYk7NQ2kjXH3Mn1c%)oL%_?&{5d|NILek1ZVuhH}GgRvj<M
zg$-YBOBsZ@mh`uR2DgN;olyF@^?iOW;+LZbGVw8Eg^u)QY~BckpULa!Wa!)E+dSuT
zubNw`YziyXp)m|cQr-%4Vq17&E`GA)1flSR&!B}hC&)~ZN2POgsX&GwI-V0gVptwO
zSIgNohR&k2MHd(@7|@YSp#!}Jy3ohaF|HJPOO7WNoArwDS9!%14C#`zxVy%ENAYc8
zrwX27={z0G<SF=G9u;U=_#4u%3!CBEc<IDS%&DprvTG>};);%s7#7a44hF7bh#|=>
zO9VkC&+x}NSL3XyE2J<2Q^z%i`)3ST1@|$->X{=dWJ`{<bI^DPEl1v6$0s^643|$)
zF>nK840=_Bi@Z(<8yL^VC5~EfCG;JyT1X;Gm<)D;6mH^{j!%#DX{=;m5;?-MB|U1&
zaPCEuyM)TCZNx<8iZ$-9h!;)aS)!1AuFx`N;0~yw`^CM@@cWrlanf8lJw2IK9&F8u
z4b|Z^hcZvNXCJVXylIuZdkoX3B=6k@lK700wkTRje9q8c<en!(vm#7exFQsG5)T<h
zmOOXIY{(#RsG-f46V}WM`C*QFqBT01!XtdC<1xdK@}b&va<;==S<RKH6L?k3Mx22e
zJYh%$HQ9<K3}c5A->&2F%4XM+m}TgR2eRply4>b&5>FWlGrll)WYY|qZKB1!&<tg)
zB}_GT%oz3NhA-=}KzaW-g|G3Aj``z$7p1r1`1O6i7f>Sf5oVO|y`7GbvuI!m%LmB0
z!@$oQIS0$Aok0bP?+mP9mC_w$OU#FYJpb^7bSs2k$C`n4{6OPA;M>$-G}=i#g69T)
zRHMGv7p~;?+davU5ERPLy9O<_*-FT*tuk-4cR*@IHhoJxb<~!)^48elr8}vDq4&*s
zmMa5l>#_)I(l%g$Cc9CW%|H}g$J$bZe&pDoFRT0ebDs3)J=(lQmj{6ebW|B`ykD0P
z*pBuc366Fi!^IemN4^hW(x&X7>jSX9KD99ELnJ|07g8kcCh9KnN|Ktm`5MN=-{^T2
z>GadTMmo?ENE2-+nx49d0XnI6xYV}rrftEV_zT7!F7IJ@7o+L%T}-^ha4fvNi@WLj
zB>5BF=?Ce;9=>>$E~e-9@YPG)YU{*Dc^BWVA2#*<KDUc!%C`<E-zJs!S`uSg3X@tl
za@qw<X+6l(d5_KqS|1j)emv9Cu(W|FhD%YTb~^^Z#!vW}qWFdEbs~|=lkH!LPT)82
gNH&NH1W}`Oe}iyYBkgIT96ARHkehT*<%NF#1F*&S8UO$Q

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PluginActionAdapter$4.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PluginActionAdapter$4.class
new file mode 100644
index 0000000000000000000000000000000000000000..ec27fb5b63c8afee724a9020899cca30af863c54
GIT binary patch
literal 2623
zcmc&${ZbQG6#reIyCJTE@dHG_Eu@-6CAMI##%eL3wI+Z-p{1WUyEn<oW^dfxkl_V7
zeFY!G8H-H+=mYej9M9c^kAQR>hM8t&bMHO(+_S%P&hOl_|GxYC9{`i6>gZx9*4;+M
z@q%nv_vMC^L6~hye?6#kO9<NurJr5hS<go6h3G)CHB4KfBfV*x*F)har*!l%^uOR6
zJnM3=lASNT5LT!|V;G5~ycuT2hVa5{>tw+RLg5LYK?|!+ko=qw6;2RRjtt*-JSTj>
zu#h@Y%jp${p1ib0FBnc6&=HHH8+`_P(a+GGQVM+q#}jjnT1oiJyyOaoL_u2IUE#i?
z)@@;ra-L!SBmpL;$oW1VC1^qTW$D+1&2S}E_+TbxRaSE8l{f}5q~j99vlGmNfy)?X
zh;hpjL6Dqe`16Fbaoo`5;uwXg;|jx_V>+yy`;=k%*dFE51;^UlE4;muBXr~VOh=Mo
z;0P51S8<I&uZVDt*N9=~Q|VTUqY_*SeaEZhVn`DwgUuk0>$s`oMn|2tlnhKDOI)_3
zM@1RVzHD%pSb4e4n8;kd%KatrvLQT6<kD*~P{p3jbI+5ZSrVo#ToDR82FkF%Toq=C
zdv;*TvZ)wu?p`gXb@0f9snn(CZklx&1P&F4*&?q=2SeKPMNMvSR~c(3$}Ib`7QMn8
z^F(uOB97a*qvK14VHK@P!^zqXcV#78B--(cn2A;fzQSFGcu<wimW1KjelOcWI~>OJ
zN(@w1ryr49EobTai{WdA%(O4eP1!JmMtjoaUTB809g|i7R5%{S@etEGzB!CCFTJwk
z*LF}oLY@*!=}^LthPb9mc-FvUJlU%_N>lUL{QS^me>7*4%RE@05oLAlQgn#IgLrD-
zJ3QNibBp1R{|8P|rLF^A5%W6c7_J^sU<dp$uz=@8o`{Y@S!1}DI;wyV96tE=G$m^s
zO9qzlJ++g7Z%_eK>mczcRt@~1T1lTTT*>X-KFq*KYxuwJaiZu_$gTAvueV!Fd`UKZ
zOFVW|6B^pJwZErNsK!9AoAoSL26Sr_MOc-#f!{%5qb3`H$h(fUuKLL6p*~Vn`#Wuf
z^q+dv*z+zA0ztRPnNC*dAQ-nlF5(A*Mz%V0$Z&2U`Y7r68i7fDxtpF(!20`Dd#2Bx
zE_!+qC+R7gP0?CO;+gAz!N|PDnb(odS^C#V2ig!4G&j_oPMyPf8W}F&V%x%-wuQya
z8yMRd*v7~f#uBM5WM1J^;#T5|ZA`sR+)Lcw#)DV5*;1Qn4c~5|u)6=?;?8OdD+)<B
z6p{?R8JdX;+8743aa^KtSW99=ql;fl;jWg(6D@=1+KmY9#mJ|{Hd<g2KVpsW{zSHV
s&^0nic7LXM7k<I7k!%pZp+vJW+Ak6xEz-7WR;F=~h*+UL6#@Fa2XvkuY5)KL

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PluginActionAdapter.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PluginActionAdapter.class
new file mode 100644
index 0000000000000000000000000000000000000000..7e2a3987d56bce0e1bb7655bb7b446262d3a0566
GIT binary patch
literal 6194
zcmc&&dvp}l8UNj6XJ<1R9!3IPAP^<eBoJ2Knh+^TNV}Sl)Icy$TPB+!3~YAR-PwfD
zhkaUV>4Vn3skKT=t5}}dP@`5``T~_!`m`_m(rVxJ^iQSVH?xz>E(_%3<ecW5&Al`C
ze&78bzwa^k%xjN44q!Q6kx?LUOFWwDHDbw-6;GJ`rkS)t17>1ZGOk5*y~nW3L};`7
zyxx9pw+SkoVO_*B%-FgfEpF)v89sqIJGFi-qzzahy<d-6p;j}M)H53de3q8nB~aO7
zL<YwW8atw5Bds^-+l`pPjOzr7B2g`w+@SU80wpar^Qac<4Ru%vBi2hBeBD~CM_~0h
zSynXA_N)^M<MFt_Je$5ZWrQMTU)+qb?CoYe6>ryKdX&!bTRV(o#q|O=woK4w%w!E~
zc9X!_$_aBBr=oS^+?Q*R%iG~%4^(xM4;sxLy$AwVtC)hR3JOuGVj5-&6joMs^2+N}
zNbvJ)wu&MsJe#Yc7%I=^sgMy6nAT#%^bM)LZauM4>yFw!HzQiKQ%e~9oO$VEUkJ2L
z)Q0)cOWslY7_5y^BeF{;NX@Hsw9NtYdd78KRi}c5sFd+~fnYw&+uKxBp_)M4t6L2z
z%Q9oOLBa|aV~LC!fraA>1Qj6=^a2zZJz-1l6WEdw&KnF>6LWb5bM%CSf@N4CW4XY}
z@ky5hAr&jJii9PlnKL<RR%MlA%9Le9L+cU=ZLq~iT6GF;K&^}$2{^V1vzJxWVU2)H
zI_taJwhNScb#Ck4sYl2UVHp%pORpT08x1R}_t-Jrs>f0?-avxoCX|Mh5$(|v0W^>T
zPL8WBSFjdMjOX<^GGvlaRc8Qi6c9@kgmH_En+2xlGFH)oR)J#5W>z?_LM}5xM;L7?
z+VN&WPBPV<v{M})9nP51>vR^bL&ZjHqV%H0<2q-<8n2~X#uvqIMp<&hT5MKv8@fno
z%XIb&%y7MyeOx`76x8D_DsIPH1*VXjo6UsYn=n&+bcsvFVbf?v%>?n^hHe>JCQ^2X
zk^_{xLk(tvOx>(SsLBkgh=8cCiX?Q+(pxpl(w%jIRh41-8;eDUsbdP4SGUb8<e{Te
z>#<!$udNjc*`jspQ3VEe$=FHBhp~OBe6J!33NqQ&EoPBiUagu<N&pH>+#!QX$CT0V
z=LHoB5abn7&FI(p4co-^92+G=z6~iA{TQHSM`;J3uGV)rF3eHTS*^Rsm33YN*$0fv
zUfv^ZgOMNh;O&`=W!qGsETemVQP{cfRPip{Nr-V2Y2*q@U~pC0dPP<8v(D?{Z05Gm
z?@{qyypMy0(riZPO!B@2V>@|&K*e47Amttg2UQvFIND+zq=Qa*It$0`reV9h9v@P1
zH$F^(OlP@7#3B=K>|SSYRi})PP|PwmTp@1eyu&FmfR7QlTFrjFd{bP(J~YYr1l6-E
zC$VuiV--sk?8iNvwLT?qc*5;Q-cspcD?3})g(s)_aADnt&#3q;K1Xq<_4GJRCKn7n
zrY8ih^%&b}GP8HswRs=DpyB|&NRddMS|8)?f%1#5atj|&k1wgX4_~HoOa};DpN-H_
zN7ZFRaO`~m4-npL4>p+tF&ST(WcMvoa1i%!f&7|^uX7XOOB#Fh03M>Mb*tXT*m3Gp
z`Syg_SI%9qjE5&#iscFp;|PQ3s6hMVf{3f;aSEi2GTfKTI627*tWa<QN4QlRR&fg7
zq$ZD|-OeH0;tS05Cic<ylvWmEM8%`F;fdlle(|`9Z@DkJ7(`F1_%^=7uGwKy9uIne
zImRj+<`!8{FFR)}Cwo4QoPLrF5pfz%r@w2SoM;k|45tSx%^S4Tsd$dH8xxW>Ok{EX
z_z_q>jvhOwv!YIVs>RLLChBt%QR?Vj)!jtc?NsYbF|)fOs?BcdzQ&d`XKz-eqM&B2
zIQ%w|jI*)`#)6cb?QY{BC0+TkNssE5?!*pBI`)bYNPyt1KK8*e7<WH9ZqH}HHIw6}
zo5*HUIxH=+t5u8JA2~99CD1gX{yV3im+_mN#w*MGGJYp8-&>|K%U+99U#LYQdeZ&?
zzH5^6z{E^Q7IS4<DlqW>k;x;(G68L}g~<Jg@Ek{9XL~36xCyo&B$d)(rV<go+2Bw1
z*?F6kC9DiZWH?4eypb<;^rVcxQS@E{<P@9Pw?XtG`|^ffgzbQK?~7#on{I+8s0MX$
zPEyFa)IvF3PZZLPnS=tq!Jt_I-&NQn-DB7z-C_XKr}NzhJ^P7b8m80#tLW)&+Rs$w
z)r*EuQay|r)r*HPtGZ?g!RnxI2y?1~(h$my*_`In|9Qk8(osm#5fn+sFjYE^tECeN
zN+&U&wwBYL6(kGs#5K5<MxL>31@?@kVu{Q7b_G6r#u7^qSbz%pPjVG1bP7o=+7_j8
zo&P=&u0BapokUq0i&|+6rm=KG&EhmxukwwczH0<)yGqs#qmlRUucSGRH~F@uu_29H
z)94(=mRiYISXda8(%5<mZ>#kO{XEwtAMKx$#tvT^vCOJfD+eW>?+(hR@QyUz9h69t
z_ouOU1pB&5K01t#*9L-t5$x}(t||2`9>yor_;fH(>bn=R?+|>2X?&ho1k$*7vrTe8
zlN1GuMsUz2`6`nXmHKMZIOOZOKZ~$vl<+|&RD#L~4tJ4*zQIINP#Il6#_Pqw;t`zS
z^&w}ynAdHg(<JyK^m{CgC)kZXup48TLvDNw0qF_Mke<X`=`<EdXV5C0#a8JlM5L!-
z(KskQgT2x@?3bR!0qHy*mR`W4(u+7Py@Yep%XnUT75|l9!>fKF0{#L~>Ypjf{6SIa
zpDkAUmxy|QNNn&gwPCTxaj6Rn(T3CbE;)RLsKxj2eFDf_u?#=J4+$U(#3G!*S(3I@
z2t0+S2_ReX3ZB6^g3=&<iXY*}1d;<dj%RV60CWy_;wLmK5&<;R`gtg#lKP^b(X1Fh
zC!JL~%Q@i}biyy`%>$4wP~%l3L&#Vt<2e~O(5zm@uVwsJrdFSx_FbTzm)TN4Tf_yd
zhH^<ZUQU<am0`9OG+~)2aszlCzjxvS*U>0Q9EoG#C`}4%Z*ovWI&52+!i-4%fIsFT
znUzcOpoip7_;VhTvRsmfJR~pR#XKY>xg>{N5)$_>w$Lx(Wf~jEZHw_&{GFIAquD=b
de2!-Sq*35s_z&&bPe1-U=nT~HJAWsf;eR1CN`e3Y

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PluginDescriptorButton.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$PluginDescriptorButton.class
new file mode 100644
index 0000000000000000000000000000000000000000..a6a5d45cd754b6545ee9d50538129398df487306
GIT binary patch
literal 5981
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
SSx7%7wu<@GC+N8VdH(|{|8hnE

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$SizeButton.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin$SizeButton.class
new file mode 100644
index 0000000000000000000000000000000000000000..aa94a0cd77de14907896b9843d38d21e0a94abd7
GIT binary patch
literal 2973
zcmb_eS##4?6#lLwMTt=$3xN<45UEQYLs8h50D&xkQ-`G31VW+Z#=c2JWXYA}EOakj
z=<+|9>03KsI_*rKJN*a!6P@WcZC_~5m7T<)q|*s_M%F!dIrsa{svjPG^BsVL_*_GT
zp}$}kr!B`fgM#PIxvn3W^R74R7kE~PoE5m9d1Xl+3gxlzKrC(D7X8H_a2*W_L(45b
z#}`b0-g2hR;iZLIhEBO)^7+6NbHWMCv)RCMos{JV!Vw-rqc1#*+vCFXY5sC@kbw;|
zGz_?oA8;oa=XO!3gjoI<gAyzj1no&O)L21|;atkfF0O!Hfg8(ke|AtzS&k*IjP-LT
zS0yF`kzWye8ES(W%a8Ri98ay&C{oEudEIG-JMndEc{YTS-Q#4f0XHY=!LUU~BbuV9
zL7R?dY$NN%yT|3qb{#qz<fv1}Mr?}GXr~SXyBIWI1k%wAYCK5_<=S&PV)A@6JHwr6
zk<7Y|oZhYD1;iPecrN$2kGtZj|BQlO33XG-a>T`Aeo}ZDK55gP%_%oak-;fGNUlsO
z(n}13>$PrG;F7yG@h}|6gg51Sc|qZ{a}BIRGI|MUJ$i6J!+wTd*PAvAMSq4uzF;i~
z+c&3do+rsQdBHM0YjV<c%uC^G$QF50Fy>jVX9bHoCEy|QL2C30!>QC$XzGpP2##qu
zN;Y{GiJ;>+PB3gB&o6;xI1_&=h-Ist)Nx9Zt{oW~OkN(5hV0XECbUClbS#Q~3~Cr)
zIJ(aC(=mi|40Sx46}}%k$dFlo5_YeZg=Fvx7}h`qXzLmV*YOfklzcv)qcEmKyG8={
zrm41cJUJ7}(M4r19q{bz2rq=uE=}^Xj!Q_dusXtU>1kM1*Xd-QmlK#cF<jO$4hlz^
z^fId%TFbexRMzDrWk4M!D9uM5d(q&ApXau1Sd}91ijM2J!LX53WL($IScQyO2$nUO
zHkAxB9e9)^q)GC7O~=h@en;yt$*?QEtk<BjZ8$tH40p;1W`t3W4tX}GLsXwVR)=Xi
zn<7(-5YrlG>tSJ5!!7DQVO=VtTBMeg*I^@1K68r_b=g^#Yf>sW0pS)r->bnT*H;}3
z>GT&ZJ14w4yiUFnp67bT2_p&zzO1)5<fy1)4)c@%yigDh)tZiYvb%gmm0c=|$R!S_
zPTa;Dq%d&HMq}6<|MwBv`xf5O@OGsSo2wD)cvm__D@YPH`8Aq$i(Xcovt*TRe`0^%
zC;2hxNr$@hfX#hh_!>T>I=@EDKh|w223EIU4R;w1|G&eJwQAC}x_8sW>h3KmEq{+t
z>mmozqe4MDG}O_!p1vL;h|)hbJNYRgTOH8YDBB`Qa(^>g=zlXwcS%<0ok;9?fY!uA
zY)#ZWKzpK7{_TB$jzpu;Xq2#nmbwy&5}yB(c1O@n|GVW~$}dorpHZ*;gpJCtXi<Jc
zoANsh<qyP^KhdrHg#_(2=pMQSd$5<@awJhj!jZ%&QN4(L6;$67Cb^bNBqr{oUAcLU
z;M5i*CKA7p3eXq+ODw>4dgAmPrsa;WV3u(BUbvTp-cV>Lubd_!WO5&^U*l{E=dVaU
zH6fpbw3_k=P0HWsQ6o5^*5H(?;=EdmVYLn!bpx)dI<jg*$Z1O%<1(ilMsSfBjFQG$
zC_TDfPdn%nqQdG&V#R1}ZiNJ{k}Q9cMF%}S^b96w1Hl_BA(LpnTEew^%X6=Wb3B~u
zsqD*!b5r3Q5uW)L&O~$JAv}3c2|)=9CA_)9^8iH#)Fv3}X6#X0v0vSSLuwoP)NL42
z+i^kdKw9m@gt`OQRRcw}E99$}(O39NmKs!}rKP2f;J-&=1n=Vxy}O9$2h=-0q5~h(
S=o5M$q0y)GrVnv^hR8pUjxAIG

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin.class b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin.class
new file mode 100644
index 0000000000000000000000000000000000000000..7654e0fbaac9fa5f5d3bd1a1298cb8d2036499d8
GIT binary patch
literal 18457
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
b#nAMK!H5m)MlL|956_`2z>2R!SxEB#A>HN?

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin.java b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin.java
new file mode 100644
index 0000000..3af615c
--- /dev/null
+++ b/src/main/java/plugins/tprovoost/workspaceeditor/WorkspaceEditorPlugin.java
@@ -0,0 +1,1587 @@
+package plugins.tprovoost.workspaceeditor;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.GradientPaint;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.GridLayout;
+import java.awt.Image;
+import java.awt.Paint;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.RenderingHints;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.FilenameFilter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedList;
+
+import javax.swing.AbstractAction;
+import javax.swing.BorderFactory;
+import javax.swing.Box;
+import javax.swing.BoxLayout;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JSplitPane;
+import javax.swing.KeyStroke;
+import javax.swing.border.Border;
+import javax.swing.border.TitledBorder;
+
+import org.pushingpixels.flamingo.api.ribbon.RibbonElementPriority;
+import org.pushingpixels.substance.api.ComponentState;
+import org.pushingpixels.substance.api.SubstanceColorScheme;
+import org.pushingpixels.substance.internal.utils.SubstanceColorSchemeUtilities;
+
+import icy.common.Version;
+import icy.file.FileUtil;
+import icy.gui.component.IcyTextField;
+import icy.gui.component.IcyTextField.TextChangeListener;
+import icy.gui.component.PopupPanel;
+import icy.gui.component.button.IcyButton;
+import icy.gui.dialog.ConfirmDialog;
+import icy.gui.dialog.MessageDialog;
+import icy.gui.frame.IcyFrame;
+import icy.gui.util.ComponentUtil;
+import icy.gui.util.GuiUtil;
+import icy.main.Icy;
+import icy.plugin.PluginDescriptor;
+import icy.plugin.PluginLoader;
+import icy.plugin.abstract_.PluginActionable;
+import icy.preferences.WorkspaceLocalPreferences;
+import icy.resource.icon.IcyIcon;
+import icy.util.EventUtil;
+import icy.workspace.Workspace;
+import icy.workspace.Workspace.TaskDefinition;
+import icy.workspace.Workspace.TaskDefinition.BandDefinition;
+import icy.workspace.Workspace.TaskDefinition.BandDefinition.ItemDefinition;
+
+public class WorkspaceEditorPlugin extends PluginActionable
+{
+
+    // -----
+    // GUI
+    // -----
+    private JPanel panelPluginsCenter = new JPanel();
+
+    /** Panel containing the combo boxes and the {@link PopupPanel}s. */
+    private JPanel panelWorkspace = new JPanel();
+    /** Contains the method for the drag'n drop */
+    private MainPanel mainPanel = new MainPanel();
+
+    /** Current workspace in use. */
+    private Workspace currentWorkspace;
+
+    /** Reference to the IcyFrame. */
+    private IcyFrame frame;
+
+    // PREFERENCES
+    // private XMLPreferences prefs = IcyPreferences.pluginRoot(this);
+
+    /** Used for the drag'n drop: contains all the selected plugins. */
+    private ArrayList<PluginDescriptorButton> _selectedPlugins = new ArrayList<WorkspaceEditorPlugin.PluginDescriptorButton>();
+    private ArrayList<PluginDescriptorButton> listInstalledPlugins = new ArrayList<PluginDescriptorButton>();
+    private String minNamePlugin = "";
+
+    // -----------------
+    // IMAGES RESOURCES
+    // -----------------
+    private ImageIcon smallButton = new ImageIcon(
+            getImageResource("plugins/tprovoost/workspaceeditor/images/sqBtnSmall.jpg"));
+    private ImageIcon mediumButton = new ImageIcon(
+            getImageResource("plugins/tprovoost/workspaceeditor/images/sqBtnMedium.jpg"));
+    private ImageIcon largeButton = new ImageIcon(
+            getImageResource("plugins/tprovoost/workspaceeditor/images/sqBtnLarge.jpg"));
+    private Image minusWorkspace = getImageResource("plugins/tprovoost/workspaceeditor/images/minusWorkspace.png");
+    private Image plusBand = getImageResource("plugins/tprovoost/workspaceeditor/images/plusBand.png");
+    private Image plusWorkspace = getImageResource("plugins/tprovoost/workspaceeditor/images/plusWorkspace.png");
+    private Image imgHelp = getImageResource("plugins/tprovoost/workspaceeditor/images/WE_Help.png");
+
+    private JSplitPane splitPane;
+
+    private JButton btnProperties = new JButton("Properties");
+    private TextFieldFilter tfFilter;
+
+    @Override
+    public void run()
+    {
+        if (!Icy.version.isGreaterOrEqual(new Version("1.1.4.0")))
+        {
+            MessageDialog.showDialog("Icy Version", "This plugin must be run under version 1.1.4.0 at least.");
+            return;
+        }
+
+        // -------------
+        // PANEL PLUGINS
+        // -------------
+        final JPanel panelPlugins = new JPanel(new BorderLayout());
+        panelPlugins.add(new JLabel("Installed Plugins"));
+        panelPluginsCenter.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
+        panelWorkspace.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
+
+        // filter bar
+        tfFilter = new TextFieldFilter("");
+        tfFilter.addTextChangeListener(new TextChangeListener()
+        {
+
+            @Override
+            public void textChanged(IcyTextField source, boolean validate)
+            {
+                String filter = tfFilter.getText();
+                panelPluginsCenter.removeAll();
+                loadPlugins(filter);
+            }
+        });
+
+        // plugins in a container separated by letters
+        loadPlugins("");
+
+        JScrollPane scrollpane = new JScrollPane(panelPluginsCenter);
+        scrollpane.getVerticalScrollBar().setUnitIncrement(16);
+        panelPlugins.add(scrollpane, BorderLayout.CENTER);
+        // ---------------
+        // PANEL WORKSPACE
+        // ---------------
+        loadWorkspace("sys");
+
+        // PANEL RIGHT
+        JPanel panelWorkspaceWithLayout = new JPanel(new BorderLayout());
+        JPanel panelOperations = new JPanel();
+        panelOperations.setLayout(new BoxLayout(panelOperations, BoxLayout.X_AXIS));
+        panelOperations.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
+        IcyButton btnReload = new IcyButton(new IcyIcon("rot_unclock.png", 24));
+        btnReload.setToolTipText("Reload Icy");
+
+        btnReload.addActionListener(new ActionListener()
+        {
+
+            @Override
+            public void actionPerformed(ActionEvent e)
+            {
+                reloadWorkspace();
+                if (ConfirmDialog.confirm("Restart Icy", "Icy is going to restart, do you want to continue?"))
+                    Icy.exit(true);
+            }
+        });
+
+        final IcyButton btnNewBand = new IcyButton(new IcyIcon(plusBand, 24));
+        btnNewBand.setToolTipText("Click to create a new band for the current workspace");
+        btnNewBand.addActionListener(new ActionListener()
+        {
+
+            @Override
+            public void actionPerformed(ActionEvent actionevent)
+            {
+                String workspaceName = currentWorkspace.getName();
+                if (workspaceName.equals("sys"))
+                    MessageDialog.showDialog("System file",
+                            "This file should not be modified. It is shown as an example only.");
+                else
+                {
+                    String response = JOptionPane.showInputDialog(Icy.getMainInterface().getMainFrame(),
+                            "Enter the name of the new band: ", "Band Creation", JOptionPane.QUESTION_MESSAGE);
+                    if (response == null)
+                        return;
+                    currentWorkspace.addBand(workspaceName, response);
+                    currentWorkspace.save();
+                    reloadWorkspace();
+                }
+            }
+        });
+
+        final IcyButton btnNewWorkspace = new IcyButton(new IcyIcon(plusWorkspace, 24));
+        btnNewWorkspace.setToolTipText("Click to create a new workspace here.");
+        btnNewWorkspace.addActionListener(new ActionListener()
+        {
+
+            @Override
+            public void actionPerformed(ActionEvent actionevent)
+            {
+                String response = JOptionPane.showInputDialog(Icy.getMainInterface().getMainFrame(),
+                        "Enter the name of the Workspace: ", "Workspace Creation", JOptionPane.QUESTION_MESSAGE);
+                if (response == null)
+                    return;
+                Workspace ws = new Workspace();
+                ws.setName(response);
+                ws.addTask(response);
+                ws.save();
+                loadWorkspace(response);
+
+                // Create info dialog
+                final JDialog dlg = new JDialog(Icy.getMainInterface().getMainFrame());
+                dlg.setLayout(new BorderLayout());
+
+                // label used as image
+                JLabel lbl = new JLabel(new ImageIcon(imgHelp));
+                JPanel panelImg = new JPanel(new GridLayout());
+                panelImg.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
+                panelImg.add(lbl);
+
+                // south button "OK"
+                JButton okbtn = new JButton("OK");
+                okbtn.addActionListener(new ActionListener()
+                {
+
+                    @Override
+                    public void actionPerformed(ActionEvent e)
+                    {
+                        dlg.setVisible(false);
+                    }
+                });
+
+                // setup everything
+                JPanel panelSouth = new JPanel();
+                panelSouth.setLayout(new BoxLayout(panelSouth, BoxLayout.X_AXIS));
+                panelSouth.add(Box.createHorizontalGlue());
+                panelSouth.add(okbtn);
+                panelSouth.add(Box.createHorizontalGlue());
+                panelSouth.setBorder(BorderFactory.createEmptyBorder(8, 4, 8, 4));
+
+                dlg.add(panelImg, BorderLayout.CENTER);
+                dlg.add(panelSouth, BorderLayout.SOUTH);
+                dlg.pack();
+                dlg.setLocationRelativeTo(Icy.getMainInterface().getMainFrame());
+                dlg.setVisible(true);
+            }
+        });
+
+        final IcyButton btnRemoveWorkspace = new IcyButton(new IcyIcon(minusWorkspace, 24));
+        btnRemoveWorkspace.addActionListener(new ActionListener()
+        {
+
+            @Override
+            public void actionPerformed(ActionEvent actionevent)
+            {
+                if (currentWorkspace == null)
+                    return;
+                if (currentWorkspace.getName().equals("sys"))
+                {
+                    MessageDialog.showDialog("Deletion error", "This item cannot be deleted");
+                }
+                else if (ConfirmDialog.confirm("Deletion",
+                        "Are you sure you want to delete this workspace? You will not be able to undo this operation."))
+                {
+                    FileUtil.delete(currentWorkspace.getLocalFilename(), false);
+                    loadWorkspace("sys");
+                }
+            }
+        });
+        btnProperties.addActionListener(new ActionListener()
+        {
+
+            @Override
+            public void actionPerformed(ActionEvent e)
+            {
+                PropertiesDialog dlg = PropertiesDialog.getInstance();
+                dlg.initGUI(currentWorkspace);
+                ComponentUtil.center((Component) dlg);
+                dlg.setVisible(true);
+                if (dlg.changed() && !currentWorkspace.getName().contentEquals("sys"))
+                {
+                    String currentName = currentWorkspace.getName();
+                    if (currentName.contentEquals(dlg.getWkName()))
+                    {
+                        currentWorkspace.setDescription(dlg.getWkDescription());
+                        currentWorkspace.save();
+                        boolean enableWorkspace = dlg.isWorkspaceEnabled();
+                        if (enableWorkspace && (currentWorkspace.getTasks() == null
+                                || currentWorkspace.getTasks().get(0).getBands().isEmpty()))
+                        {
+                            MessageDialog.showDialog("Empty Workspace", "Impossible to enable an empty workspace.");
+                        }
+                        else
+                        {
+                            WorkspaceLocalPreferences.setWorkspaceEnable(currentName, enableWorkspace);
+                        }
+                    }
+                    else
+                    {
+                        HashMap<BandDefinition, ArrayList<ItemDefinition>> hashmap = new HashMap<BandDefinition, ArrayList<ItemDefinition>>();
+                        String localFilename = currentWorkspace.getLocalFilename();
+                        TaskDefinition task = currentWorkspace.getTasks().get(0);
+                        for (BandDefinition currentBand : task.getBands())
+                        {
+                            hashmap.put(currentBand, currentBand.getItems());
+                            task.removeBand(currentBand.getName());
+                        }
+                        currentWorkspace.addTask(dlg.getWkName());
+                        TaskDefinition taskNew = currentWorkspace.findTask(dlg.getWkName());
+                        for (BandDefinition bd : hashmap.keySet())
+                        {
+                            taskNew.addBand(bd.getName());
+                            BandDefinition bdNew = taskNew.findBand(bd.getName());
+                            for (ItemDefinition def : hashmap.get(bd))
+                            {
+                                bdNew.addItem(def.getClassName(), def.getPriority());
+                            }
+                        }
+                        currentWorkspace.setName(dlg.getWkName());
+                        currentWorkspace.setDescription(dlg.getWkDescription());
+                        currentWorkspace.save();
+                        File f = new File(localFilename);
+
+                        // Make sure the file or directory exists and isn't
+                        // write protected
+                        if (!f.exists())
+                            throw new IllegalArgumentException("Delete: no such file or directory: " + localFilename);
+
+                        if (!f.canWrite())
+                            throw new IllegalArgumentException("Delete: write protected: " + localFilename);
+
+                        // If it is a directory, make sure it is empty
+                        if (f.isDirectory())
+                        {
+                            String[] files = f.list();
+                            if (files.length > 0)
+                                throw new IllegalArgumentException("Delete: directory not empty: " + localFilename);
+                        }
+
+                        // Attempt to delete it
+                        boolean success = f.delete();
+
+                        if (!success)
+                            throw new IllegalArgumentException("Delete: deletion failed");
+
+                        reloadWorkspace();
+                        WorkspaceLocalPreferences.setWorkspaceEnable(currentWorkspace.getName(),
+                                dlg.isWorkspaceEnabled());
+                    }
+                }
+            }
+        });
+
+        // Add the buttons to the south panel
+        panelOperations.add(Box.createHorizontalGlue());
+        panelOperations.add(btnNewWorkspace);
+        panelOperations.add(Box.createHorizontalStrut(5));
+        panelOperations.add(btnRemoveWorkspace);
+        panelOperations.add(Box.createHorizontalStrut(5));
+        panelOperations.add(btnNewBand);
+        panelOperations.add(Box.createHorizontalStrut(5));
+        panelOperations.add(btnReload);
+        panelOperations.add(Box.createHorizontalStrut(5));
+        panelOperations.add(btnProperties);
+        panelOperations.add(Box.createHorizontalGlue());
+
+        // add the components to the right panel
+        panelWorkspaceWithLayout.add(Box.createGlue(), BorderLayout.CENTER);
+        panelWorkspaceWithLayout.add(panelWorkspace, BorderLayout.NORTH);
+
+        // Restart info.
+        JLabel lblRestartIcy = new JLabel(
+                "<html><b>In order to make any change visible, do not forget to reload Icy.</b></html>");
+        JPanel southPanel = new JPanel();
+        southPanel.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
+        southPanel.add(lblRestartIcy);
+
+        // set the main panel
+        JScrollPane rightScrollPane = new JScrollPane(panelWorkspaceWithLayout,
+                JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+        rightScrollPane.getVerticalScrollBar().setUnitIncrement(16);
+
+        JPanel panelRight = new JPanel(new BorderLayout());
+        panelRight.add(panelOperations, BorderLayout.NORTH);
+        panelRight.add(rightScrollPane, BorderLayout.CENTER);
+
+        JPanel panelLeft = new JPanel();
+        panelLeft.setLayout(new BorderLayout());
+        panelLeft.add(tfFilter, BorderLayout.NORTH);
+        panelLeft.add(panelPlugins, BorderLayout.CENTER);
+
+        splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panelLeft, panelRight);
+        splitPane.setDividerSize(6);
+        splitPane.setContinuousLayout(true);
+        splitPane.setResizeWeight(0.7);
+        splitPane.setDividerLocation(0.7);
+        mainPanel.setLayout(new BorderLayout());
+        mainPanel.add(splitPane, BorderLayout.CENTER);
+        mainPanel.add(lblRestartIcy, BorderLayout.SOUTH);
+        // mainPanel.add(panelNorth, BorderLayout.NORTH);
+        mainPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
+                "unselect");
+        mainPanel.getActionMap().put("unselect", new AbstractAction()
+        {
+            /** */
+            private static final long serialVersionUID = 1L;
+
+            @Override
+            public void actionPerformed(ActionEvent e)
+            {
+                mainPanel.lastEvent = null;
+                _selectedPlugins.clear();
+                mainPanel.repaint();
+            }
+        });
+
+        // set the frame
+        frame = new IcyFrame("Workspace editor", true, true, true, true);
+        frame.add(mainPanel);
+        frame.setSize(new Dimension(640, 480));
+        frame.addToDesktopPane();
+        frame.center();
+        frame.setVisible(true);
+    }
+
+    /**
+     * Load all the actionable plugins in Icy into the {@link #panelPluginsCenter};
+     * 
+     * @see {@link PluginLoader#getActionablePlugins()}
+     */
+    private void loadPlugins(final String filter)
+    {
+        int cpt = 0;
+        char actualLetter = '?';
+
+        // ----------------------------
+        // Listener for multi selection
+        // ----------------------------
+        MouseAdapter multiSelectionListener = new MouseAdapter()
+        {
+
+            @Override
+            public void mousePressed(MouseEvent e)
+            {
+                if (!EventUtil.isControlDown(e))
+                    _selectedPlugins.clear();
+                mainPanel.previouslySelectedPlugins = new ArrayList<PluginDescriptorButton>(_selectedPlugins);
+                mainPanel.pointBegin = e.getLocationOnScreen();
+            }
+
+            @Override
+            public void mouseReleased(MouseEvent e)
+            {
+                mainPanel.previouslySelectedPlugins.clear();
+                mainPanel.previouslySelectedPlugins = null;
+                mainPanel.pointBegin = null;
+                mainPanel.pointEnd = null;
+                mainPanel.repaint();
+            }
+
+            @Override
+            public void mouseClicked(MouseEvent e)
+            {
+                _selectedPlugins.clear();
+                panelPluginsCenter.repaint();
+            };
+
+            @Override
+            public void mouseDragged(MouseEvent e)
+            {
+                mainPanel.pointEnd = e.getLocationOnScreen();
+                mainPanel.mouseDragged(e);
+            }
+        };
+
+        // Create GUI
+        // Create an item for every plugin descriptor
+        for (PluginDescriptor pd : PluginLoader.getActionablePlugins())
+        {
+            String name = pd.getName();
+            if (!name.toLowerCase().contains(filter.toLowerCase()))
+                continue;
+            char pluginFirstLetter = name.toUpperCase().charAt(0);
+            int sizename = name.length();
+            if (sizename > minNamePlugin.length())
+                minNamePlugin = name;
+
+            // if the first letter is different, the new letter is written
+            if (actualLetter != pluginFirstLetter)
+            {
+                actualLetter = pluginFirstLetter;
+                JLabel lblLetter = new JLabel("   " + actualLetter);
+                lblLetter.addMouseListener(multiSelectionListener);
+                lblLetter.addMouseMotionListener(multiSelectionListener);
+                panelPluginsCenter.add(GuiUtil.besidesPanel(lblLetter));
+                ++cpt;
+            }
+            PluginDescriptorButton pdb = new PluginDescriptorButton(pd);
+            panelPluginsCenter.add(GuiUtil.besidesPanel(pdb));
+            listInstalledPlugins.add(pdb);
+            ++cpt;
+        }
+        // Add the refresh button
+        IcyButton btnRefresh = new IcyButton("Refresh Plugin List", new IcyIcon("rot_unclock.png"));
+        JPanel panelButtonRefresh = new JPanel();
+        panelButtonRefresh.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
+        panelButtonRefresh.setLayout(new BoxLayout(panelButtonRefresh, BoxLayout.X_AXIS));
+        panelButtonRefresh.add(Box.createHorizontalGlue());
+        panelButtonRefresh.add(btnRefresh);
+        panelButtonRefresh.add(Box.createHorizontalGlue());
+        btnRefresh.addActionListener(new ActionListener()
+        {
+
+            @Override
+            public void actionPerformed(ActionEvent e)
+            {
+                _selectedPlugins.clear();
+                panelPluginsCenter.removeAll();
+                loadPlugins("");
+            }
+        });
+        // add space in case there is a too big space below
+        for (; cpt <= 10; ++cpt)
+        {
+            panelButtonRefresh.add(new JLabel(""));
+        }
+        panelPluginsCenter.setLayout(new GridLayout(cpt + 2, 1));
+        panelPluginsCenter.add(panelButtonRefresh);
+        panelPluginsCenter.revalidate();
+        panelPluginsCenter.repaint();
+    }
+
+    /**
+     * Reload the current workspace.
+     */
+    void reloadWorkspace()
+    {
+        if (currentWorkspace != null)
+            loadWorkspace(currentWorkspace.getName());
+    }
+
+    /**
+     * Load the workspace <code>workspacename</code>
+     * 
+     * @param workspacename
+     *        : name of the {@link Workspace}. Can contain the .xml
+     *        extension.
+     */
+    private void loadWorkspace(String workspacename)
+    {
+        // -------------------
+        // Create the ComboBox
+        // -------------------
+        File workspacesDir = new File("workspace");
+        if (!workspacesDir.exists() || !workspacesDir.isDirectory())
+        {
+            return;
+        }
+        String[] files = workspacesDir.list(new FilenameFilter()
+        {
+            @Override
+            public boolean accept(File file, String s)
+            {
+                return s.endsWith(".xml");
+            }
+        });
+
+        // Create the list used as model for the combo box
+        String[] cbModel = new String[files.length];
+        System.arraycopy(files, 0, cbModel, 0, files.length);
+        for (int i = 0; i < cbModel.length; ++i)
+        {
+            if (cbModel[i].endsWith(".xml"))
+                cbModel[i] = cbModel[i].substring(0, cbModel[i].length() - 4);
+        }
+
+        // creation of the combo box + listener
+        final JComboBox cbChooseWorkspace = new JComboBox(cbModel);
+        if (workspacename != null)
+            cbChooseWorkspace.setSelectedItem(workspacename);
+        cbChooseWorkspace.addItemListener(new ItemListener()
+        {
+
+            @Override
+            public void itemStateChanged(ItemEvent itemevent)
+            {
+                loadWorkspace((String) cbChooseWorkspace.getSelectedItem());
+                mainPanel.setSize(mainPanel.getSize());
+            }
+        });
+
+        // ------------------
+        // DRAW THE COMPONENT
+        // ------------------
+        panelWorkspace.removeAll();
+        panelWorkspace.setLayout(new BoxLayout(panelWorkspace, BoxLayout.Y_AXIS));
+        panelWorkspace.setSize(new Dimension(150, 60));
+        JPanel panelChoose = new JPanel();
+        panelChoose.setLayout(new BoxLayout(panelChoose, BoxLayout.X_AXIS));
+        panelChoose.add(new JLabel("<html><b>Choose workspace</b></html>"));
+        panelChoose.add(Box.createHorizontalGlue());
+        panelWorkspace.add(panelChoose);
+        panelWorkspace.add(cbChooseWorkspace);
+        panelWorkspace.add(Box.createVerticalStrut(6));
+
+        if (workspacename != null)
+            currentWorkspace = new Workspace(workspacename);
+        else
+            currentWorkspace = null;
+        if (currentWorkspace != null && !currentWorkspace.getTasks().isEmpty())
+        {
+            final TaskDefinition task = currentWorkspace.getTasks().get(0);
+            // ------------
+            // POPUP PANELS
+            // ------------
+            int bandIndex = 0;
+            final LinkedList<BandDefinition> bandsCopy = new LinkedList<BandDefinition>(task.getBands());
+            for (final BandDefinition band : bandsCopy)
+            {
+                final int finalBandIndex = bandIndex;
+                final PopupPanel ppp = new PopupPanel(band.getName());
+                final JPanel pppMainPanel = ppp.getMainPanel();
+                pppMainPanel.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
+
+                // listener for deletion
+                MouseListener listenerBandDelete = new MouseAdapter()
+                {
+                    @Override
+                    public void mouseClicked(MouseEvent e)
+                    {
+                        if (e.getButton() == MouseEvent.BUTTON3)
+                        {
+                            TitledPopupMenu popup = new TitledPopupMenu(
+                                    "Band: " + bandsCopy.get(finalBandIndex).getName());
+                            Border titleUnderline = BorderFactory.createMatteBorder(1, 0, 0, 0, popup.getForeground());
+                            TitledBorder labelBorder = BorderFactory.createTitledBorder(titleUnderline,
+                                    popup.getLabel(), TitledBorder.CENTER, TitledBorder.ABOVE_TOP,
+                                    ppp.getFont().deriveFont(Font.BOLD), popup.getForeground());
+                            popup.setBorder(BorderFactory.createCompoundBorder(popup.getBorder(), labelBorder));
+                            popup.setLocation(e.getLocationOnScreen());
+
+                            JMenuItem itemRenameBand = new JMenuItem("Rename Band");
+                            itemRenameBand.addActionListener(new ActionListener()
+                            {
+                                // TODO
+                                @Override
+                                public void actionPerformed(ActionEvent e)
+                                {
+                                    if (currentWorkspace.getName().contentEquals("sys"))
+                                    {
+                                        MessageDialog.showDialog("Cannot be modified",
+                                                "The bands of this workspace cannot be moved. The only possible action is the removal of plugins from band \"new\".");
+                                        return;
+                                    }
+                                    String response = (String) JOptionPane.showInputDialog(
+                                            Icy.getMainInterface().getMainFrame(), "Enter the name of the new band: ",
+                                            "Band Creation", JOptionPane.QUESTION_MESSAGE, null, null, band.getName());
+                                    if (response == null)
+                                        return;
+                                    HashMap<String, ArrayList<ItemDefinition>> hashmap = new HashMap<String, ArrayList<ItemDefinition>>();
+
+                                    // get a copy of every band in the task
+                                    // and delete it from the task
+                                    for (BandDefinition currentBand : bandsCopy)
+                                    {
+                                        if (currentBand == band)
+                                            hashmap.put(response, currentBand.getItems());
+                                        else
+                                            hashmap.put(currentBand.getName(), currentBand.getItems());
+                                        task.removeBand(currentBand.getName());
+                                    }
+
+                                    // Reconstruct in the right order
+                                    for (String bandName : hashmap.keySet())
+                                    {
+                                        task.addBand(bandName);
+                                        for (ItemDefinition item : hashmap.get(bandName))
+                                        {
+                                            task.addItem(bandName, item.getClassName());
+                                            task.findItem(item.getClassName()).setPriority(item.getPriority());
+                                        }
+                                    }
+                                    currentWorkspace.save();
+                                    reloadWorkspace();
+                                }
+                            });
+                            popup.add(itemRenameBand);
+
+                            // Move the band up
+                            JMenuItem itemMoveUp = new JMenuItem("Move Up");
+                            itemMoveUp.addActionListener(new ActionListener()
+                            {
+
+                                @Override
+                                public void actionPerformed(ActionEvent e)
+                                {
+                                    if (currentWorkspace.getName().contentEquals("sys"))
+                                    {
+                                        MessageDialog.showDialog("Cannot be modified",
+                                                "The bands of this workspace cannot be moved. The only possible action is the removal of plugins from band \"new\".");
+                                        return;
+                                    }
+                                    HashMap<BandDefinition, ArrayList<ItemDefinition>> hashmap = new HashMap<BandDefinition, ArrayList<ItemDefinition>>();
+
+                                    bandsCopy.remove(band);
+                                    bandsCopy.add(finalBandIndex - 1, band);
+
+                                    // get a copy of every band in the task
+                                    // and delete it from the task
+                                    for (BandDefinition currentBand : bandsCopy)
+                                    {
+                                        hashmap.put(currentBand, currentBand.getItems());
+                                        task.removeBand(currentBand.getName());
+                                    }
+
+                                    // Reconstruct in the right order
+                                    for (BandDefinition currentBand : bandsCopy)
+                                    {
+                                        String bandName = currentBand.getName();
+                                        task.addBand(bandName);
+                                        for (ItemDefinition item : hashmap.get(currentBand))
+                                        {
+                                            task.addItem(bandName, item.getClassName());
+                                            task.findItem(item.getClassName()).setPriority(item.getPriority());
+                                        }
+                                    }
+                                    currentWorkspace.save();
+                                    reloadWorkspace();
+                                }
+                            });
+                            popup.add(itemMoveUp);
+
+                            // Move the band down
+                            JMenuItem itemMoveDown = new JMenuItem("Move Down");
+                            itemMoveDown.addActionListener(new ActionListener()
+                            {
+
+                                @Override
+                                public void actionPerformed(ActionEvent e)
+                                {
+                                    if (currentWorkspace.getName().contentEquals("sys"))
+                                    {
+                                        MessageDialog.showDialog("Cannot be modified",
+                                                "The bands of this workspace cannot be moved. The only possible action is the removal of plugins from band \"new\".");
+                                        return;
+                                    }
+                                    HashMap<BandDefinition, ArrayList<ItemDefinition>> hashmap = new HashMap<BandDefinition, ArrayList<ItemDefinition>>();
+
+                                    bandsCopy.remove(band);
+                                    bandsCopy.add(finalBandIndex + 1, band);
+
+                                    // get a copy of every band in the task
+                                    // and delete it from the task
+                                    for (BandDefinition currentBand : bandsCopy)
+                                    {
+                                        hashmap.put(currentBand, currentBand.getItems());
+                                        task.removeBand(currentBand.getName());
+                                    }
+
+                                    // Reconstruct in the right order
+                                    for (BandDefinition currentBand : bandsCopy)
+                                    {
+                                        String bandName = currentBand.getName();
+                                        task.addBand(bandName);
+                                        for (ItemDefinition item : hashmap.get(currentBand))
+                                        {
+                                            task.addItem(bandName, item.getClassName());
+                                            task.findItem(item.getClassName()).setPriority(item.getPriority());
+                                        }
+                                    }
+                                    currentWorkspace.save();
+                                    reloadWorkspace();
+                                }
+                            });
+                            popup.add(itemMoveDown);
+
+                            // Remove Band Item
+                            JMenuItem itemDeleteBand = new JMenuItem("Remove Band");
+                            itemDeleteBand.addActionListener(new ActionListener()
+                            {
+
+                                @Override
+                                public void actionPerformed(ActionEvent e)
+                                {
+                                    if (currentWorkspace.getName().contentEquals("sys"))
+                                    {
+                                        MessageDialog.showDialog("Cannot be deleted",
+                                                "The bands of this workspace cannot be deleted. The only possible action is the removal of plugins from band \"new\".");
+                                        return;
+                                    }
+                                    else if (ConfirmDialog.confirm("Band deletion",
+                                            "Are you sure you want to delete this band?"))
+                                    {
+                                        task.removeBand(band);
+                                        currentWorkspace.save();
+                                        reloadWorkspace();
+                                        if (currentWorkspace.getTasks() == null
+                                                || currentWorkspace.getTasks().get(0).getBands().size() <= 1)
+                                        {
+                                            WorkspaceLocalPreferences.setWorkspaceEnable(currentWorkspace.getName(),
+                                                    false);
+                                        }
+                                    }
+                                }
+                            });
+                            popup.add(itemDeleteBand);
+
+                            // Display
+                            if (finalBandIndex < 1)
+                            {
+                                itemMoveUp.setEnabled(false);
+                            }
+                            else if (finalBandIndex >= bandsCopy.size() - 1)
+                            {
+                                itemMoveDown.setEnabled(false);
+                            }
+                            popup.show(e.getComponent(), e.getX(), e.getY());
+                        }
+                    }
+                };
+
+                // listener for mouse over
+                // (used by mainpanel to know where to drop items)
+                MouseListener listenerMouseOver = new MouseAdapter()
+                {
+
+                    @Override
+                    public void mouseEntered(MouseEvent mouseevent)
+                    {
+                        mainPanel.currentBand = band;
+                    }
+
+                    @Override
+                    public void mouseExited(MouseEvent mouseevent)
+                    {
+                        mainPanel.currentBand = null;
+                    }
+                };
+                ppp.getComponent(0).addMouseListener(listenerBandDelete);
+                pppMainPanel.addMouseListener(listenerBandDelete);
+                ppp.getComponent(0).addMouseListener(listenerMouseOver);
+                pppMainPanel.addMouseListener(listenerMouseOver);
+
+                pppMainPanel.setLayout(new BoxLayout(pppMainPanel, BoxLayout.Y_AXIS));
+                if (band.getItems().size() == 0)
+                {
+                    pppMainPanel.add(Box.createRigidArea(new Dimension(20, 20)));
+                }
+                else
+                {
+                    // -------
+                    // Create every item based on itemdefinition
+                    // ------
+                    for (final ItemDefinition itd : band.getItems())
+                    {
+                        JPanel panelPlugin = new JPanel();
+                        panelPlugin.setLayout(new BoxLayout(panelPlugin, BoxLayout.X_AXIS));
+                        final String classname = itd.getClassName();
+                        panelPlugin.setMinimumSize(new Dimension(60, 20));
+                        JLabel pluginName = new JLabel(
+                                classname.substring(classname.lastIndexOf('.') + 1, classname.length()));
+                        pluginName.addMouseListener(new PluginActionAdapter(task, band, ppp, classname));
+                        pluginName.setMinimumSize(new Dimension(100, 20));
+                        panelPlugin.add(pluginName);
+                        panelPlugin.add(Box.createHorizontalGlue());
+                        switch (itd.getPriority())
+                        {
+                            case LOW:
+                                panelPlugin.add(new SizeButton(itd, 0));
+                                break;
+                            case MEDIUM:
+                                panelPlugin.add(new SizeButton(itd, 1));
+                                break;
+                            case TOP:
+                                panelPlugin.add(new SizeButton(itd, 2));
+                                break;
+                        }
+                        pppMainPanel.add(panelPlugin);
+                    }
+                    pppMainPanel.validate();
+                }
+                panelWorkspace.add(ppp);
+                panelWorkspace.add(Box.createVerticalStrut(5));
+                ppp.expand();
+                ++bandIndex;
+            }
+
+        }
+        else
+        {
+            panelWorkspace.add(new JLabel("Empty Workspace"));
+        }
+        btnProperties.setEnabled(!currentWorkspace.getName().contentEquals("sys"));
+        if (frame != null)
+            frame.revalidate();
+    }
+
+    /**
+     * Class used for the Drag'n Drop functionalities.
+     * 
+     * @author thomasprovoost
+     */
+    private class MainPanel extends JPanel implements MouseListener, MouseMotionListener
+    {
+
+        protected Point pointEnd;
+        protected Point pointBegin;
+        protected BandDefinition currentBand;
+        protected Rectangle selectionRectangle = new Rectangle(0, 0, 0, 0);
+        protected ArrayList<PluginDescriptorButton> previouslySelectedPlugins;
+        protected MouseEvent lastEvent;
+
+        public MainPanel()
+        {
+        }
+
+        /**
+         * 
+         */
+        private static final long serialVersionUID = 1462696193771472039L;
+
+        @Override
+        public void mouseDragged(MouseEvent e)
+        {
+            if (previouslySelectedPlugins != null)
+            {
+                _selectedPlugins.clear(); // clear the list of selected plugins
+                // the previouslySelectedPlugins
+                // list already contains all needed
+                // information
+                // this step is only for display
+                // purpose
+
+                // rectangle of selection
+                if (!isShowing())
+                    return;
+                Point location = getLocationOnScreen();
+                Point pStart = new Point(pointBegin.x < pointEnd.x ? pointBegin.x : pointEnd.x,
+                        pointBegin.y < pointEnd.y ? pointBegin.y : pointEnd.y);
+                int w = (pStart.x == pointBegin.x ? pointEnd.x - pointBegin.x : pointBegin.x - pointEnd.x);
+                int h = (pStart.y == pointBegin.y ? pointEnd.y - pointBegin.y : pointBegin.y - pointEnd.y);
+                selectionRectangle.setBounds(pStart.x - location.x, pStart.y - location.y, w, h);
+
+                // add selected plugins in the list
+                for (PluginDescriptorButton pdb : listInstalledPlugins)
+                {
+                    if (!pdb.isShowing())
+                        return;
+                    Rectangle bounds = pdb.getBounds();
+                    bounds.x = pdb.getLocationOnScreen().x - location.x;
+                    bounds.y = pdb.getLocationOnScreen().y - location.y;
+                    if (selectionRectangle.intersects(bounds))
+                    {
+                        pdb.setSelected(true);
+                    }
+                }
+                for (PluginDescriptorButton pdb : previouslySelectedPlugins)
+                {
+                    pdb.setSelected(true);
+                }
+            }
+            else if (!_selectedPlugins.isEmpty())
+            {
+                lastEvent = e;
+            }
+            repaint();
+        }
+
+        @Override
+        public void mouseMoved(MouseEvent e)
+        {
+        }
+
+        @Override
+        public void paintComponent(Graphics g)
+        {
+            super.paintComponent(g);
+            Graphics2D g2 = (Graphics2D) g;
+            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+            if (lastEvent != null)
+            {
+                // DRAW THE SELECTED PLUGINS IN
+                // TRANSPARENT
+                if (!isShowing())
+                    return;
+                Point actual = getLocationOnScreen();
+                for (PluginDescriptorButton pdb : new ArrayList<PluginDescriptorButton>(_selectedPlugins))
+                {
+                    if (!pdb.isShowing())
+                        continue;
+                    Point objectLocation = pdb.getLocationOnScreen();
+                    int w = pdb.imgRenderer.getWidth();
+                    int h = pdb.imgRenderer.getHeight();
+                    int[] data = new int[w * h];
+                    pdb.imgRenderer.getRGB(0, 0, w, h, data, 0, w);
+                    for (int i = 0; i < data.length; ++i)
+                    {
+                        data[i] &= 0xFFFFFF;
+                        data[i] |= 80 << 24;
+                    }
+                    BufferedImage img2 = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
+                    img2.setRGB(0, 0, w, h, data, 0, w);
+                    g2.drawImage(img2, objectLocation.x - actual.x + lastEvent.getX(),
+                            objectLocation.y - actual.y + lastEvent.getY(), null);
+                }
+            }
+            if (pointBegin != null && pointEnd != null)
+            {
+                g2.setColor(Color.GRAY);
+                g2.draw(selectionRectangle);
+            }
+        }
+
+        @Override
+        public void mouseReleased(MouseEvent e)
+        {
+            if (lastEvent != null)
+            {
+                if (panelWorkspace != null && panelWorkspace.isShowing())
+                {
+
+                    Point pW = panelWorkspace.getLocationOnScreen();
+                    Point pE = e.getLocationOnScreen();
+                    // tests if mouse release is in the panelWorkspace
+                    if (pE.x >= pW.x && pE.x <= pW.x + panelWorkspace.getWidth() && pE.y >= pW.y
+                            && pE.y <= pE.y + panelWorkspace.getHeight())
+                    {
+                        // if null, ask for a band creation
+                        if (currentBand == null)
+                        {
+                            if (currentWorkspace.getName().equals("sys")
+                                    || currentWorkspace.getName().equals("sys.xml"))
+                                MessageDialog.showDialog("System file",
+                                        "This file should not be modified. It is shown as an example only.");
+                            else
+                            {
+                                String response = JOptionPane.showInputDialog(Icy.getMainInterface().getMainFrame(),
+                                        "Enter the name of the new band: ", "Band Creation",
+                                        JOptionPane.QUESTION_MESSAGE);
+                                if (response != null)
+                                {
+                                    currentWorkspace.addBand(currentWorkspace.getName(), response);
+                                    currentBand = currentWorkspace.findBand(currentWorkspace.getName(), response);
+                                }
+                            }
+                        }
+                        // if still null, do nothing
+                        if (currentBand != null)
+                        {
+                            for (PluginDescriptorButton pdb : new ArrayList<PluginDescriptorButton>(_selectedPlugins))
+                            {
+                                String className = pdb.pd.getClassName();
+                                if (currentBand != null && currentBand.findItem(className) == null)
+                                {
+                                    currentBand.addItem(className);
+                                    for (ItemDefinition itd : currentBand.getItems())
+                                    {
+                                        if (itd.getClassName() == className)
+                                            itd.setPriority(RibbonElementPriority.MEDIUM);
+                                    }
+                                }
+                            }
+                            currentWorkspace.save();
+                            reloadWorkspace();
+                        }
+                        _selectedPlugins.clear();
+                    }
+                    mainPanel.repaint();
+                }
+                currentBand = null;
+            }
+        }
+
+        @Override
+        public void mouseClicked(MouseEvent mouseevent)
+        {
+        }
+
+        @Override
+        public void mouseEntered(MouseEvent mouseevent)
+        {
+        }
+
+        @Override
+        public void mouseExited(MouseEvent mouseevent)
+        {
+        }
+
+        @Override
+        public void mousePressed(MouseEvent mouseevent)
+        {
+        }
+    }
+
+    /**
+     * JLabel modified to contain the {@link PluginDescriptor}.
+     * 
+     * @author thomasprovoost
+     */
+    private class PluginDescriptorButton extends JLabel
+    {
+
+        PluginDescriptor pd;
+        boolean preferredSizeSet = false;
+        boolean mouseOver = false;
+        BufferedImage imgRenderer;
+
+        /**
+         * Default serial version UID
+         */
+        private static final long serialVersionUID = 1L;
+
+        public PluginDescriptorButton(PluginDescriptor pd)
+        {
+            this.pd = pd;
+            setText(pd.getName());
+            setToolTipText(pd.getClassName());
+            MouseAdapter mouseadapter = new PDBMouseAdapter(this);
+            addMouseMotionListener(mouseadapter);
+            addMouseListener(mouseadapter);
+        }
+
+        @Override
+        public void paintComponent(Graphics g)
+        {
+            // test if preferred size already set
+            if (!preferredSizeSet)
+            {
+                setPreferredSize(new Dimension(
+                        g.getFontMetrics().charsWidth(minNamePlugin.toCharArray(), 0, minNamePlugin.length()) + 26,
+                        40));
+                preferredSizeSet = true;
+            }
+
+            // initialize variables
+            int w = getWidth();
+            int h = getHeight();
+            String text = getText();
+            imgRenderer = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
+            Graphics2D gb = (Graphics2D) imgRenderer.getGraphics();
+            gb.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
+            gb.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+            gb.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
+
+            // drawing
+            gb.setFont(new Font("Arial", Font.BOLD, 12));
+            SubstanceColorScheme cs;
+            if (isSelected())
+            {
+                cs = SubstanceColorSchemeUtilities.getColorScheme(new JButton(), ComponentState.ROLLOVER_SELECTED);
+            }
+            else if (mouseOver)
+            {
+                cs = SubstanceColorSchemeUtilities.getColorScheme(new JButton(), ComponentState.SELECTED);
+            }
+            else
+            {
+                cs = SubstanceColorSchemeUtilities.getColorScheme(new JButton(), ComponentState.ENABLED);
+            }
+            Color background = cs.getSelectionBackgroundColor();
+            Color foreground = cs.getForegroundColor();
+            Paint defaultPaint = gb.getPaint();
+            if (isSelected())
+            {
+                gb.setPaint(new GradientPaint(w / 2, 0, background, w / 2, h / 2, background.darker(), true));
+            }
+            else
+            {
+                gb.setPaint(new GradientPaint(w / 2, 0, background, w / 2, h / 2, background.brighter(), true));
+            }
+            gb.fillRoundRect(1, 1, w - 1, h - 1, 10, 10);
+            gb.setPaint(defaultPaint);
+            gb.setColor(foreground);
+            gb.drawRoundRect(1, 1, w - 2, h - 2, 10, 10);
+            gb.drawString(text, 10 + w / 2 - gb.getFontMetrics().charsWidth(text.toCharArray(), 0, text.length()) / 2,
+                    h / 2 + gb.getFontMetrics().getHeight() / 2);
+            gb.drawImage(pd.getIconAsImage(), 5, 5, h - 10, h - 10, null);
+            g.drawImage(imgRenderer, 0, 0, w, h, null);
+            gb.dispose();
+        }
+
+        /**
+         * Toggle the {@link #isSelected()} value.
+         */
+        void toggleSelected()
+        {
+            if (isSelected())
+                setSelected(false);
+            else
+                setSelected(true);
+        }
+
+        /**
+         * Return if the current plugin is selected.
+         * 
+         * @see #toggleSelected(), {@link #setSelected(boolean)}
+         */
+        public boolean isSelected()
+        {
+            for (PluginDescriptorButton pdb : _selectedPlugins)
+            {
+                if (pdb.equals(this))
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        /**
+         * Set the selected flag to <code>selected</code> value.
+         * 
+         * @param selected
+         */
+        public void setSelected(boolean selected)
+        {
+            if (selected)
+                _selectedPlugins.add(this);
+            else if (!selected)
+                _selectedPlugins.remove(this);
+            repaint();
+        }
+
+        @Override
+        public String toString()
+        {
+            return getText();
+        }
+    }
+
+    /**
+     * Specific button created to change the size of the plugin in the
+     * workspace.
+     * 
+     * @author thomasprovoost
+     */
+    private class SizeButton extends JButton implements ActionListener
+    {
+
+        /** */
+        private static final long serialVersionUID = 1L;
+        int type = 0;
+        ItemDefinition itd;
+
+        public SizeButton(ItemDefinition itd, int type)
+        {
+            this.type = type;
+            this.itd = itd;
+            setSize(32, 32);
+            // setPreferredSize(new Dimension(32, 32));
+            changeIcon();
+            addActionListener(this);
+        }
+
+        @Override
+        public void actionPerformed(ActionEvent arg0)
+        {
+            type = ++type % 3;
+            switch (type)
+            {
+                case 0:
+                    itd.setPriority(RibbonElementPriority.LOW);
+                    break;
+                case 1:
+                    itd.setPriority(RibbonElementPriority.MEDIUM);
+                    break;
+                case 2:
+                    itd.setPriority(RibbonElementPriority.TOP);
+                    break;
+            }
+            changeIcon();
+            currentWorkspace.save();
+        }
+
+        private void changeIcon()
+        {
+            switch (type)
+            {
+                case 0:
+                    setIcon(smallButton);
+                    setToolTipText("Only a small icon");
+                    break;
+                case 1:
+                    setIcon(mediumButton);
+                    setToolTipText("Small icon and name of the plugin");
+                    break;
+                case 2:
+                    setIcon(largeButton);
+                    setToolTipText("Large icon and name of the plugin");
+                    break;
+                default:
+                    System.out.println("error : " + type);
+            }
+        }
+    }
+
+    class PDBMouseAdapter extends MouseAdapter
+    {
+
+        PluginDescriptorButton pdb;
+
+        public PDBMouseAdapter(PluginDescriptorButton pdb)
+        {
+            this.pdb = pdb;
+        }
+
+        @Override
+        public void mousePressed(MouseEvent e)
+        {
+            pdb.setSelected(true);
+            if (EventUtil.isControlDown(e))
+            {
+                // starts multi selection
+                mainPanel.previouslySelectedPlugins = new ArrayList<PluginDescriptorButton>(_selectedPlugins);
+                mainPanel.pointBegin = e.getLocationOnScreen();
+            }
+        }
+
+        @Override
+        public void mouseDragged(MouseEvent e)
+        {
+            if (mainPanel.previouslySelectedPlugins != null)
+                mainPanel.pointEnd = e.getLocationOnScreen();
+            else
+                mainPanel.lastEvent = e;
+            mainPanel.mouseDragged(e);
+        }
+
+        @Override
+        public void mouseMoved(MouseEvent e)
+        {
+            pdb.repaint();
+        }
+
+        @Override
+        public void mouseReleased(MouseEvent e)
+        {
+            // equivalent of MouseClicked
+            if (e.getClickCount() > 0)
+            {
+                pdb.toggleSelected();
+                if (!_selectedPlugins.isEmpty())
+                {
+                    if (e.isShiftDown())
+                    {
+                        if (mainPanel.previouslySelectedPlugins == null)
+                        {
+                            mainPanel.previouslySelectedPlugins = new ArrayList<PluginDescriptorButton>();
+                            mainPanel.previouslySelectedPlugins.add(_selectedPlugins.get(_selectedPlugins.size() - 1));
+                        }
+                        if (!EventUtil.isControlDown(e))
+                        {
+                            for (PluginDescriptorButton pdb : new ArrayList<PluginDescriptorButton>(_selectedPlugins))
+                            {
+                                pdb.setSelected(false);
+                            }
+                            _selectedPlugins.clear();
+                        }
+                        int idxCurrent = listInstalledPlugins.indexOf(pdb);
+                        int idxLastSelected = listInstalledPlugins.indexOf(mainPanel.previouslySelectedPlugins.get(0));
+                        if (idxCurrent != idxLastSelected)
+                        {
+                            mainPanel.previouslySelectedPlugins.get(0).setSelected(true);
+                            if (idxCurrent > idxLastSelected)
+                            {
+                                idxLastSelected = idxCurrent + idxLastSelected;
+                                idxCurrent = idxLastSelected - idxCurrent;
+                                idxLastSelected = idxLastSelected - idxCurrent;
+                            }
+                            for (int i = idxCurrent; i != idxLastSelected; i++)
+                            {
+                                PluginDescriptorButton currentPdb = listInstalledPlugins.get(i);
+                                if (currentPdb != this.pdb)
+                                    currentPdb.setSelected(true);
+                            }
+                        }
+
+                    }
+                    else
+                    {
+                        mainPanel.previouslySelectedPlugins = null;
+                        if (!EventUtil.isControlDown(e))
+                        {
+                            for (PluginDescriptorButton pdb : new ArrayList<PluginDescriptorButton>(_selectedPlugins))
+                            {
+                                pdb.setSelected(false);
+                            }
+                            _selectedPlugins.clear();
+                        }
+                    }
+                }
+                pdb.toggleSelected();
+            }
+
+            // normal MousePressed
+            if (mainPanel.previouslySelectedPlugins != null)
+            {
+                mainPanel.previouslySelectedPlugins.clear();
+                mainPanel.previouslySelectedPlugins = null;
+                mainPanel.pointBegin = null;
+                mainPanel.pointEnd = null;
+                mainPanel.repaint();
+            }
+            else
+            {
+                mainPanel.mouseReleased(e);
+                mainPanel.lastEvent = null;
+            }
+            pdb.repaint();
+        }
+
+        @Override
+        public void mouseEntered(MouseEvent e)
+        {
+            pdb.mouseOver = true;
+            pdb.repaint();
+        }
+
+        @Override
+        public void mouseExited(MouseEvent e)
+        {
+            pdb.repaint();
+            pdb.mouseOver = false;
+        }
+    }
+
+    class PluginActionAdapter extends MouseAdapter
+    {
+
+        private TaskDefinition task;
+        private String className;
+        private BandDefinition band;
+        private PopupPanel ppp;
+
+        public PluginActionAdapter(TaskDefinition task, BandDefinition band, PopupPanel ppp, String className)
+        {
+            this.task = task;
+            this.band = band;
+            this.ppp = ppp;
+            this.className = className;
+        }
+
+        @Override
+        public void mouseClicked(final MouseEvent e)
+        {
+
+            // Display a popup panel when user presses Mouse
+            // Button 3
+            if (e.getButton() == MouseEvent.BUTTON3)
+            {
+
+                final ItemDefinition clickedItem = task.findItem(className);
+                final ArrayList<ItemDefinition> items = band.getItems(); // copy
+                // of
+                // items
+                final int clickedItemIndex = items.indexOf(clickedItem);
+                TitledPopupMenu popup;
+                Border titleUnderline;
+                TitledBorder labelBorder;
+
+                // Create popup menu
+                popup = new TitledPopupMenu("Plugin: " + className.substring(className.lastIndexOf(".") + 1));
+                titleUnderline = BorderFactory.createMatteBorder(1, 0, 0, 0, popup.getForeground());
+                labelBorder = BorderFactory.createTitledBorder(titleUnderline, popup.getLabel(), TitledBorder.CENTER,
+                        TitledBorder.ABOVE_TOP, ppp.getFont().deriveFont(Font.BOLD), popup.getForeground());
+                popup.setBorder(BorderFactory.createCompoundBorder(popup.getBorder(), labelBorder));
+                popup.setLocation(e.getLocationOnScreen());
+
+                // Create items in popup
+                JMenuItem itemMoveUp = new JMenuItem("Move Up");
+                itemMoveUp.addActionListener(new ActionListener()
+                {
+
+                    @Override
+                    public void actionPerformed(ActionEvent e)
+                    {
+                        band.clear();
+                        items.remove(clickedItemIndex);
+                        items.add(clickedItemIndex - 1, clickedItem);
+                        for (ItemDefinition currentItem : items)
+                        {
+                            String currentClassName = currentItem.getClassName();
+                            task.addItem(band.getName(), currentClassName);
+                            task.findItem(currentClassName).setPriority(currentItem.getPriority());
+                        }
+                        currentWorkspace.save();
+                        reloadWorkspace();
+                    }
+                });
+                itemMoveUp.setEnabled(clickedItemIndex > 0);
+                popup.add(itemMoveUp);
+
+                JMenuItem itemMoveDown = new JMenuItem("Move Down");
+                itemMoveDown.addActionListener(new ActionListener()
+                {
+
+                    @Override
+                    public void actionPerformed(ActionEvent e)
+                    {
+                        band.clear();
+                        items.remove(clickedItemIndex);
+                        items.add(clickedItemIndex + 1, clickedItem);
+                        for (ItemDefinition currentItem : items)
+                        {
+                            String currentClassName = currentItem.getClassName();
+                            task.addItem(band.getName(), currentClassName);
+                            task.findItem(currentClassName).setPriority(currentItem.getPriority());
+                        }
+                        currentWorkspace.save();
+                        reloadWorkspace();
+                    }
+                });
+                itemMoveDown.setEnabled(clickedItemIndex < items.size() - 1);
+                popup.add(itemMoveDown);
+
+                // item delete plugin
+                JMenuItem itemDeletePlugin = new JMenuItem("Remove Plugin from band");
+                itemDeletePlugin.addActionListener(new ActionListener()
+                {
+
+                    @Override
+                    public void actionPerformed(ActionEvent e2)
+                    {
+                        if (currentWorkspace.getName().contentEquals("sys") && !band.getName().contentEquals("New"))
+                        {
+                            MessageDialog.showDialog("Cannot be deleted", "Only possible with band \"new\".");
+                            return;
+                        }
+                        if (ConfirmDialog.confirm("Plugin removal",
+                                "Are you sure you want to remove this plugin from this band?"))
+                        {
+                            band.removeItem(className);
+                            currentWorkspace.save();
+                            reloadWorkspace();
+                        }
+                    }
+                });
+                popup.add(itemDeletePlugin);
+
+                // item delete band
+                JMenuItem itemDeleteBand = new JMenuItem("Remove Band");
+                itemDeleteBand.addActionListener(new ActionListener()
+                {
+
+                    @Override
+                    public void actionPerformed(ActionEvent e)
+                    {
+                        if (currentWorkspace.getName().contentEquals("sys"))
+                        {
+                            MessageDialog.showDialog("Cannot be deleted",
+                                    "The bands of this workspace cannot be deleted. The only possible action is the removal of plugins from band \"new\".");
+                            return;
+                        }
+                        if (ConfirmDialog.confirm("Band deletion", "Are you sure you want to delete this band?"))
+                        {
+                            task.removeBand(band);
+                            currentWorkspace.save();
+                            reloadWorkspace();
+                        }
+                    }
+                });
+                popup.add(itemDeleteBand);
+                popup.show(e.getComponent(), e.getX(), e.getY());
+            }
+        }
+    }
+}
diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/images/WE_Help.png b/src/main/java/plugins/tprovoost/workspaceeditor/images/WE_Help.png
new file mode 100644
index 0000000000000000000000000000000000000000..0a5a5a4552bc25bb519cebd650ed457efe7e47e4
GIT binary patch
literal 36988
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

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/images/minusWorkspace.png b/src/main/java/plugins/tprovoost/workspaceeditor/images/minusWorkspace.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb7081422193fffa845c2ade82b9437f27300d74
GIT binary patch
literal 721
zcmV;?0xtcDP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm0007*Nkl<Zc-rk(
zPl%0C6dz-HsOSBg*Lyv$SFcyIz{ZSeVj*@UyHPeMgrUqzP09j0QdY{mEKn9oVu@00
zBqJFmNj9=j7Mdc)pX(moSHDj8PUrS<FLh7->id4@*SY8S-gm$6+`hgPDN>|Jks?Kk
z6#sv8IvwSUcDt=wt(Iywo2t=hs9LS2s@1A0m&>YHEdI_(Yv~piWimj`_&{QScxk=N
z2B;AqNDL4st(W-`q9%MGF;K79#q}~9pay&(F+lgydYKK-Vm^=<plfNp%m!#NA4m*T
zDiv|P%m!#tA4m+8N+of<%m!#dA4m)o3I%b!%m(uL{Kh{GZD3NWO{2tLjKdno40bv+
z>p?@9aOg&vE=b(fPzLWDnk%3oeA8HJ(VYX$mrw>yv*rdZnpaFiSZC4QgZ$%A26nK<
zHnIGmrFp^;ORW!(zYxm65Nm9b<+nNvTxPlzEWbaL0UDF%VBw1_f6`&#1=DR|`H_%s
zqWiG$BbK`jIn@2oSPr@=$bHqwg*1R~k53x?@b7$t+;-ErZNFRvekSy{U>E!QhYY_G
zxStv&jalH1LXGFZPlq<Jni&{3{2t(58m<f6HN)l1x1q-$2yI}o#%E~YgyE-wyJWb%
zz`Zft8ukOMjWJR@ga&RH?ip~s@nMza!?!!;2JXdqXyP>uz#89y8#cOrwy`&BoQ3-*
zv4*;RY{PD2Z>9mz-hte4cHfO<V3<7`H{tpL)1HFdEsghZe=wGToOyn6;_O|YSzx@F
zW5!2go(*OkW5c*`z?;`t64OA}(O6SBVn2<2I-9UG^;USuu?>R3W6aXj^#zWiTze?C
zfn{v-@_7ei#A0CVUpVB?vZgjTbOUVsn0K6$Q$&qlL^y+War2#c00000NkvXXu0mjf
De{xf4

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/images/plusBand.png b/src/main/java/plugins/tprovoost/workspaceeditor/images/plusBand.png
new file mode 100644
index 0000000000000000000000000000000000000000..2a5cc9a1313f4a7137ea17fd499e2417242496ed
GIT binary patch
literal 514
zcmV+d0{#7oP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm0005WNkl<Zc-rlk
zJxjzu5I`eZ#(WVHVu*x@g}vBV*ojs)){24_7NTV;vGWT5f{kdWjlHN~<4+L5)=mTw
zL1mqR4TQzhS@uqLxgB_LmkhJ}F1gIaaRxYsIA%swRje#aRul!x^PFW_#*!pqaU8QS
z44Loy%yr#4D_{kzfEBO;R=^4jgaB?xmcIn>9JQA6T!ovFfg*s%sr8fva3eBM1n?NO
zp7Je(n~;GbkftfQp0WULKn98cey7$`7Qn@1pa|e+YCUBETucUvKomvfdddR0s0<W=
zAPC6ylm&1>87Kmt=aK6v3t-ojfhe#|t!GDxe-y}o`WJS9bzlMTbQG8Y7?BU40}Pug
z(9khm;0xzXT?IDy|6&Xn2PS}7;9AJ5bro3dvP8sx`6lnkGy#nJR^EYW0*P=17EKbE
z1TI=RZ$0k`JrsBao;fdkv+eWmz`RaPT=p?qJDP>80A7Jjods@yW6mjX4&455D;?@8
z(CsNS1w06IQDKq*#+Hz~W}3jXkh^D^z>1K&YmxxYLU%&$l8yqGd{ApR;a&Ji$iqfA
zYGNN~*f+J2A!mJgt?YxqCvRXl6FmY~z$!4}*w8e-0ke!_1g`2vssI2007*qoM6N<$
Ef|P35g#Z8m

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/images/plusWorkspace.png b/src/main/java/plugins/tprovoost/workspaceeditor/images/plusWorkspace.png
new file mode 100644
index 0000000000000000000000000000000000000000..8b7624a65e8a5f4d11190fc8269475db46bf04c3
GIT binary patch
literal 743
zcmV<D0vP>?P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00086Nkl<Zc-rll
zJ7`ov6oz9AtATZ2S$0{Mg=Hay+L#AHi=dq%b`fk;P*G#RRDuX8G@T+?31+cS!9ozx
zQUyU95hG#*5fK})5G*91Xnc%wU>1H3Gv<s}=PH?jAMX9<aOQl;ojd1lSJx6A%Z&cd
z(Q36+v)NRQMnl!>bycg?RHaf;<#JgSi$#^s=T$bF-4p>LKm>>Y5g-CYfF%Jy1^H?*
z0GgBLO59gbF+P$2kT1=b7=Q}#kpzG|X}-jd5EbDg2|%@473WI~Kn3_n0zmiDe2D>Q
zF&{|)=vtaDF#s**BMCsMR1)V)3_y$eNCHqO6vX)w1JHs#k^tm#IdQ(k0CZ~lNC+?~
z%@<pVzX&j)b=+u|Bi%-bA&ooYhFM$?fIC{s=&d8&Wr!ht)mmwZI}0(NLjjy(#r0Xz
zy<{<@4VJjOF#jkNz)n`!W|peYQatI1W!d*Ie?AmIKPzmKrP}5IxWwXCv-ty|0H{r#
zhlMY&R3{w(&sp47Ha{5hHF^&ge#lbYf;o))uC)r{j=|g)txQM&e0zM<>V{vqKfv4$
zQ@CxvTmgSJ^g*_p{rmfkzXrS?S_Q2+@Q%Wg&%mDv4X};@j2V9~crT3C2JfozGUjaP
z_y<ED+{?8-K>;U>KLg%H<Lv|Qwei-oKfq8L-Nyqc;JWdig4byu)>;m}J%4lq|K>Oc
zMZBU0SnC^j117GUZR{;tXW;&ETK(UCwqdukH&YM9-iEm;cHd45V1PXuH{kj{i=BqK
zn_BPS{!m%~8T0&N$Jx0){fqWuo`Dai`57_mXdA|a4c>y*iZlV*j>77~7W+xsA9CZC
zqTUEUa%_!Y@G)X3>Y5{V!V-HpZGc|3d3nEsW6%OH@-O@zFvp4-b;R|s_G7{Eog7E1
Z<0lQ&l25$3d07Ae002ovPDHLkV1gDmN}d1!

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/images/sqBtnLarge.jpg b/src/main/java/plugins/tprovoost/workspaceeditor/images/sqBtnLarge.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..12c88da42c5ab7ebf5fbb6e9eaa2f1979974a397
GIT binary patch
literal 1199
zcmex=<NpH&0WUXCHwH#V1_nkTWcYuZp#{hrVDSF{gCGZk0D}NCqaXv5AS1IN<NqU!
zi-2xqg}96X3K*G~Sy<WFIXJnv1sIqZnVFebm|0m_Sb!>PfpQEif~-P{hK_8)fr;!&
zg(60c6BlwQJ8e8D8g%i4ig8j=6DOCLxP+vXs+zinrk07RnYo3fm9vYho4bdnS8zyZ
zSa?KaRB}pcT6#uiR&hybS$RceRdY*gTYE=m*QCi)rcRqaW9F<yi<c~2wtU6PRhu?%
z*}84}j-9&>9X@jO*zpr5PhGlv<?6NTH*Vf~_~`MIr_Y|hc=_t%r_W!$e*6C8=PyPE
zW_UnDJcQ&QpvM`RSXh`@*g^hbWGV+@W<eHKMME|r$3XVPLSZGNMh+3Di3>L#<Wx2e
z`XHKAbdgI;#pI#tN067mJ|fOTO=S59?jg8;{@-HYVP*tI7_%UQJ;T3=`*Zqly^j4m
zW$XMK=MUZI`@{d?`cbiZ`G2M_=JVMUudI0Qakcbq*m=*ZU+uZ0<Fjtb{++gS>8|YD
zzq_lo&aYm#K5dhGp53A3-p7-_-)H%wd7{SaluhUv<27aZ&1(<r5$%2yvraNLM^vj~
zO)igKYMe<iYxjZ2s=-`Oo0lz>vH5VdGSxcF_vrDbJNj*oru^vXn<h6+Zb`Atv3Y#E
z*Gf$)Sgv`od#aw-mP>P2SzE3=_Og2S{V&c(C;ce$=YMr6>Sa~j>=jX&-^+KUEl*6(
zPOM&@6*j@MFtIwbJeSAlu<h0>g<eYx-H%V#+T-)$exrO)ozs7YgZ}lY{I|p(wf<*#
zv+_~@&C?I}*o&6tH_ew){n7czp8M=a_5<@6f7|ZsFMN2`>(IsbHN}r?*(~IPcU@B3
zSZVU2lzX+z-$mJGjuMl9Eq`(LcntF)i+a(bdA5(z5B=~neenG744Imun#WdCvK~F0
z@o=MPa@#3`h?DoZy~U+YS#%~oj9i~Cwes%qhd)m1p80tB#OtRsTzghdPm_;c>G{au
zN6KU0OLLUZcdYiU{<Q3Ih31ZTkMF;Fe{*rj-{t=_miIpRyWBqATmI&aO!vc@54yAc
z`|8+!9QkKGIoRsQN0vJGruBKVT_+!Yo4kNyazMbXjn`+taooQ-Z{tt>P8rjO^ZDzO
z>yKD{)Y{)sAM@|xzZ>7~sLm<a|IPjCzr}y&pZ>d6;&1hD=i86hf35x-{>uB-e}+B5
zwr}Q3&q?~X@$cFx&RXB<PQUuI<By&7Yngl3Z{5FPf45pMs$Ty1Tig4M^Z(xj07Z}Z
AUjP6A

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/images/sqBtnMedium.jpg b/src/main/java/plugins/tprovoost/workspaceeditor/images/sqBtnMedium.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..5df28f83a6b91e431ef2f9101607c5810fc5207a
GIT binary patch
literal 966
zcmex=<NpH&0WUXCHwH#V1_nkTWcYuZp#{hrVDSF{gCGZk0D}NCqaXv5AS1IN<NqU!
zi-2xqg}96X3K*G~Sy<WFIXJnv1sIqZnVFebm|0m_Sb!>PfpQEif~-P{hK_8)fr;!&
zg(60c6BlwQJ8e8D8g%i4ig8j=6DOCLxP+vXs+zinrk07RnYo3fm9vYho4bdnS8zyZ
zSa?KaRB}pcT6#uiR&hybS$RceRdY*gTYE=m*QCi)rcRqaW9F<yi<c~2wtU6PRhu?%
z*}84}j-9&>9X@jO*zpr5PhGlv<?6NTH*Vf~_~`MIr_Y|hc=_t%r_W!$e*6C8=PyPE
zW_UnDJcQ&QpvM`RSXh`@*g^hbWGV+@W<eHKMME|r$3XVPLSZGNMh+3Di3>L#<Wx2e
z`XHKAbdgI;#pI#tN067mJ|fOTO=S59?jg8;{@-HYVP*tI7_%UQJ;T3=`?L6eXy(5;
z`<v@e%HOU!hCk6C?DkjvXV~W7QRDxxm-|uc()RYP@thURVHdW>w@Wcxv(tEW>)t}K
z^~sBWG#`x@wJ}_Bbj_`U_32Ab7TO+L^)0O6*cnFoH|hTwSoQzT`OolR(YE<pW9pe|
zgdfTC-KaaWUvSxv>hzDyQJ4N$FNyr|?&X%Z-Vq<xADQ3wT}t=wxuyRZIHqk+Uw$k5
zp4{GRikJ1i$|?t5Ubp1(5%C}w2Fv%imH%;Ce>nW@&X21fq>smo*F<L)e%Swz{c!xP
z_J`@cb=-F{&7JZ)W|hB{e|Vnd1>2|F$G+JaT-d7LzH5HNyFa4&YhQl8kzsZA@3*C<
zbFOW_#d>VI=+y&im+mfobvFOT;eVXH57yt<eB6G^zl{&#<zL=f-|(LyLteB-^-7KK
zhy8vR_<H#d)${yO`Qf{uM&-l%rrfP*AL~2T*%Zk8T+r3a{pxA5p6^cd%4qRTdrPuk
MGVFS{@ALng0FT#qB>(^b

literal 0
HcmV?d00001

diff --git a/src/main/java/plugins/tprovoost/workspaceeditor/images/sqBtnSmall.jpg b/src/main/java/plugins/tprovoost/workspaceeditor/images/sqBtnSmall.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..beb0c25c28804d55d2fcd035cc29deebccba5b55
GIT binary patch
literal 1338
zcmex=<NpH&0WUXCHwH#V1_nkTWcYuZp#{hrVDSF{gCGZk0D}NCqaXv5AS1IN<NqU!
zi-2xqg}96X3K*G~Sy<WFIXJnv1sIqZnVFebm|0m_Sb!>PfpQEif~-P{hK_8)fr;!&
zg(60c6BlwQJ8e8D8g%i4ig8j=6DOCLxP+vXs+zinrk07RnYo3fm9vYho4bdnS8zyZ
zSa?KaRB}pcT6#uiR&hybS$RceRdY*gTYE=m*QCi)rcRqaW9F<yi<c~2wtU6PRhu?%
z*}84}j-9&>9X@jO*zpr5PhGlv<?6NTH*Vf~_~`MIr_Y|hc=_t%r_W!$e*6C8=PyPE
zW_UnDJcQ&QpvM`RSXh`@*g^hbWGV+@W<eHKMME|r$3XVPLSZGNMh+3Di3>L#<Wx2e
z`XHKAbdgI;#pI#tN067mJ|fOTO=S59?jg8;{@-HYVP*tI7_%UQJ;T5K|5R&oewh9?
z|D){RG0*Pug2{)kO|O%=te4-~H*@9vxa>Net2tX{YnJk69}zc;3Y(d0w|s@$^<VEh
zx89X^xU}~B*%eu3Wgpj8R-P+tI<dj{OyQ?F1s_&Bbr%HwQ&U=_aVco7=jFw2e8n+e
zH;QIlST22PsmJ2?HD(_kch-bG+GEaMFjvMl=dp0(S!0RAf>z%mY-Z~pNvn7ncsOCh
zk2~iLj~wT2TluwSyT<9yGMA;pr}go(#^s%^cly!%V18FTSMHzshkMx$J9dX(GWCr<
ze0|#YI`%91Z}hgD?tWo%H|+3{`Fu5wkM?uNY2S@Fz9Qo8i#YYGYnE@FCbDB<O7?1t
zT}FR$ZH}`$OS|crtUeahR9dk0?~QW-L7^KWdg8>Eq@O;^8F(bLyE{B9=3<<=_=jWW
z%@+M84||Sn(SE#X)|QM%%X#+Ootm^ZoZDGgEBN$|#cB`#{AXZ~=70OQO{pz)@`G%r
zy;gI!Ja@l&ZROcNK7Z#c|CspDdq0QsNA9Ec{Fl6cyi?ovVe0!fyE`s&HNh{XmUTb&
z=l`+(u++MV)iUSBmM?x?C$n$c9F99W!LB?f=cP~o&ye{rPW*Mn8qw#HRyX`td*!;C
zybM|1b2#b4))iNRvX*MysG2Zo^QK9@Wd-&UdhF*{K40IyiBGNM!`Bt=dXL2C1sx8a
z8yP&u@P<u3@ADe#c~5uF6DnD3BbPWWUBbsz((>r3l2swgt>iiF)8@1P5&Mz9;E(o)
zzRjhT5AO;+kK3`i>)(F{uW8@D2YmGJEUg!P^{KYmapNVE45`nt*GoCqZh0&0a=GNR
z#L}+QzL($TDzu68%-1^fWM(bTX0~S^epDu@iwEB<K2@>CHzzjJ)NQJiLD2fRC5!!f
zr9xI7T~+e(kYG>PJ>`nVc@+zfS+1A<D0Rr){OpRS7Fkz5=u7LE>X^AtdV0rxT41Zs
odD)rIB02+4eOe={wPVk5!{ccZr!K7QI`-(J#H_1X=l|aX08q;+o&W#<

literal 0
HcmV?d00001

-- 
GitLab