From f2194c905c33a9452385ccfcfc9a69db0e367b56 Mon Sep 17 00:00:00 2001
From: Philipp Spohr <spohr.philipp@web.de>
Date: Thu, 31 Aug 2017 19:49:10 +0200
Subject: [PATCH] Swing is everything but fun

---
 LICENSE                                       |  19 +++
 pom.xml                                       |  26 +++++
 .../de/hhu/ba/yoshikoWrapper/CyActivator.java |  21 ++++
 .../ba/yoshikoWrapper/core/AlgorithmTask.java |  21 ++++
 .../core/ConfigurationManager.java            |  21 ++++
 .../de/hhu/ba/yoshikoWrapper/core/CyCore.java |  21 ++++
 .../yoshikoWrapper/core/GraphicsLoader.java   |  58 ++++++++--
 .../core/LocalizationManager.java             |  21 ++++
 .../core/NetChangeListener.java               |  21 ++++
 .../ba/yoshikoWrapper/core/NetworkParser.java |  21 ++++
 .../hhu/ba/yoshikoWrapper/core/NodeMap.java   |  21 ++++
 .../ba/yoshikoWrapper/core/YoshikoLoader.java |  21 ++++
 .../ba/yoshikoWrapper/core/package-info.java  |  23 +++-
 .../graphModel/YoshikoCluster.java            |  21 ++++
 .../graphModel/YoshikoResult.java             |  21 ++++
 .../graphModel/YoshikoSolution.java           |  21 ++++
 .../graphModel/package-info.java              |  23 +++-
 .../ba/yoshikoWrapper/gui/ClusterView.java    |  26 ++++-
 .../ba/yoshikoWrapper/gui/ColumnMapper.java   |  44 +++++--
 .../gui/ComfortCollapsiblePanel.java          |  20 ++++
 .../ba/yoshikoWrapper/gui/ComfortPanel.java   |  23 ----
 .../yoshikoWrapper/gui/DoubleInputField.java  |  21 ++++
 .../ba/yoshikoWrapper/gui/EditCostPanel.java  |  51 +++++---
 .../gui/EnableWhenSelectedListener.java       |  21 ++++
 .../ba/yoshikoWrapper/gui/FormatHelper.java   |  21 ++++
 .../yoshikoWrapper/gui/IntegerInputField.java |  21 ++++
 .../yoshikoWrapper/gui/LanguageSwitcher.java  |  21 ++++
 .../ba/yoshikoWrapper/gui/LibStatusPanel.java |  21 ++++
 .../ba/yoshikoWrapper/gui/LibraryPanel.java   |  32 ++++-
 .../hhu/ba/yoshikoWrapper/gui/MainPanel.java  | 109 ++++++++++--------
 .../gui/OperationModePanel.java               |  34 ++++--
 .../gui/ReductionRulesChooser.java            |  56 +++++----
 .../ba/yoshikoWrapper/gui/ResultPanel.java    |  30 ++++-
 .../gui/SolutionNumberChooser.java            |  26 ++++-
 .../ba/yoshikoWrapper/gui/SolutionTab.java    |  30 ++++-
 .../hhu/ba/yoshikoWrapper/gui/SwingUtil.java  |  33 ++++++
 .../yoshikoWrapper/gui/TimeLimitSetter.java   |  26 ++++-
 .../ba/yoshikoWrapper/gui/YLibChooser.java    |  21 ++++
 .../ba/yoshikoWrapper/gui/YoshikoHeader.java  |  32 ++++-
 .../yoshikoWrapper/gui/YoshikoHelpDialog.java |  21 ++++
 .../yoshikoWrapper/gui/YoshikoHelpModel.java  |  21 ++++
 .../ba/yoshikoWrapper/gui/package-info.java   |  23 +++-
 .../yoshikoWrapper/logging/YoshikoLogger.java |  21 ++++
 .../yoshikoWrapper/logging/package-info.java  |  23 +++-
 src/main/resources/YoshikoStrings.properties  |  25 +++-
 .../resources/YoshikoStrings_de_DE.properties |  23 +++-
 .../resources/graphics/YoshikoAlphaLogo.png   | Bin 6862 -> 3620 bytes
 .../resources/graphics/YoshikoAlphaText.png   | Bin 7125 -> 10911 bytes
 src/main/resources/graphics/package-info.java |  23 +++-
 49 files changed, 1138 insertions(+), 162 deletions(-)
 create mode 100644 LICENSE
 create mode 100644 src/main/java/de/hhu/ba/yoshikoWrapper/gui/ComfortCollapsiblePanel.java
 delete mode 100644 src/main/java/de/hhu/ba/yoshikoWrapper/gui/ComfortPanel.java
 create mode 100644 src/main/java/de/hhu/ba/yoshikoWrapper/gui/SwingUtil.java

diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..e79e5f8
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,19 @@
+Copyright (C) 2017 Philipp Spohr
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/pom.xml b/pom.xml
index 1ef32a4..bc32d80 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,3 +1,24 @@
+<!--
+  Copyright (C) 2017 Philipp Spohr
+  
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction, including without limitation the rights
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+  
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+  
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+-->
 <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>
 	
@@ -131,6 +152,11 @@
 			<version>${cytoscape.api.version}</version>
 			<type>bundle</type>
 		</dependency>
+		<dependency>
+			<groupId>org.cytoscape</groupId>
+			<artifactId>swing-util-api</artifactId>
+			<version>${cytoscape.api.version}</version>
+		</dependency>
 	</dependencies>
 
 	<description>A Cytoscape plugin for graph-based clustering that wraps the yoshiko algorithm.</description>
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java b/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java
index 1f4f60e..aff1010 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper;
 
 import java.util.Properties;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/AlgorithmTask.java b/src/main/java/de/hhu/ba/yoshikoWrapper/core/AlgorithmTask.java
index a07a2e9..77b7ca9 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/core/AlgorithmTask.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/AlgorithmTask.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.core;
 
 import java.util.Properties;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/ConfigurationManager.java b/src/main/java/de/hhu/ba/yoshikoWrapper/core/ConfigurationManager.java
index 3138cdd..1fbcaac 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/core/ConfigurationManager.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/ConfigurationManager.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.core;
 
 import org.cytoscape.property.AbstractConfigDirPropsReader;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/CyCore.java b/src/main/java/de/hhu/ba/yoshikoWrapper/core/CyCore.java
index ef06d00..2bd7ce6 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/core/CyCore.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/CyCore.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.core;
 
 import org.cytoscape.application.CyApplicationManager;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/GraphicsLoader.java b/src/main/java/de/hhu/ba/yoshikoWrapper/core/GraphicsLoader.java
index 77ba436..3590a50 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/core/GraphicsLoader.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/GraphicsLoader.java
@@ -1,22 +1,62 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.core;
 
+import java.awt.Image;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+
+import javax.imageio.ImageIO;
 import javax.swing.ImageIcon;
 
 public class GraphicsLoader {
-	private static ImageIcon yoshikoLogo;
-	private static ImageIcon yoshikoText;
+	private static BufferedImage yoshikoLogo;
+	private static BufferedImage yoshikoText;
+	
+	private final static ClassLoader classLoader = GraphicsLoader.class.getClassLoader();
 	
-	public static ImageIcon getLogo() {
+	public static ImageIcon getLogo(int size) {
 		if (yoshikoLogo == null) {
-			yoshikoLogo = new ImageIcon("/resources/graphics/YoshikoAlphaLogo.png");
+			try {
+				yoshikoLogo = ImageIO.read(
+						classLoader.getResource("graphics/YoshikoAlphaLogo.png")
+				);
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
 		}
-		return yoshikoLogo;
+		return new ImageIcon(yoshikoLogo.getScaledInstance(size, size, Image.SCALE_SMOOTH));
 	}
 	
-	public static ImageIcon getText() {
-		if (yoshikoLogo == null) {
-			yoshikoLogo = new ImageIcon("/graphics/YoshikoAlphaText.png");
+	public static ImageIcon getText(int height) {
+		if (yoshikoText == null) {
+			try {
+				yoshikoText = ImageIO.read(
+						classLoader.getResource("graphics/YoshikoAlphaText.png")
+				);
+			} catch (IOException e) {
+				e.printStackTrace();
+			}		
 		}
-		return yoshikoText;
+		return new ImageIcon(yoshikoText.getScaledInstance(height*4, height, Image.SCALE_SMOOTH));
 	}
 }
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/LocalizationManager.java b/src/main/java/de/hhu/ba/yoshikoWrapper/core/LocalizationManager.java
index 99807cb..ef548ff 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/core/LocalizationManager.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/LocalizationManager.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.core;
 
 import java.util.Collection;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/NetChangeListener.java b/src/main/java/de/hhu/ba/yoshikoWrapper/core/NetChangeListener.java
index 49da3d0..9a9e48c 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/core/NetChangeListener.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/NetChangeListener.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.core;
 
 import org.cytoscape.application.events.SetCurrentNetworkEvent;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/NetworkParser.java b/src/main/java/de/hhu/ba/yoshikoWrapper/core/NetworkParser.java
index 62079e0..22e1a6a 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/core/NetworkParser.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/NetworkParser.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.core;
 
 import java.util.List;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/NodeMap.java b/src/main/java/de/hhu/ba/yoshikoWrapper/core/NodeMap.java
index 821b51a..83a2999 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/core/NodeMap.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/NodeMap.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.core;
 
 import java.util.HashMap;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/YoshikoLoader.java b/src/main/java/de/hhu/ba/yoshikoWrapper/core/YoshikoLoader.java
index 0934c7c..c8a8708 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/core/YoshikoLoader.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/YoshikoLoader.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.core;
 
 import java.io.File;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/package-info.java b/src/main/java/de/hhu/ba/yoshikoWrapper/core/package-info.java
index 93b406c..b0e6662 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/core/package-info.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/package-info.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 /**
  * 
  */
@@ -5,4 +26,4 @@
  * @author Philipp Spohr, Aug 6, 2017
  *
  */
-package de.hhu.ba.yoshikoWrapper.core;
\ No newline at end of file
+package de.hhu.ba.yoshikoWrapper.core;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoCluster.java b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoCluster.java
index 86021ef..266fe60 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoCluster.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoCluster.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.graphModel;
 
 import java.util.ArrayList;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoResult.java b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoResult.java
index 455518d..e641e9f 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoResult.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoResult.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.graphModel;
 
 import java.util.ArrayList;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoSolution.java b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoSolution.java
index 3439447..2b1237c 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoSolution.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoSolution.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.graphModel;
 
 import java.util.ArrayList;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/package-info.java b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/package-info.java
index 0c6ae2f..a828f2d 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/package-info.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/package-info.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 /**
  * 
  */
@@ -5,4 +26,4 @@
  * @author Philipp Spohr, Aug 27, 2017
  *
  */
-package de.hhu.ba.yoshikoWrapper.graphModel;
\ No newline at end of file
+package de.hhu.ba.yoshikoWrapper.graphModel;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ClusterView.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ClusterView.java
index 3dbb10f..328fa43 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ClusterView.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ClusterView.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
 import java.awt.Color;
@@ -9,6 +30,7 @@ import javax.swing.BorderFactory;
 import javax.swing.Box;
 import javax.swing.BoxLayout;
 import javax.swing.JLabel;
+import javax.swing.JPanel;
 import javax.swing.border.Border;
 
 import org.cytoscape.model.CyNode;
@@ -18,7 +40,7 @@ import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
 import de.hhu.ba.yoshikoWrapper.graphModel.YoshikoCluster;
 
 @SuppressWarnings("serial")
-public class ClusterView extends ComfortPanel {
+public class ClusterView extends JPanel {
 	
 	private final JLabel title;
 	private final JLabel clusterSize;
@@ -43,7 +65,7 @@ public class ClusterView extends ComfortPanel {
 		title = new JLabel(LocalizationManager.get("cluster")+" "+(c.id+1));
 		clusterSize = new JLabel(LocalizationManager.get("clusterSize")+" "+c.nodes.size());
 				
-		this.addAll(title,clusterSize);
+		SwingUtil.addAll(this,title,clusterSize);
 		this.add(Box.createVerticalStrut(4));
 		
 		//Loop over nodes in the cluster and add them to the view
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ColumnMapper.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ColumnMapper.java
index 7d1c83b..a9837aa 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ColumnMapper.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ColumnMapper.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
 
@@ -6,6 +27,7 @@ import java.awt.FlowLayout;
 import javax.swing.BoxLayout;
 import javax.swing.JCheckBox;
 import javax.swing.JComboBox;
+import javax.swing.JPanel;
 
 import org.cytoscape.model.CyColumn;
 import org.cytoscape.model.CyNetwork;
@@ -13,7 +35,7 @@ import org.cytoscape.model.CyNetwork;
 import de.hhu.ba.yoshikoWrapper.core.CyCore;
 
 @SuppressWarnings("serial") //will never be serialized
-public class ColumnMapper extends ComfortPanel{
+public class ColumnMapper extends JPanel{
 	
 
 	//Swing components
@@ -25,9 +47,9 @@ public class ColumnMapper extends ComfortPanel{
 	private final JCheckBox useMappingPerm;
 	private final JCheckBox useMappingForb;
 	
-	private final ComfortPanel costGroup;
-	private final ComfortPanel permGroup;
-	private final ComfortPanel forbGroup;
+	private final JPanel costGroup;
+	private final JPanel permGroup;
+	private final JPanel forbGroup;
 		
 	public ColumnMapper() {
 		this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
@@ -58,20 +80,20 @@ public class ColumnMapper extends ComfortPanel{
 			new EnableWhenSelectedListener(useMappingForb, forbiddenMapper)
 		);
 		
-		costGroup = new ComfortPanel();
-		permGroup = new ComfortPanel();
-		forbGroup = new ComfortPanel();
+		costGroup = new JPanel();
+		permGroup = new JPanel();
+		forbGroup = new JPanel();
 		
 		costGroup.setLayout(new FlowLayout());
 		permGroup.setLayout(new FlowLayout());
 		forbGroup.setLayout(new FlowLayout());
 
-		costGroup.addAll(useMappingCost,editingCostMapper);
-		permGroup.addAll(useMappingPerm,permanentMapper);
-		forbGroup.addAll(useMappingForb,forbiddenMapper);
+		SwingUtil.addAll(costGroup,useMappingCost,editingCostMapper);
+		SwingUtil.addAll(permGroup,useMappingPerm,permanentMapper);
+		SwingUtil.addAll(forbGroup,useMappingForb,forbiddenMapper);
 
 		
-		this.addAll(costGroup,permGroup,forbGroup);
+		SwingUtil.addAll(this,costGroup,permGroup,forbGroup);
 		
 		//Initial call to get table values
 		updateValues();
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ComfortCollapsiblePanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ComfortCollapsiblePanel.java
new file mode 100644
index 0000000..9292f72
--- /dev/null
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ComfortCollapsiblePanel.java
@@ -0,0 +1,20 @@
+package de.hhu.ba.yoshikoWrapper.gui;
+
+import org.cytoscape.util.swing.BasicCollapsiblePanel;
+
+@SuppressWarnings("serial")
+public class ComfortCollapsiblePanel extends BasicCollapsiblePanel {
+
+	public ComfortCollapsiblePanel(String text) {
+		super(text);
+	}
+
+	@Override
+	public void setCollapsed(boolean collapse) {
+		super.setCollapsed(collapse);
+		//Force resize of parent
+		if (getParent() != null) {
+			getParent().revalidate();
+		}
+	}
+}
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ComfortPanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ComfortPanel.java
deleted file mode 100644
index dbe4b53..0000000
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ComfortPanel.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package de.hhu.ba.yoshikoWrapper.gui;
-
-import javax.swing.JComponent;
-import javax.swing.JPanel;
-
-/**
- * Custom extension of the standard JPanel that provides some comfort functions
- *
- */
-@SuppressWarnings("serial")
-public class ComfortPanel extends JPanel {
-	
-	/**
-	 * Comfort Function
-	 * @param components The components that are to be added to this panel
-	 */
-	protected void addAll(JComponent... components) {
-		for (JComponent c : components){
-			this.add(c);
-		}
-		
-	}	
-}
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/DoubleInputField.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/DoubleInputField.java
index 80e89e2..0b9da46 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/DoubleInputField.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/DoubleInputField.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
 import javax.swing.JFormattedTextField;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/EditCostPanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/EditCostPanel.java
index e8b6192..0277bcd 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/EditCostPanel.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/EditCostPanel.java
@@ -1,19 +1,39 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
 import java.awt.FlowLayout;
 
-import javax.swing.BorderFactory;
 import javax.swing.BoxLayout;
 import javax.swing.JLabel;
-import javax.swing.border.Border;
-import javax.swing.border.EtchedBorder;
+import javax.swing.JPanel;
 
 import org.cytoscape.model.CyColumn;
+import org.cytoscape.util.swing.BasicCollapsiblePanel;
 
 import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
 
 @SuppressWarnings("serial") //Will never be serialized
-public class EditCostPanel extends ComfortPanel {
+public class EditCostPanel extends BasicCollapsiblePanel {
 	
 	//SWING COMPONENTS
 	private ColumnMapper columnMapper;
@@ -24,10 +44,11 @@ public class EditCostPanel extends ComfortPanel {
 	private JLabel icLabel;
 	private JLabel dcLabel;
 	
-	private ComfortPanel groupIC;
-	private ComfortPanel groupDC;
+	private JPanel groupIC;
+	private JPanel groupDC;
 	
 	public EditCostPanel() {
+		super(LocalizationManager.get("editingCostPanel"));
 		//Define Layout
 		this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
 		//Initialize components
@@ -43,22 +64,20 @@ public class EditCostPanel extends ComfortPanel {
 		icLabel = new JLabel(LocalizationManager.get("defaultInsertion"));
 		dcLabel = new JLabel(LocalizationManager.get("defaultDeletion"));
 		//Group the labels with their text fields
-		groupIC = new ComfortPanel();
-		groupDC = new ComfortPanel();
+		groupIC = new JPanel();
+		groupDC = new JPanel();
 		
 		groupIC.setLayout(new FlowLayout());
 		groupDC.setLayout(new FlowLayout());
 
-		groupIC.addAll(icLabel,icField);
-		groupDC.addAll(dcLabel,dcField);
+		SwingUtil.addAll(groupIC,icLabel,icField);
+		SwingUtil.addAll(groupDC,dcLabel,dcField);
 		
-		this.addAll(columnMapper,groupIC,groupDC);
-		
-		//Decoration/Visual
-		Border border = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
-		border = BorderFactory.createTitledBorder(border,LocalizationManager.get("editingCostPanel"));
+		SwingUtil.addAll(this,columnMapper,groupIC,groupDC);
 
-		this.setBorder(border);
+		//Decoration/Visual
+		//Border border = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
+		//this.setBorder(border);
 	}
 	
 	//SETTER / GETTER
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/EnableWhenSelectedListener.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/EnableWhenSelectedListener.java
index 1caa526..e021d4d 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/EnableWhenSelectedListener.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/EnableWhenSelectedListener.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
 import java.awt.event.ActionEvent;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/FormatHelper.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/FormatHelper.java
index e85294a..27549a3 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/FormatHelper.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/FormatHelper.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
 import java.text.DecimalFormat;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/IntegerInputField.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/IntegerInputField.java
index 09d40d6..cc6049e 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/IntegerInputField.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/IntegerInputField.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
 import javax.swing.JFormattedTextField;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/LanguageSwitcher.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/LanguageSwitcher.java
index 3bed26b..6773d7a 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/LanguageSwitcher.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/LanguageSwitcher.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
 import java.awt.event.ActionEvent;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/LibStatusPanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/LibStatusPanel.java
index 0cc321a..a24bfdc 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/LibStatusPanel.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/LibStatusPanel.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
 import java.awt.Color;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/LibraryPanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/LibraryPanel.java
index 5b78ee1..bdb7f21 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/LibraryPanel.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/LibraryPanel.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
 import java.awt.event.ActionEvent;
@@ -10,12 +31,14 @@ import javax.swing.JFileChooser;
 import javax.swing.JLabel;
 import javax.swing.border.EtchedBorder;
 
+import org.cytoscape.util.swing.BasicCollapsiblePanel;
+
 import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
 import de.hhu.ba.yoshikoWrapper.core.YoshikoLoader;
 import de.hhu.ba.yoshikoWrapper.swig.LibraryInterface;
 
 @SuppressWarnings("serial")
-public class LibraryPanel extends ComfortPanel {
+public class LibraryPanel extends ComfortCollapsiblePanel {
 	
 	//SYMBOLIC LINKS
 	private LibraryPanel self = this;
@@ -26,6 +49,7 @@ public class LibraryPanel extends ComfortPanel {
 	
 	
 	public LibraryPanel() {
+		super(LocalizationManager.get("libraryPanel"));
 		this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
 		//SWING COMPONENT INITIALIZATION
 		libStatusPanel = new LibStatusPanel();
@@ -54,9 +78,7 @@ public class LibraryPanel extends ComfortPanel {
 			}
 		});
 		
-		this.addAll(libStatusPanel,yoshikoVersionLabel,searchLibButton);
-		
-		//Decoration/Visual
-		this.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
+		SwingUtil.addAll(this,libStatusPanel,yoshikoVersionLabel,searchLibButton);
+
 	}
 }
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/MainPanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/MainPanel.java
index a328edf..23480f3 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/MainPanel.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/MainPanel.java
@@ -1,18 +1,44 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
 import java.awt.Component;
+import java.awt.Dimension;
 import java.awt.FlowLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.util.ArrayList;
 import java.util.Arrays;
 
+import javax.swing.BoxLayout;
+import javax.swing.GroupLayout;
+import javax.swing.GroupLayout.Alignment;
 import javax.swing.Icon;
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
 import javax.swing.JComponent;
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
+import javax.swing.JPanel;
 
 import org.cytoscape.application.swing.CytoPanelComponent;
 import org.cytoscape.application.swing.CytoPanelName;
@@ -26,11 +52,10 @@ import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
 import de.hhu.ba.yoshikoWrapper.core.YoshikoLoader;
 
 /**This class describes the Swing Panel that the user interacts with in cytoscape
- * @author Philipp Spohr, Aug 6, 2017
  *
  */
 @SuppressWarnings("serial")
-public class MainPanel extends ComfortPanel implements CytoPanelComponent {
+public class MainPanel extends JPanel implements CytoPanelComponent {
 
 	//SWING COMPONENTS
 	
@@ -40,93 +65,87 @@ public class MainPanel extends ComfortPanel implements CytoPanelComponent {
 	 * Swing is a bit special sometimes, so a panel is used to wrap the lang-switcher.
 	 * This prevents stretching of the component
 	 */
-	private final ComfortPanel langSwitcherWrapper;
+	private final JPanel langSwitcherWrapper;
 	private final LanguageSwitcher langSwitcher;
-	
 	private final LibraryPanel libraryPanel;
-
 	private final EditCostPanel ecPanel;
-	
-	
 	private final ReductionRulesChooser reductionRulesChooser;
-
 	private final OperationModePanel opModePanel;
 	
-	private final JCheckBox showAdvancedOptions;
+	//OTHER
+	
 	
-
-	private final ArrayList<JComponent> advancedOptions;
-
 	/**
 	 * Main constructor, creates a new Panel and initializes subcomponents
 	 */
 	public MainPanel() {
 				
 		//SWING INIT
-		this.setLayout(new FlowLayout());
+
 		
 		//Initialize Swing components
 		header = new YoshikoHeader();
 		
-		langSwitcherWrapper = new ComfortPanel();
+		langSwitcherWrapper = new JPanel();
 		langSwitcher = new LanguageSwitcher();
-		langSwitcherWrapper.addAll(new JLabel(LocalizationManager.get("switchLanguage")),langSwitcher);
+		langSwitcherWrapper.add(new JLabel(LocalizationManager.get("switchLanguage")));
+		langSwitcherWrapper.add(langSwitcher);
 		langSwitcherWrapper.setLayout(new FlowLayout());
 		
 		libraryPanel = new LibraryPanel();
+		if (!YoshikoLoader.isLibraryLoaded()) {
+			libraryPanel.setCollapsed(false);
+		}
 		
 		ecPanel = new EditCostPanel();
+		ecPanel.setCollapsed(false);
 		
 		opModePanel = new OperationModePanel();
 		
 		reductionRulesChooser = new ReductionRulesChooser();
 		
-		JButton runButton = new JButton("RUN");
+		JButton runButton = new JButton(LocalizationManager.get("run"));
 		runButton.addActionListener(buttonListener);
 
 		
-		showAdvancedOptions = new JCheckBox(LocalizationManager.get("showAdvanced"));
-		showAdvancedOptions.addActionListener(toggleAdvancedOptionsListener);
-
-		this.addAll(
+		SwingUtil.addAll(this,
 				header,
 				langSwitcherWrapper,
-				showAdvancedOptions,
 				libraryPanel,
 				ecPanel,
 				reductionRulesChooser,
 				opModePanel,
 				runButton
 				);
+	
+		
+		//Layout
+		GroupLayout layout = new GroupLayout(this);
 		
-		advancedOptions = new ArrayList<JComponent>();
-		//Manage all advanced components separately to enable toggling
-		advancedOptions.addAll(
-				Arrays.asList(
-						opModePanel,
-						reductionRulesChooser
-						)
+		layout.setHorizontalGroup(layout.createParallelGroup()
+				.addComponent(header)
+				.addComponent(langSwitcherWrapper)
+				.addComponent(libraryPanel)
+				.addComponent(ecPanel)
+				.addComponent(reductionRulesChooser)
+				.addComponent(opModePanel)
+				.addComponent(runButton)
 		);
 		
-		showAdvancedOptions(false);
+		layout.setVerticalGroup(layout.createSequentialGroup()
+				.addComponent(header)
+				.addComponent(langSwitcherWrapper)
+				.addComponent(libraryPanel)
+				.addComponent(ecPanel)
+				.addComponent(reductionRulesChooser)
+				.addComponent(opModePanel)
+				.addComponent(runButton)	
+		);
+		
+		this.setLayout(layout);
 
 		this.setVisible(true);
 	}
-	
-	private ActionListener toggleAdvancedOptionsListener = new ActionListener() {
-
-		@Override
-		public void actionPerformed(ActionEvent e) {
-			showAdvancedOptions(showAdvancedOptions.isSelected());
-		}
-		
-	};
-	
-	private void showAdvancedOptions(boolean show) {
-		for (JComponent j : advancedOptions) {
-			j.setVisible(show);
-		}
-	}
 
 	/**
 	 * ButtonListener for the "Run" Button
@@ -191,7 +210,7 @@ public class MainPanel extends ComfortPanel implements CytoPanelComponent {
 	}
 	
 	public Icon getIcon() {
-		return GraphicsLoader.getLogo();
+		return GraphicsLoader.getLogo(16);
 	}
 
 
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/OperationModePanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/OperationModePanel.java
index 133db24..f0fa03c 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/OperationModePanel.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/OperationModePanel.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
 import java.awt.event.ActionEvent;
@@ -11,10 +32,12 @@ import javax.swing.JRadioButton;
 import javax.swing.border.Border;
 import javax.swing.border.EtchedBorder;
 
+import org.cytoscape.util.swing.BasicCollapsiblePanel;
+
 import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
 
 @SuppressWarnings("serial")
-public class OperationModePanel extends ComfortPanel{
+public class OperationModePanel extends ComfortCollapsiblePanel{
 	private final JRadioButton useHeuristic;
 	private final JRadioButton useILP;
 	private final TimeLimitSetter timeLimitSetter;
@@ -25,7 +48,7 @@ public class OperationModePanel extends ComfortPanel{
 	private final ButtonGroup heuristicGroup;
 
 	public OperationModePanel() {
-		
+		super(LocalizationManager.get("operationMode"));
 		this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
 		
 		heuristicGroup = new ButtonGroup();
@@ -49,11 +72,8 @@ public class OperationModePanel extends ComfortPanel{
 		useHeuristic.addActionListener(ilpHeuristicSwitch);
 		
 
-		this.addAll(useILP,useHeuristic,solutionNumberChooser,timeLimitSetter,useTriangleCutsBox,usePartitionCutsBox);
-		
-		Border border = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
-		border = BorderFactory.createTitledBorder(border,LocalizationManager.get("operationMode"));
-		this.setBorder(border);
+		SwingUtil.addAll(this,useILP,useHeuristic,solutionNumberChooser,timeLimitSetter,useTriangleCutsBox,usePartitionCutsBox);
+
 	}
 	
 	ActionListener ilpHeuristicSwitch = new ActionListener() {
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ReductionRulesChooser.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ReductionRulesChooser.java
index 20b1a2f..074cd34 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ReductionRulesChooser.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ReductionRulesChooser.java
@@ -1,20 +1,39 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
-import java.awt.Component;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 
-import javax.swing.BorderFactory;
 import javax.swing.BoxLayout;
 import javax.swing.JCheckBox;
 import javax.swing.JLabel;
-import javax.swing.border.Border;
-import javax.swing.border.EtchedBorder;
+import javax.swing.JPanel;
+
 
 import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
 
 @SuppressWarnings("serial")
-public class ReductionRulesChooser extends ComfortPanel{
+public class ReductionRulesChooser extends ComfortCollapsiblePanel{
 
 	private final JCheckBox useCRule;
 	private final JCheckBox useCCRule;
@@ -25,10 +44,11 @@ public class ReductionRulesChooser extends ComfortPanel{
 	
 	private final DoubleInputField multFactor;
 	
-	private final ComfortPanel SNPanel;
+	private final JPanel SNPanel;
 
 	
 	public ReductionRulesChooser() {
+		super(LocalizationManager.get("redRuleChooserTitle"));
 		this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
 		//Initialize subcomponents
 		useCRule = new JCheckBox("Use Clique Rule");
@@ -39,11 +59,17 @@ public class ReductionRulesChooser extends ComfortPanel{
 		useSNRule = new JCheckBox("Use Similar Neighborhood Rule");
 		multFactor = new DoubleInputField(1, Double.POSITIVE_INFINITY);
 		multFactor.setText("1.0");
-		SNPanel = new ComfortPanel();
+		SNPanel = new JPanel();
+		
+		SwingUtil.addAll(SNPanel,new JLabel(LocalizationManager.get("multFactor")),multFactor);
 		
-		SNPanel.addAll(new JLabel(LocalizationManager.get("multFactor")),multFactor);
 		useSNRule.setSelected(true);
-
+		useCRule.setSelected(true);
+		useCCRule.setSelected(true);
+		useACRule.setSelected(true);
+		useHERule.setSelected(true);
+		usePDRRule.setSelected(true);
+		
 		useSNRule.addActionListener(new ActionListener() {
 			@Override
 			public void actionPerformed(ActionEvent e) {
@@ -57,7 +83,7 @@ public class ReductionRulesChooser extends ComfortPanel{
 		});
 		
 		
-		this.addAll(
+		SwingUtil.addAll(this,
 				useCRule,
 				useCCRule,
 				useACRule,
@@ -66,16 +92,6 @@ public class ReductionRulesChooser extends ComfortPanel{
 				useSNRule,
 				SNPanel
 				);
-		//By default all reduction rules should be applied
-		for (Component c :this.getComponents()) {
-			if (c instanceof JCheckBox) {
-				((JCheckBox)c).setSelected(true);
-			}
-		}
-		
-		//Create titled border
-		Border border = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
-		this.setBorder(BorderFactory.createTitledBorder(border, LocalizationManager.get("redRuleChooserTitle")));
 	}
 	
 	
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ResultPanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ResultPanel.java
index b9a0754..a6515d3 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ResultPanel.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/ResultPanel.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
 import java.awt.Component;
@@ -9,12 +30,14 @@ import javax.swing.Icon;
 import javax.swing.JButton;
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
+import javax.swing.JPanel;
 import javax.swing.JTabbedPane;
 
 import org.cytoscape.application.swing.CytoPanelComponent;
 import org.cytoscape.application.swing.CytoPanelName;
 
 import de.hhu.ba.yoshikoWrapper.core.CyCore;
+import de.hhu.ba.yoshikoWrapper.core.GraphicsLoader;
 import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
 import de.hhu.ba.yoshikoWrapper.graphModel.YoshikoResult;
 import de.hhu.ba.yoshikoWrapper.graphModel.YoshikoSolution;
@@ -23,7 +46,7 @@ import de.hhu.ba.yoshikoWrapper.graphModel.YoshikoSolution;
  * Conforms to CY 3.5 by being a CytoPanelComponent which is the norm for "result" panels
  */
 @SuppressWarnings("serial")//Will never be serialized
-public class ResultPanel extends ComfortPanel implements CytoPanelComponent{
+public class ResultPanel extends JPanel implements CytoPanelComponent{
 	
 	private final JTabbedPane solutionTabs;
 	private final JLabel costLabel;
@@ -56,7 +79,7 @@ public class ResultPanel extends ComfortPanel implements CytoPanelComponent{
 			
 		});
 		
-		addAll(costLabel,solutionTabs,destroyButton);
+		SwingUtil.addAll(this,costLabel,solutionTabs,destroyButton);
 	}
 	
 	public void deleteSolution() {
@@ -106,8 +129,7 @@ public class ResultPanel extends ComfortPanel implements CytoPanelComponent{
 
 	@Override
 	public Icon getIcon() {
-		// TODO Auto-generated method stub
-		return null;
+		return GraphicsLoader.getLogo(16);
 	}
 
 }
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/SolutionNumberChooser.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/SolutionNumberChooser.java
index c75006a..6f7e860 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/SolutionNumberChooser.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/SolutionNumberChooser.java
@@ -1,13 +1,35 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
 import javax.swing.JLabel;
+import javax.swing.JPanel;
 import javax.swing.JSpinner;
 import javax.swing.SpinnerNumberModel;
 
 import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
 
 @SuppressWarnings("serial")
-public class SolutionNumberChooser extends ComfortPanel {
+public class SolutionNumberChooser extends JPanel {
 	private final JSpinner numSolutionsSetter;
 	private final JLabel label;
 	
@@ -16,7 +38,7 @@ public class SolutionNumberChooser extends ComfortPanel {
 		numSolutionsSetter = new JSpinner();
 		numSolutionsSetter.setModel(new SpinnerNumberModel(1,1,Integer.MAX_VALUE,1));
 		label = new JLabel(LocalizationManager.get("nrSolutions"));
-		this.addAll(label, numSolutionsSetter);	 
+		SwingUtil.addAll(this,label, numSolutionsSetter);	 
 	}
 	
 	@Override
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/SolutionTab.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/SolutionTab.java
index 8a71ad1..4ef005d 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/SolutionTab.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/SolutionTab.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
 import java.awt.Dimension;
@@ -8,6 +29,7 @@ import javax.swing.Box;
 import javax.swing.BoxLayout;
 import javax.swing.JButton;
 import javax.swing.JLabel;
+import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 
 import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
@@ -15,10 +37,10 @@ import de.hhu.ba.yoshikoWrapper.graphModel.YoshikoCluster;
 import de.hhu.ba.yoshikoWrapper.graphModel.YoshikoSolution;
 
 @SuppressWarnings("serial")
-public class SolutionTab extends ComfortPanel {
+public class SolutionTab extends JPanel {
 	
 	private final JScrollPane scrollPane;
-	private final ComfortPanel scrollPaneContent;
+	private final JPanel scrollPaneContent;
 	private final JLabel clusterCount;
 	private final JButton createMetaGraph;
 	
@@ -30,7 +52,7 @@ public class SolutionTab extends ComfortPanel {
 		
 		this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
 		//init swing components
-		scrollPaneContent = new ComfortPanel();
+		scrollPaneContent = new JPanel();
 		scrollPaneContent.setLayout(new BoxLayout(scrollPaneContent,BoxLayout.Y_AXIS));
 		for (YoshikoCluster c: solution.cluster) {
 			ClusterView clusterView = new ClusterView(c);
@@ -52,7 +74,7 @@ public class SolutionTab extends ComfortPanel {
 			}
 			
 		});
-		this.addAll(clusterCount,scrollPane,createMetaGraph);
+		SwingUtil.addAll(this,clusterCount,scrollPane,createMetaGraph);
 	}
 	
 }
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/SwingUtil.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/SwingUtil.java
new file mode 100644
index 0000000..2761282
--- /dev/null
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/SwingUtil.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
+package de.hhu.ba.yoshikoWrapper.gui;
+
+import javax.swing.JComponent;
+import javax.swing.JPanel;
+
+public class SwingUtil {
+	static void addAll(JPanel panel, JComponent ... components) {
+		for (JComponent c: components) {
+			panel.add(c);
+		}
+	}
+}
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/TimeLimitSetter.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/TimeLimitSetter.java
index abb2ea2..81afa9b 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/TimeLimitSetter.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/TimeLimitSetter.java
@@ -1,14 +1,36 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 
 import javax.swing.JCheckBox;
+import javax.swing.JPanel;
 
 import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
 
 @SuppressWarnings("serial")
-public class TimeLimitSetter extends ComfortPanel{
+public class TimeLimitSetter extends JPanel{
 
 	private JCheckBox checkBox;
 	private IntegerInputField numberField;
@@ -29,7 +51,7 @@ public class TimeLimitSetter extends ComfortPanel{
 				}
 				);
 		//REGISTER COMPONENTS
-		this.addAll(checkBox,numberField);
+		SwingUtil.addAll(this,checkBox,numberField);
 	}
 	
 	@Override
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/YLibChooser.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/YLibChooser.java
index 176ec96..3beb2bd 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/YLibChooser.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/YLibChooser.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
 import java.io.File;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/YoshikoHeader.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/YoshikoHeader.java
index 220ddcf..889a03b 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/YoshikoHeader.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/YoshikoHeader.java
@@ -1,13 +1,35 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
 
 import javax.swing.BoxLayout;
 import javax.swing.JLabel;
+import javax.swing.JPanel;
 
 import de.hhu.ba.yoshikoWrapper.core.GraphicsLoader;
 
 @SuppressWarnings("serial")
-public class YoshikoHeader extends ComfortPanel {
+public class YoshikoHeader extends JPanel {
 	
 	private JLabel logo;
 	private JLabel text;
@@ -15,10 +37,10 @@ public class YoshikoHeader extends ComfortPanel {
 	public YoshikoHeader() {
 		this.setLayout(new BoxLayout(this,BoxLayout.X_AXIS));
 
-		logo = new JLabel(GraphicsLoader.getLogo());
-		text = new JLabel(GraphicsLoader.getText());
-
-		this.addAll(logo,text);
+		logo = new JLabel(GraphicsLoader.getLogo(32));
+		text = new JLabel(GraphicsLoader.getText(32));
+		
+		SwingUtil.addAll(this,logo,text);
 		
 	}
 }
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/YoshikoHelpDialog.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/YoshikoHelpDialog.java
index e30e48b..71ae6ea 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/YoshikoHelpDialog.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/YoshikoHelpDialog.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
 import javax.swing.JDialog;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/YoshikoHelpModel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/YoshikoHelpModel.java
index 241ac67..907a23e 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/YoshikoHelpModel.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/YoshikoHelpModel.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.gui;
 
 import javax.swing.event.TreeModelListener;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/package-info.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/package-info.java
index af1b4ba..602043f 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/package-info.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/package-info.java
@@ -1,4 +1,25 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 /**This package contains all Swing extensions and components (frontend)
  *
  */
-package de.hhu.ba.yoshikoWrapper.gui;
\ No newline at end of file
+package de.hhu.ba.yoshikoWrapper.gui;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/logging/YoshikoLogger.java b/src/main/java/de/hhu/ba/yoshikoWrapper/logging/YoshikoLogger.java
index 09df8c9..e208f49 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/logging/YoshikoLogger.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/logging/YoshikoLogger.java
@@ -1,3 +1,24 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 package de.hhu.ba.yoshikoWrapper.logging;
 
 import org.slf4j.Logger;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/logging/package-info.java b/src/main/java/de/hhu/ba/yoshikoWrapper/logging/package-info.java
index 4e8e500..92f5ada 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/logging/package-info.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/logging/package-info.java
@@ -1,4 +1,25 @@
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
 /**
  * 
  */
-package de.hhu.ba.yoshikoWrapper.logging;
\ No newline at end of file
+package de.hhu.ba.yoshikoWrapper.logging;
diff --git a/src/main/resources/YoshikoStrings.properties b/src/main/resources/YoshikoStrings.properties
index bf621de..1ecfdc7 100644
--- a/src/main/resources/YoshikoStrings.properties
+++ b/src/main/resources/YoshikoStrings.properties
@@ -1,3 +1,24 @@
+#-------------------------------------------------------------------------------
+# Copyright (C) 2017 Philipp Spohr
+# 
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+# 
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+#-------------------------------------------------------------------------------
 resultsPanelTitle = Yoshiko Results
 yoshVersion = Yoshiko Version
 resolveLibPath = Resolve Yoshiko Library Path
@@ -24,8 +45,10 @@ createMetaGraph = Create Meta-Graph
 metaGraph = Meta Graph
 showAdvanced = Show advanced options
 editingCostPanel = Editing Costs
+libraryPanel = Library
 defaultInsertion = Default insertion cost:
 defaultDeletion = Default deletion cost:
 switchLanguage = Plugin language:
 icTooltip = This value is used to determine what the algorithm pays when inserting an edge. Existing mappings overwrite this value. A higher value means that the algorithm is less likely to insert edges in order to generate a cluster.
-operationMode = Operation Mode
\ No newline at end of file
+operationMode = Operation Mode
+run = Perform Algorithm
diff --git a/src/main/resources/YoshikoStrings_de_DE.properties b/src/main/resources/YoshikoStrings_de_DE.properties
index 92b28a9..aa89df1 100644
--- a/src/main/resources/YoshikoStrings_de_DE.properties
+++ b/src/main/resources/YoshikoStrings_de_DE.properties
@@ -1,5 +1,26 @@
+#-------------------------------------------------------------------------------
+# Copyright (C) 2017 Philipp Spohr
+# 
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+# 
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+#-------------------------------------------------------------------------------
 resultsPanelTitle = Yoshiko Ergebnisse
 resolveLibPath = Yoshiko Library suchen
 clusterSize = Cluster Gr��e:
 solution = L�sung
-clustersFound = Gefundene Cluster:
\ No newline at end of file
+clustersFound = Gefundene Cluster:
diff --git a/src/main/resources/graphics/YoshikoAlphaLogo.png b/src/main/resources/graphics/YoshikoAlphaLogo.png
index 526809e194d1b5ba94fe2c78c0f0d884d409d30d..f13dc35cf24becfe8be3f416884073b36b04f8ea 100644
GIT binary patch
delta 3571
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

delta 6839
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
Qfq}u()z4*}QvzcX0C!5JCjbBd

diff --git a/src/main/resources/graphics/YoshikoAlphaText.png b/src/main/resources/graphics/YoshikoAlphaText.png
index eafac8c6726b9433584f17cc41eb11290e4cf5a0..5d9b127ace12d72208f05f4d3633ee0ed0f0472c 100644
GIT binary patch
delta 10884
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
Pfq}u()z4*}Q$iB}7<c8%

delta 7069
zcmbOqdewYFFo&F=snq4OzY`}$tJh20db&7<RNQ(STUjC!y6b;lsJ@~L%ON2l5!JpE
zN{bxLc-uHO9aRyEV(mA!()x9*w(^|h@xqdld$XT2^;K0^ZL*oqmE{qllEbO+TWwL|
zNk&f*M}eN39Fe<rzuIRXw`=X4fA7{t-+fuK{fq5#Kc<ztuWbLb?`a;xM<IO>s)tZ;
zvPe%vNZm0a)BSNu*Jm3(hKI7oy^2v6{a#IXW6WQ1^!-A`Es{LEnIa&$=MB@Hl3&cu
zypzpieg5$&QRU?BDXwZ8wNjpEtnf*0bl)bSY{ofp!4hU2BhEm@W?5~{No*!PUwTvm
zF7ru*FRAcb#L80d!J}c%8O+xZ5#lz_q2rPF8+B7j>xW;mLl<PSb4qSiFuyp1nM3v8
z`;2*)Gd{C<h-lkSOkgujbXxJk*W!%1Fq`t@+P5#~{1@k(zdrY96T36(p^U3mvouv-
zrZ7y{x-N{N!Rth<`{y}s+#C}$!s{d-&E~ZBpXj(qPK{-s`@=1s^@7VTn<Xyj2$)f8
zep|esZ4tYQ$V{#&&0ZHS`D|RvWWXsj=Rnh<PrrEB&l?7GSa94}6!Ek7NZ5q`?4I53
zJ~0+riJGEmGF(P_^PFDg_WPgYIIgte@#C+mK~b>`W}Cw1C^7l6oN`sUlN8yk{CgkI
z`85$)J!TId?7SB?Uw!$P7?yg5iH8IkKXx)yuIyw@@75DgV`A`nx9yJmoV#<+GaYR8
zD$Z`_+f$ivZQ*~rlCD6vvmb)f<$50e%b&X;<<Qf+`mg_4Y@F!W6)Wko_e;yOi+x-E
z+z8rIb?a3>Yt!+6eyWFf3_dEXXlWPHd2w3p%L>;EY@GR=pBY3L6n5S&lILxFUhig?
z%_e!-*U3+cv$b1{|A2nTI<D#M;R_225;rka{{3J6_D{C{8}o(t9oO`Vny-0rxn|AH
z><W2i#!36t|Ih#C@>}+jq_Njl+5Wc@r8QqaO1TM`99}Hlpy=>}YoFeakV1`{X|*py
zzSn*JW*+(U^Qryf9P{Set>X%3Zl7msxh19kCD%Hx@XZT)8!ns*eYoo3p8MRJUo?H6
zEGUq%+()whq=%eEb%JPr9DAJIgt~%<2cwSYntxibxT5c4v@;JwZ;HhNmzke_&s?xI
ztGIINoZ30D3<u8HY}+<})%)-Ju78bf)aqNe-9$b+jHNU;_E&k~F0GiaVJwUc4FZe$
z=9-tCzf!+7_&)~&C&L342KU>CzolnahcE=J|9gGw%XM7WB_*G-GX!)bNt>i!n6^i@
zlKa-L#NR~{zXU3)C3I^a2h}{zuC6$GaLdEr+h5eSAN~Gzj+Gh1hR!Mb*KNu>cd(WH
zywVqb@$<cZ5?-!Uh|6>FTEf`ye45r#<*xb9_L?kBIhEARP@mY8$jmT%kp}a|U&p7*
z@4pyu{TN5<-rpVXVvD_s>$sjePtx<)rC;v;&dEg~LUl7^L++LO-d!u=)AoN#_*FFL
z{SL+a^0>h0cupCC4U2l-Hh2m#ypfqV<7?*AS{|Rb3<>%-;tLwWFBV_hywYTONiRoB
zb;=hH9_I71J##iX9GG4IO!c`D!;i@Zv)pg@c{xo=7IKbJ*A|%^?z3;^^^@o9-~JI3
zwA-KH6J_->!o8;Fb4~iQC+F4d&v3K|3m;+J$$ZNB<>`q}b|}4`yGF9-=|*D(g~dG*
z4wANv@184p=`u6u#Jap)T<a5W|M$LVsOQ5S&(F^9`ST=?$Asrv{M;Y+j?~K^I#R5D
zN&Pjeix2-)jo?3Jl?_)dSLZ(omH7SYhR?)+66qUnd9R56S@uq~@$1I(H_Vg$-RmN@
zd+$2?(sE6@{}J6U+$rzY-Kj5giQnt~_1|s=5m_<D1LrCj%{m1RNG@@*R%JN+z0ZH6
z5W|7Wk7v4ntAF#ZnG>FQb3$sk^8M@Q>VMDLn13uh@lhqy=UTItb$bF91n+6cn8nI*
z!oa-t{*u?b?k&*pGXM5;i)Us&<ADrkp{LVXy1AxI->G|6xAwk5#=evuE{0nh+S_9n
z+`1xik74iGdy`iehuyzfv*>1W%Doxk$71RaZsDHy;Ogmr3e|5nC7wRE{c7R%+WA}z
zaSRvc)<3sQPy8y?Zz{HSSK`&vY>A-^4wB!G?O2(4eYtJh)srz3Dlb3VZC-!tnwg=>
z{1u%=fzF#woldz}dSE$oBtyW2ltnLU6NIY5?p<eS=&PxF5*F9mTb?(kp+?&9g6qyl
zC$$fq{Ose`lRsyrp_cvIH!~YDcp3jBI$X656}})Y`iP-^>D;Fu{?7}Z_L(W{c<lRo
zx*JNqoqo4Bhc`cAD|@zhea+S5+fC<ZT#GQTJpS0)Oq5Ua%;UN#UT;<k2L%gizx0?r
z;Treq;NlHw|5izdojtnd=Qj3jYk&Vbx?cX+tFMxGpBo;zy472Su`(>kjQzl8rIh>T
zpBaR11Z27W?CISz-G5EJ{l_maWtY#s`G@bf@BW>S&0iln`gzNnEg_uey{7P}JeOi%
znX*^^o$blrx35eM{@?P1X-;g=t{oe`hx<f)lxUaS)^d+CmP2tx!*;VRVN*n>?Cm%B
zFx{e$Nu*a}SEu>4i=W-}4?Vi~(4V(npt?Tx;4W1Urjz%-KRnvLx};yuKy`WjjVUfF
zb=xCD-0rPuh?F~cPGfV<ql=1+L2oN;UQYJpUtPA9{acc^@9B4IzvtgQvg58>-AaZ9
zWu7k|nLPZtd*O$gD|Z6BRU1P)ujDvfVP;@BaK5^JAOG21d>*Hg*M|T1{2P2RWrAPy
zmNZ}2DbB16Uw`$l`_H}p|I@|O?K@PCG!)jCm+lSyeob~&bnCGwzuP~1REroI4p;8`
z%*ENd$@tJBhK8aqn-}ME{8$xn=D}@-`AWfxKUTWze)8MQb3)O!N?-93`73|T-l)c2
zj<(<ZY_q*la@d9=w~zFz{qsHW`M2P%_EW`Ym>=j`+o>}$^wwTGA9ud=?B(>O{3Zf7
z4L{kt@2hXC64HOOcmDD}3=7njsXQyXbD&>fNm_E?|KM5ir-Hq9e0k^HZorTbKIasJ
zFzdk<R)&VUk6*-RTb?{1=hGHx_|SCOA2XdqwVQ2ceoO2)!O)X@=TG7Lk8xU3VN*_T
zz0s3B_kuO!)_bMxuk0LN$cdb1KPzd%^3zS(U}MqMm5B|y^{1xH->viYP3LCrUCYY$
z&R%Qsr~mNtP`$N#u701lceQNjic?Fc+Ha}VPn{IybVOHMBf7)j<c=%TV)Is4%(7Yj
zrt{lA#)Q)BUu)aNW$Ny&nBk(x$Cw{+G=F}?;sxS-dUN<1y?aW{7HVm-TRGJms0em;
zHf_qjSK4W(`MGw{x2cl#PmS+A+#6uExuooNwaCKOH*A_3XZ2%mnAw$aZYrI3f0Etn
z3;X&0Ze42|-*olbx8Sd;$`7a8GR<l%PxNQg3S9Ch$8E>l)muOPnyO!PXHA}+x6!B8
ziIF#~)y?PEM5hQ=#ok@Lo3r=En{E9Q=WRQlTcdS<{U3gl6i;ud(@}Q$-QVk3zU93;
zcjx-Vk3wqQXPA|8)-z7ra;&WHcGk2j!4r3cO<b^A>Gjf-`Wdy;v%)8Du&)dMb9c`!
z=2Bgc8Ex<KJ!VcwI#zsWi=fE)-OI{kkGCYJef)1J&s0#pZKw3z_@t?u?wy^*%dm~n
zoVP;g_wQ+z(Ov=zzX(^pkZ)Ub;9*`txMKag#m6|Br5U1b%b7Fm_<r{8_UkFj4(l`c
zs?WNxm+M^KxyE%|*N;CI@14*2gU@6pufwMHrWGBp^WBZU@CkRzX)zSA+NU~sWqtba
zB=g4oS#>$L_WwS=yWDWy){VN4+hk-JUR<!}ncMN{PtWd2yjvIi{gPo|^ZaRw2;YHn
zDTW)19O@ss?%sMUH%IfN-p{wbyYp_z3w-W-W6RAUqS+;+P~fXRdtaWiS+?NcIJZl!
zo`*LcG?mG`ap>6$0q+CnHqTbQ({tN#VNKr8O&|07&OhCIr#$C=<T|eFIt&f7YE8Ax
z@9ayQcyCp9$MY06rkI6Ap*yCPGw6p-TbJ<mgzm$x9cO;dtbdWDd3N<qZ?!3VQVMSF
z<zYzJ{prh*DMz$7emf^)x%p_oe6LS2h8I;29r?}m;X6yhy80W38Z%BaGO)ax{@wUo
z^|99%_e3qu;x1ucKE<a}B)jD4lBxd%IF|D<T)B65Uf)&Qy^l*Q-6zx>dSJ@YqQfA;
z%H)@86RPaJVBYlabHYA^)*m!sXgDU^YrXB>_ODah@};B%q&8XqS|I$$Q<Smns1iej
z+~Ta@+PJP`J6<0++53XQ;i^ihz^Tu3m+yCbROj3Dd>704&X!N*uR;<`{Fp!ag<NEG
z(EeXtX&3f#PxtxVY#aG>Ll(0XzPwc_-WB_@d23{RWPJ0Li!2`(9RCm;CgD+kcHgZ2
zwL+SjrkQ7+Je|xPE4t1!`FZc$lxI%mPJwH8d|{dup||*X@4T**H-XBJp6~R1*?o>d
zX65RqEs+a9#4P!<$duvv5hn#L28L5R@^4M#@AJsNb>ruabLkUR;vCNS<Sfw++h65h
zy4FF!VD$sTKha?iPVSn0UH6jdUegGsZ}aOf{r3!SU43TalY)Yl)y6HJyg?tG^~C*l
zZg99@pXQ+v$T`br&A&yv+ywr&pDJef=x9E79!Jl!Qihy2&+7g1tbVTWNw%Nz?}PG#
z;BL2W2gl>F{_f%JT#f7j88QnE{#{v9S8;K}BBq?w`BNutx6b#SUKcCG`Yv@xYUlJT
zleYeGtndGLtk>L*wMbp&=f9?1Z~9d1&u6lKno}fVuM}o4#pqD7E1y9iXJ`58sLgEs
z>uh$hcs^il;AF_ywd{I9(mOdB$0Yx%#QIsB%&(q`@aoTs{F-=`d!c|)dhI!{1J^%j
z&sFeN32K^iK|Rso`oGxSN?~GC4Oa!ud49P1+k+2UBJ=9IixdQHMO38p*&eEHx~2Jc
z=KFJdito8T|J!%{#Jc0<QwtqbK2)fgUuj@wDr-^Y^?Aj~pzh-&Z1&pEN60BeVELhW
z>ECniett9W<zBb1uS}mUHS{ledHHG4Y8ILAzjn;Y<<E;|-2bLZIPD2HyZAl6x6hYU
zzUJ;&edz1HmTc*5o9dshuZ}xiq4!wvO@8oopW4!!7gEblMTEUtXx}XROL6Ct6b6f%
z2W`ZkS}C#3x;Tr)#G5UP;X$lz>DSYHy3+gS>azb!n#sU_;PM;C{z<Q_m*uy0Zg-k!
zF*)jwnaGn><)Qz#JlZAdFUqHPCVt+|ny|Nxx3+F-@t!^7n+8js%|=hI`t&Q)^ymLC
zio5C_dOu5!*LR0ttH$B^67v{;EL{5bU;pvXcFDg|3Mxdk&Kv%6n{&@=isl{<PlN5;
zx~rG1n{_&{MxTk{*UZJ~+Y;WY#Lh9<Cd}aHzVCc?P1Ne>*{9Q{?Txh9QIPg<!lCFa
zzAI}cetCCeFMn7gr}wN=SKfXID&O(0zWbEw)Ts;(-s`j<=G~DhxxS!X!Qio+0ss9U
zwaVu{cTYOzdQ0oLEkjMFf$JKJxX8tE^R~J>IIOQ)&viHCvBmj9#u@iznAc3*`L2Hb
zX|6-e3H#4-Fv<Pjp;>YLY|Qor1qBavOWR+Wc`!BHyv1^Aq5ia=&qQU<theRfHRajV
zeNUz9<Fj+KvoEh)_P+AHU!37j!RD>U!|qK~?(WYK|8Peqj=$}BA;XIWDGLhi!c}@^
zF|gcHE$LfpskT{yy;%FA<=wdOZ%)FMz4j(~?0^2*#Z^2KwO#si>F2v&-#wo5QHnMG
z81n^7xsJkFr<EBQ(&jaZ{!4!R`+w-dNY(Wp;@(WVms{WSD5PS!ls3ZxIeptWd6x5?
zq4Vb37M9IE;JxS}%h~u~zJ~1v9pNUNuk}U!e01hj@GJ3XDaX96(=t=#&0bxU`LunF
z_sdlUYYRhnT-&J?Gk>>M%<LG^b!RVM^RMn=W|2GmUWy?j-tPO;Zl;H+$1`1jGMnw$
zVr#U3JCTE(Ni3;;?wyiJ(p*p9pNr@D@vHiBEthb&+P!9t+5j8-O<zv5C)CZ<Xyu6I
z6%%G}VyI7?5X$hNifQfEwJQw1O5Ay@mQkPFGx4X{x94AYFaJLyedS?md%pscY=F=t
z;bRUDWVVQZ=JKmA{I#WF`=;lN64Na<bH~(l-OplTxUp0`tRg!sqQ2l$&dzdg!S|_G
z*QqT%@8vJv=uli*EP3j)qU|S1^LWl#&$;>Pl|8cD|7?4Z5zD1>ioN9#V}kj%0EP?U
zzOi39)^EJCcBj5^(*e1ysmu)3N&Al+IWpzQ?u}-9*4|^Au;*1&>599o3$CA=Em`z`
z!fDl*2xGhCo$S{>MKd-eI5BF~Gcqtf^!(}l^#6m<9j|7tj&pTVtk2kxb!yde-wHpA
zE_t2vj7O%oUoxolH+;*;Qv7-?+n<&8Ilc|=R(>yd9G&j}{K1*lnXEn0ck6DiVLJEn
z_44=6w{Cpfn9I*lbbPK~smaD^f9t-jJrJ+|K)(9dnJ?<9FFjP88F)Xk^km;VdyAv~
z=+dP^3RllLTW)y~uyft(J5N%+U3zo>qZ7m1HOss|#Bfe~ep~)do&BSa8{;OuU<$8V
z$IM`QGU9ZEN!UkIK8F|V&*W#E$u>xhITibJ_vibY$~Rj}YCn+p|LsT2b;j#<?-EMx
zR%e}F8Ra9fsyuXm>s8NvT0a+R&)-$V!lJj~qxOyZEnhFsQ`F+LShBdR{;gKG;WCe(
zH{Hcb&K_boBWuQ7s{d@^nv;>AtK*hF5j<(GY`EwD&Ch@4&GxPMw`}k1yMjFD>+k$Y
z?&WNFEtYxV;Ze4Y!D}iQtR9<n`JMfE-SWq;gR2gH=lSQkQG4%3x3`|(7=K!S_Fluc
z$7Fel*@NAJFOON*n~Ckxius=WRd46tN#<<l<X+hA{ru(6DSoZ(q3>6%du_kAKI_-o
zmzH<+-`Y*S9zSz+&cdTClW&SFIWsXq>bZ34fmkty4azq&9&hh0UHf&d``qW&7au?P
zRQ7!D-<MbC|GW3#;Ln%wTbI1L(V_1CXN}d>CwxzT_AcGL;P17vxy+M{*z0$+@QNfQ
z$}&vTnItH7R)yujv-@8cJ#>9+{mFUN_b~m;AKMnP2Ab8+-}*aSyg+h^R^OCD&Hk9r
zw@l@qzC95=`=igX{~c5Qzd5<Nx^e%Xn_1^rX4g&0b!PvWX)D>^_<ZIL#shn6&U~t_
z6qWVt+j1|tTAew)Ipkx<qdR=hD?^>R>sjWhF62BEcya3UkC6=uYgqkXR%*Pd|G&9#
ze(X)b=Dc4kU#{leY_2035yi`}#VGuy)7jOgZMWvHd;ROwo2m88HD_CN7%CiXl9N<f
zF6b~dME;J*JM{mG?5fA-xKeaaMIBOcyIrX@zweicHjj<C?z*JLO_zlmHnK1Xs4yfP
z>d~#w&oy_x5On)ekj*9w=8O+LD{Lcn?@6gSX)L3iuw{i5L&nkR;_0t<-4p5hB+jcn
zi}A-n)i~j&k95s8aWO>1ZnjIk?XJ83<M&H{f*#6tUq7=yjZ4Yiis8jO<9F8{t?oKr
z&UAj`R}CwnNypL|S>`oF)@UkiJHh;cdqY`RwysQ&Mg69Sx7(DuyFBdY|NWVNn(LI9
zLGo1wdyhl=cP!7y2uyqYz1MrK(9)mFpZ#@p?*4T9+m7s}h&VO|6Jdc3m)g`gFNHa9
zh1T8wd{_Ox?XhfyQm0qK3O7`inP$&Bq}V$1>(sCE<pSqRg$u4uEa)r?`@=7AS6cRl
zv(ko_5^vOEW;5QXuVG1hzNOYHeUH3@<E^jv-_80OckS(7<ErAvKIP57Uwm`lZeLz?
z`(>8O?elWVX+G;DXTFb5HrQD4Xg{a`^b>4+wffcdb#wQ9GxbZG`~0WG!TAc;PGv8c
zcwAx4l?g7%{(R5w#xGE2Yqwq5F_-`O-t*jxd!`9n*M=t^TT=K+Dz)B$l_C1t?#S(5
z<!)B{ao8O96EvHr_QsJxaZR;Wk|0CR8AH8O2~)4KGrXDkA>zynSB3_OTcrvQl2|0(
z{Lp+O#L4wTvPptr!~Ns;HYJzMx7n6)LR+9Lr%JGUbL8pw!8+ff^zT*Hh%m~qo@C#!
z;NWhP;O7;^$E>stsrRT$F?HRj&viW(UDKg*ej{t>S{dghg_9Z+*&8Bev9SoepZ8f}
z#(^pZiG`&s3^l>Nau4QfE#_uv63uul6vxlRbnLKIO;h*I<|!LDS$*iYdVKVMh!Deu
zimM*#T^#$*ePq!1Y?u9)@gviUgq}2pgqWSn9Uo+RNc2Wbc+}dl%5j^Ejk&eSwfe&i
z`!jeQZhU6grV(D&^k;Tyv8dX<s}c+e{U7-v*v>q0u6TZV<GQUc_Bj||pC9UDz%YTA
zNxb96jQ6Ss_HXmr^0QOv-Byj5#MeRx#3eF2*csHg&VCltn6&n|NQC>Q7jFCxPaC#m
z{F*4?&`?`Z{_|tSyTn79+a1`HjaVhJ<rsF?&+0Nb#n+?CbmZ>gDfd@6>`M_Yn8M7=
z;IqJ$JG<hey~LUx-pu1S<|}=$aA7#m7LoS&nt(rNa0IL8gN;nRnkEKYmUpx(+FX)l
z>VKvrup`?4VTJUYcdpl(6EaUeX6%11r^f$aDodjuGgCB=rv1Z)2Ju3ES0`Pk`cn-I
zWmao?>nF1-G{h^NJiRXYZ}Mi5H6JvEybdzk@-Q&`(7tBk7t|H&v6SJzfZsf)WI2ZS
zwGT9A_i1dnXs|-a(_P0Th*#l3>$mn*Gd{*_={UvwgGs?Qs7v&;C4)nfGwYG<Kf1!=
z8P&fXGupkznnQ-s_-<QI%HGgr_Mr+jGqn2}Wy=g!DAjwUbcVh7`QpvyKUN>!Gc9PE
zDcclLt2J@Sv)BeNNq%QT3Ff0J&kw{cT4fm5BK}b;rLym7a0PdR)zx3enHV;xzYsc-
z%C6R}x2Z2=Ld8M9^3>O>dmIG(Y&aU$AGypT8Q;_(y86eePF7Q9>&=l0_vV$F1^Y=J
z4Yx=X&M#}fzW!!?j=<EA1g1Zy12v33H#~JSX?xe@I`6aJl1mGd%lzhTmSYgJ7E;qu
zU~0T(si4&5d2@-fHb>64*<Ynruzc=hWYG{7(h$1b7m=gASi^?l0ppTmJ)zI`FiJk)
zG?PE_TTk|g`_#`<{F@IP4ly~9|8e5eogLrj&iiRzym8S+fkx@h)cR?aH#4+6b_g8d
z;yB-ETv)rdLSE_h(iss^3<syaQVVOFk@7C})lAKqqLrJ4m>7=N9uu3u_=xdDjXdYX
z=V^aBR(v`x#4w|=A@Y)k%7X-<<)6+?d+sa!$-zDC_Hv*7i~c!W;5Q8vnQ)@Bq2b;U
zmzAlhy<XeWTiX?Gip`Lio>19WUpZGW{9gnc!|I-Cfi;l|6ZRevyj`L+`OBlP+PCLx
zY?kxck-97)?c=UBXChBBHYgOjv9K}gXvm&F%-Q<fWY!e>YYYx1ajUPXMyzl4VB(+p
z!R|~<oc7<Dk?#Xode~03pJQkUczTS7p@TDi%_o~j?G4AQ7+APjt~50Wb1H1$vZ@ag
zw7>H2OiM4z!Y>!qoVPF^Pgi4p_{g$1%(bgj;RVM-MZp)BvtA@$Gi$BrbhBK%@n7P`
zGcr=DCW{P@2>;TaJTqfKvJAsHL2Uuvb*8-xy-AAf7bG2g>fbuavbUT|wEJnw5i{pG
kXr>D`#WhjyKf8H}<|U(Tnv)n9xEL5bUHx3vIVCg!0IJnm8~^|S

diff --git a/src/main/resources/graphics/package-info.java b/src/main/resources/graphics/package-info.java
index 0a04afd..d4f1d0f 100644
--- a/src/main/resources/graphics/package-info.java
+++ b/src/main/resources/graphics/package-info.java
@@ -1 +1,22 @@
-package graphics;
\ No newline at end of file
+/*******************************************************************************
+ * Copyright (C) 2017 Philipp Spohr
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ******************************************************************************/
+package graphics;
-- 
GitLab