From 605d3c99dc7f42e577639894dbe1ab01feb6c257 Mon Sep 17 00:00:00 2001
From: Philipp Spohr <spohr.philipp@web.de>
Date: Sat, 9 Sep 2017 15:27:41 +0200
Subject: [PATCH] Refactor

---
 LICENSE                                       |   2 +-
 .../de/hhu/ba/yoshikoWrapper/CyActivator.java |   2 +-
 .../ba/yoshikoWrapper/core/AlgorithmTask.java |   1 +
 .../ba/yoshikoWrapper/core/NetworkParser.java |   1 +
 .../yoshikoWrapper/core/StatusInformer.java   |   4 +
 .../{core => cytoUtil}/NetChangeListener.java |   3 +-
 .../{core => cytoUtil}/NodeMap.java           |   2 +-
 .../hhu/ba/yoshikoWrapper/help/HelpLinks.java |  69 ++++++++++++++++--
 .../ba/yoshikoWrapper/swing/FormatHelper.java |  24 +++---
 .../{core => swing}/GraphicsLoader.java       |   4 +-
 .../ba/yoshikoWrapper/swing/HintManager.java  |  19 ++---
 .../swing/components/ClusterView.java         |   2 +-
 .../swing/components/HelpButton.java          |  11 ++-
 .../swing/components/LanguageRenderer.java    |   2 +-
 .../swing/components/LibStatusPanel.java      |   2 +-
 .../swing/components/MainPanel.java           |   2 +-
 .../swing/components/ResultPanel.java         |   2 +-
 .../swing/components/YoshikoHeader.java       |   2 +-
 src/main/resources/YoshikoStrings.properties  |   1 +
 thesis/tex/Chapter/dm_impl.tex                |   2 +-
 thesis/tex/Thesis.pdf                         | Bin 134681 -> 134687 bytes
 thesis/tex/Thesis.tex                         |   5 +-
 22 files changed, 122 insertions(+), 40 deletions(-)
 rename src/main/java/de/hhu/ba/yoshikoWrapper/{core => cytoUtil}/NetChangeListener.java (97%)
 rename src/main/java/de/hhu/ba/yoshikoWrapper/{core => cytoUtil}/NodeMap.java (97%)
 rename src/main/java/de/hhu/ba/yoshikoWrapper/{core => swing}/GraphicsLoader.java (97%)

diff --git a/LICENSE b/LICENSE
index e79e5f8..f08b7e2 100644
--- a/LICENSE
+++ b/LICENSE
@@ -16,4 +16,4 @@ 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.
+SOFTWARE.
\ No newline at end of file
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java b/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java
index dbf57cc..34607e9 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java
@@ -52,9 +52,9 @@ import de.hhu.ba.yoshikoWrapper.core.ConfigurationManager;
 import de.hhu.ba.yoshikoWrapper.core.CyCore;
 import de.hhu.ba.yoshikoWrapper.core.Hint;
 import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
-import de.hhu.ba.yoshikoWrapper.core.NetChangeListener;
 import de.hhu.ba.yoshikoWrapper.core.YoshUtil;
 import de.hhu.ba.yoshikoWrapper.core.YoshikoLoader;
+import de.hhu.ba.yoshikoWrapper.cytoUtil.NetChangeListener;
 import de.hhu.ba.yoshikoWrapper.swing.HintManager;
 import de.hhu.ba.yoshikoWrapper.swing.components.MainPanel;
 
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 dbdfd41..faccd1c 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/core/AlgorithmTask.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/AlgorithmTask.java
@@ -34,6 +34,7 @@ import org.cytoscape.work.AbstractTask;
 import org.cytoscape.work.TaskMonitor;
 import org.slf4j.Logger;
 
+import de.hhu.ba.yoshikoWrapper.cytoUtil.NodeMap;
 import de.hhu.ba.yoshikoWrapper.graphModel.YoshikoCluster;
 import de.hhu.ba.yoshikoWrapper.graphModel.YoshikoResult;
 import de.hhu.ba.yoshikoWrapper.graphModel.YoshikoSolution;
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 dabb092..eed69b6 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/core/NetworkParser.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/NetworkParser.java
@@ -29,6 +29,7 @@ import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyRow;
 import org.slf4j.Logger;
 
+import de.hhu.ba.yoshikoWrapper.cytoUtil.NodeMap;
 import de.hhu.ba.yoshikoWrapper.logging.YoshikoLogger;
 import de.hhu.ba.yoshikoWrapper.swig.LibraryInput;
 
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/StatusInformer.java b/src/main/java/de/hhu/ba/yoshikoWrapper/core/StatusInformer.java
index b4b054e..32987a6 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/core/StatusInformer.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/StatusInformer.java
@@ -72,6 +72,10 @@ public class StatusInformer extends CplexInformer {
 		else if (state == YoshikoState.REDUCTION_SN) {
 			taskMonitor.setStatusMessage(LocalizationManager.get("status_reductionSN"));
 		}
+
+		else if (state == YoshikoState.SOLVING_ILP) {
+			taskMonitor.setStatusMessage(LocalizationManager.get("status_solvingILP"));
+		}
 	}
 
 
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/NetChangeListener.java b/src/main/java/de/hhu/ba/yoshikoWrapper/cytoUtil/NetChangeListener.java
similarity index 97%
rename from src/main/java/de/hhu/ba/yoshikoWrapper/core/NetChangeListener.java
rename to src/main/java/de/hhu/ba/yoshikoWrapper/cytoUtil/NetChangeListener.java
index 8ab86ea..c5f9237 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/core/NetChangeListener.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/cytoUtil/NetChangeListener.java
@@ -19,7 +19,7 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  * SOFTWARE.
  ******************************************************************************/
-package de.hhu.ba.yoshikoWrapper.core;
+package de.hhu.ba.yoshikoWrapper.cytoUtil;
 
 import org.cytoscape.application.events.SetCurrentNetworkEvent;
 import org.cytoscape.application.events.SetCurrentNetworkListener;
@@ -34,6 +34,7 @@ import org.cytoscape.model.events.RemovedEdgesListener;
 import org.cytoscape.session.events.SessionLoadedEvent;
 import org.cytoscape.session.events.SessionLoadedListener;
 
+import de.hhu.ba.yoshikoWrapper.core.CyCore;
 import de.hhu.ba.yoshikoWrapper.swing.components.ColumnMapper;
 
 public class NetChangeListener 
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/NodeMap.java b/src/main/java/de/hhu/ba/yoshikoWrapper/cytoUtil/NodeMap.java
similarity index 97%
rename from src/main/java/de/hhu/ba/yoshikoWrapper/core/NodeMap.java
rename to src/main/java/de/hhu/ba/yoshikoWrapper/cytoUtil/NodeMap.java
index 83a2999..6406ac9 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/core/NodeMap.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/cytoUtil/NodeMap.java
@@ -19,7 +19,7 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  * SOFTWARE.
  ******************************************************************************/
-package de.hhu.ba.yoshikoWrapper.core;
+package de.hhu.ba.yoshikoWrapper.cytoUtil;
 
 import java.util.HashMap;
 import java.util.Map.Entry;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/help/HelpLinks.java b/src/main/java/de/hhu/ba/yoshikoWrapper/help/HelpLinks.java
index 46d77a4..3b6b5d5 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/help/HelpLinks.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/help/HelpLinks.java
@@ -1,33 +1,92 @@
+/*******************************************************************************
+ * 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.help;
 
+import java.awt.Container;
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.util.HashMap;
+import java.util.WeakHashMap;
 
+import org.slf4j.Logger;
+
+import de.hhu.ba.yoshikoWrapper.logging.YoshikoLogger;
 import de.hhu.ba.yoshikoWrapper.swing.components.EditCostPanel;
 
+/**
+ * Helper class that provides URIs to access the Bachelor Thesis paper sections that can be used as a manual
+ *
+ */
 public final class HelpLinks {
 
+	//SYMBOLIC LINKS
+
+	/**
+	 * Convenience function for better code readability
+	 */
+	private static final Logger logger = YoshikoLogger.getInstance().getLogger();
+
+	//
+
+	/**
+	 * The base location of the bachelor thesis paper
+	 */
 	private static final String docLocation = "file:///home/philipp/workspace/cs/BachelorThesis/YoshikoWrapper/thesis/tex/Thesis.pdf";
 
-	private static final HashMap <Class<?>,URI> helpLinks;
+	/**
+	 * A HashMap linking Classes to a link, pointing to a specific subsection of the BachelorThesis paper that is relevant for understanding the Class
+	 */
+	private static final WeakHashMap <Class<? extends Container>,URI> helpLinks;
 
+	/**
+	 * Initialization for the HashMap
+	 */
 	static {
-		helpLinks = new HashMap<Class<?>,URI>();
+		helpLinks = new WeakHashMap<Class<? extends Container>,URI>();
 		try {
 			helpLinks.put(EditCostPanel.class, (buildURI("subsubsection.2.2.1")));
 		} catch (URISyntaxException e) {
-			e.printStackTrace();
+			logger.error("Error initializing URI for help file:\n"+e.getMessage());
 		}
 	}
 
-	public static URI getHelpLink(Class<?> c) {
+
+	/**
+	 * Returns the URI that leads to the relevant help section for the class provided
+	 * @param c The Container class for which the help link should be fetched
+	 * @return The help link as URI
+	 */
+	public static URI getHelpLink(Class<? extends Container> c) {
 		if (helpLinks.containsKey(c)) {
 			return helpLinks.get(c);
 		}
 		return null;
 	}
 
+	/**
+	 * Internal helper function that builds a valid URI from the base address and the fragment denoting the relevant section
+	 * @param fragment The fragment naming the nameddest in the pdf file
+	 * @return The compound URI made from base address and fragment
+	 * @throws URISyntaxException If invalid -> Should never be called during runtime in a stable version
+	 */
 	private static URI buildURI(String fragment) throws URISyntaxException {
 		return new URI(null,docLocation,"nameddest="+fragment);
 	}
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/FormatHelper.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/FormatHelper.java
index faa161f..284757e 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/FormatHelper.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/FormatHelper.java
@@ -1,16 +1,16 @@
 /*******************************************************************************
  * 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
@@ -27,19 +27,19 @@ import java.text.NumberFormat;
 import javax.swing.text.NumberFormatter;
 
 public class FormatHelper {
-	
+
 	public static NumberFormatter getIntegerFormatter() {
 		return getIntegerFormatter(0, Integer.MAX_VALUE);
 	}
-	
+
 	public static NumberFormatter getIntegerFormatter(int minValue, int maxValue) {
 		NumberFormat format = NumberFormat.getInstance();
 	    NumberFormatter formatter = new NumberFormatter(format);
 	    formatter.setValueClass(Integer.class);
 	    formatter.setMinimum(minValue);
 	    formatter.setMaximum(maxValue);
-	    formatter.setCommitsOnValidEdit(true);
-	    formatter.setAllowsInvalid(true);
+	    applySharedAttributes(formatter);
+
 	    return formatter;
 	}
 
@@ -50,11 +50,15 @@ public class FormatHelper {
 	    formatter.setValueClass(Double.class);
 	    formatter.setMinimum(minValue);
 	    formatter.setMaximum(maxValue);
-	    formatter.setCommitsOnValidEdit(true);
-	    formatter.setAllowsInvalid(true);
-	    
+	    applySharedAttributes(formatter);
+
 	    return formatter;
 	}
 
+	private static void applySharedAttributes(NumberFormatter formatter) {
+
+	    formatter.setCommitsOnValidEdit(true);
+	    formatter.setAllowsInvalid(true);
+	}
 
 }
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/GraphicsLoader.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/GraphicsLoader.java
similarity index 97%
rename from src/main/java/de/hhu/ba/yoshikoWrapper/core/GraphicsLoader.java
rename to src/main/java/de/hhu/ba/yoshikoWrapper/swing/GraphicsLoader.java
index 1e2307c..ee1ae4b 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/core/GraphicsLoader.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/GraphicsLoader.java
@@ -19,7 +19,7 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  * SOFTWARE.
  ******************************************************************************/
-package de.hhu.ba.yoshikoWrapper.core;
+package de.hhu.ba.yoshikoWrapper.swing;
 
 import java.awt.Color;
 import java.awt.Image;
@@ -31,6 +31,8 @@ import java.util.Locale;
 import javax.imageio.ImageIO;
 import javax.swing.ImageIcon;
 
+import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
+
 public class GraphicsLoader {
 
 	//TODO: Organize Images in HashMap for better readability / flexibility
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/HintManager.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/HintManager.java
index d34d987..3c0d640 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/HintManager.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/HintManager.java
@@ -9,7 +9,6 @@ import javax.swing.JOptionPane;
 import org.slf4j.Logger;
 
 import de.hhu.ba.yoshikoWrapper.core.CyCore;
-import de.hhu.ba.yoshikoWrapper.core.GraphicsLoader;
 import de.hhu.ba.yoshikoWrapper.core.Hint;
 import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
 import de.hhu.ba.yoshikoWrapper.logging.YoshikoLogger;
@@ -19,9 +18,11 @@ import de.hhu.ba.yoshikoWrapper.logging.YoshikoLogger;
  *
  */
 public class HintManager {
-	
+
+	//TODO: Implement as HashMap
+
 	private static Logger logger = YoshikoLogger.getInstance().getLogger();
-	
+
 	private static final Runnable useMappingHint = new Runnable() {
 
 		@Override
@@ -30,7 +31,7 @@ public class HintManager {
 		}
 
 	};
-	
+
 	private static final Runnable firstStart = new Runnable() {
 
 		@Override
@@ -41,7 +42,7 @@ public class HintManager {
 	};
 
 	private final static Map<Hint,Runnable> hints;
-	
+
 	static {
 		Map<Hint, Runnable> map = new HashMap<Hint,Runnable>();
 		map.put(Hint.USE_MAPPING, useMappingHint);
@@ -54,9 +55,9 @@ public class HintManager {
 				CyCore.getConfig(
 						hint.toString()+"shown"
 				) == null
-			) 
+			)
 		{
-			
+
 			//Save property so we dont show this again
 			CyCore.cm.getProperties().setProperty(hint.toString()+ "shown", "1");
 			if (hints.get(hint) != null) {
@@ -65,10 +66,10 @@ public class HintManager {
 			else {
 				logger.warn("Asked for a hint that doesnt exist with hint name: "+hint.toString());
 			}
-			
+
 		}
 	}
-	
+
 
 
 }
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ClusterView.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ClusterView.java
index 5ae0d70..78ec25c 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ClusterView.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ClusterView.java
@@ -35,9 +35,9 @@ import javax.swing.border.Border;
 import org.cytoscape.model.CyNode;
 import org.cytoscape.util.swing.BasicCollapsiblePanel;
 
-import de.hhu.ba.yoshikoWrapper.core.GraphicsLoader;
 import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
 import de.hhu.ba.yoshikoWrapper.graphModel.YoshikoCluster;
+import de.hhu.ba.yoshikoWrapper.swing.GraphicsLoader;
 import de.hhu.ba.yoshikoWrapper.swing.SwingUtil;
 
 @SuppressWarnings("serial")
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/HelpButton.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/HelpButton.java
index efaeac1..6459527 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/HelpButton.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/HelpButton.java
@@ -11,16 +11,25 @@ import javax.swing.BorderFactory;
 import javax.swing.ImageIcon;
 import javax.swing.JButton;
 
-import de.hhu.ba.yoshikoWrapper.core.GraphicsLoader;
 import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
 import de.hhu.ba.yoshikoWrapper.help.HelpLinks;
+import de.hhu.ba.yoshikoWrapper.swing.GraphicsLoader;
 
 @SuppressWarnings("serial")
 public class HelpButton extends JButton{
 
+	/**
+	 * The final size (width and height) of the help button in pixel, declared here for better code maintainability
+	 */
 	private static final int SIZE = 16;
 
+	/**
+	 * The default icon for the help button that should be shown if the button is not highlighted
+	 */
 	private static final ImageIcon defaultIcon = GraphicsLoader.getInfoIcon(SIZE);
+	/**
+	 * The icon tor the help button that should be shown if the button is highlighted
+	 */
 	private static final ImageIcon hlIcon = GraphicsLoader.getInfoIconHL(SIZE);
 
 	public HelpButton() {
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/LanguageRenderer.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/LanguageRenderer.java
index 60b3b3b..2b2ca9f 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/LanguageRenderer.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/LanguageRenderer.java
@@ -8,7 +8,7 @@ import javax.swing.JList;
 import javax.swing.JPanel;
 import javax.swing.ListCellRenderer;
 
-import de.hhu.ba.yoshikoWrapper.core.GraphicsLoader;
+import de.hhu.ba.yoshikoWrapper.swing.GraphicsLoader;
 
 @SuppressWarnings("serial")
 class LanguageRenderer extends JPanel implements ListCellRenderer<Locale>{
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/LibStatusPanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/LibStatusPanel.java
index 212cde9..dadb3ae 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/LibStatusPanel.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/LibStatusPanel.java
@@ -25,7 +25,7 @@ import java.awt.Color;
 
 import javax.swing.JLabel;
 
-import de.hhu.ba.yoshikoWrapper.core.GraphicsLoader;
+import de.hhu.ba.yoshikoWrapper.swing.GraphicsLoader;
 /**
  * Simple JLabel visually representing whether or not the Yoshiko Lib is loaded
  *
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/MainPanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/MainPanel.java
index 3c34e3a..d61f759 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/MainPanel.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/MainPanel.java
@@ -52,12 +52,12 @@ import org.cytoscape.work.TaskIterator;
 
 import de.hhu.ba.yoshikoWrapper.core.AlgorithmTask;
 import de.hhu.ba.yoshikoWrapper.core.CyCore;
-import de.hhu.ba.yoshikoWrapper.core.GraphicsLoader;
 import de.hhu.ba.yoshikoWrapper.core.Hint;
 import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
 import de.hhu.ba.yoshikoWrapper.core.ParameterSet;
 import de.hhu.ba.yoshikoWrapper.core.YoshikoLoader;
 import de.hhu.ba.yoshikoWrapper.swing.AboutDialogFactory;
+import de.hhu.ba.yoshikoWrapper.swing.GraphicsLoader;
 import de.hhu.ba.yoshikoWrapper.swing.HintManager;
 import de.hhu.ba.yoshikoWrapper.swing.LanguageSwitcherPanelFactory;
 import de.hhu.ba.yoshikoWrapper.swing.LibraryPanelFactory;
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ResultPanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ResultPanel.java
index 226f87a..e947931 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ResultPanel.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ResultPanel.java
@@ -40,10 +40,10 @@ import org.cytoscape.application.swing.CytoPanelName;
 import org.cytoscape.util.swing.BasicCollapsiblePanel;
 
 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;
+import de.hhu.ba.yoshikoWrapper.swing.GraphicsLoader;
 import de.hhu.ba.yoshikoWrapper.swing.SwingUtil;
 
 /**Swing component that contains ALL solutions that are found during one run.
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/YoshikoHeader.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/YoshikoHeader.java
index f484334..4a43e82 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/YoshikoHeader.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/YoshikoHeader.java
@@ -27,7 +27,7 @@ import javax.swing.BoxLayout;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 
-import de.hhu.ba.yoshikoWrapper.core.GraphicsLoader;
+import de.hhu.ba.yoshikoWrapper.swing.GraphicsLoader;
 
 @SuppressWarnings("serial")
 public class YoshikoHeader extends JPanel {
diff --git a/src/main/resources/YoshikoStrings.properties b/src/main/resources/YoshikoStrings.properties
index 2ad94d1..7b0e8d0 100644
--- a/src/main/resources/YoshikoStrings.properties
+++ b/src/main/resources/YoshikoStrings.properties
@@ -71,6 +71,7 @@ status_reductionMR = Applying "Merging" reduction rule
 status_reductionPD = Applying "Parameter-Dependent" reduction rule
 status_reductionSN = Applying "Similar-Neighborhood" reduction rule
 
+status_solvingILP = Solving ILP
 
 switchLanguage = Plugin language
 timeLimitILP = Use time limit for ILP (s):
diff --git a/thesis/tex/Chapter/dm_impl.tex b/thesis/tex/Chapter/dm_impl.tex
index f190adc..086cfec 100644
--- a/thesis/tex/Chapter/dm_impl.tex
+++ b/thesis/tex/Chapter/dm_impl.tex
@@ -2,7 +2,7 @@ The Yoshiko Wrapper provides a clean and simple interface to generate the model.
 \subparagraph{Mapping edge costs}
 The user has the possibility to use a numeric Cytoscape column of the node table as a source for the edge-cost function $C$.
 \subparagraph{Insertion and deletion cost}
-The default values $C_I$ and $C_D$ can be set by the user and default to $C_I=-1$ and $C_D=1$.
+The default values $C_I$ and $C_D$ can be set by the user with the default values being $C_I=-1$ and $C_D=1$.
 It should be noted, that the insertion cost value is not normalized or in any way adjusted when a mapping is used. This means that the user needs to adjust this value wisely to fit the data.
 As an example the user might have mapped the edge costs to a column containing values in the range of $10^6-10^7$.
 The default insertion cost of $-1$ will be irrelevant in comparison and the algorithm will most likely insert all missing edges and generate one big cluster as a solution.
diff --git a/thesis/tex/Thesis.pdf b/thesis/tex/Thesis.pdf
index 7b6bcf5b1fdd5424a288ea8ce0b3d40da9e427ee..7e2abacb398116dcf8541d79ef4f836411f08309 100644
GIT binary patch
delta 2423
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
QWm4p@;8Im}^>^a}06BefH2?qr

delta 2419
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
N4s$M5RabvEE&wZOas~hZ

diff --git a/thesis/tex/Thesis.tex b/thesis/tex/Thesis.tex
index acc9667..720652e 100644
--- a/thesis/tex/Thesis.tex
+++ b/thesis/tex/Thesis.tex
@@ -23,9 +23,6 @@
 
 \title{Developing and evaluating a Cytoscape app for graph-based clustering}
 
-
-
-
 \begin{document}
 
 \maketitle
@@ -50,4 +47,6 @@
 			\input{Chapter/dm_theory}
 			\paragraph{Implementation}
 			\input{Chapter/dm_impl}
+\section{Evaluation of the Yoshiko Algorithm}
+\section{Outlook}
 \end{document}
\ No newline at end of file
-- 
GitLab