From 7f45b3e3de48b241a0eed4055a7009a44690f308 Mon Sep 17 00:00:00 2001
From: Philipp Spohr <spohr.philipp@web.de>
Date: Sat, 19 Aug 2017 23:39:13 +0200
Subject: [PATCH] Implemented listener for any changes and linked it with
 column mapper

---
 .../de/hhu/ba/yoshikoWrapper/CyActivator.java | 17 +++++
 .../core/NetChangeListener.java               | 63 +++++++++++++++++++
 .../ba/yoshikoWrapper/gui/EditCostPanel.java  |  4 ++
 .../hhu/ba/yoshikoWrapper/gui/MainPanel.java  |  6 ++
 .../ba/yoshikoWrapper/gui/SolutionsPanel.java |  5 ++
 5 files changed, 95 insertions(+)
 create mode 100644 src/main/java/de/hhu/ba/yoshikoWrapper/core/NetChangeListener.java

diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java b/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java
index 3d3eef8..9593746 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/CyActivator.java
@@ -4,13 +4,20 @@ import java.util.Properties;
 
 import org.cytoscape.application.CyApplicationManager;
 import org.cytoscape.application.swing.CytoPanelComponent;
+import org.cytoscape.model.events.AddedEdgesListener;
+import org.cytoscape.model.events.ColumnCreatedListener;
+import org.cytoscape.model.events.ColumnDeletedListener;
+import org.cytoscape.model.events.NetworkAddedListener;
+import org.cytoscape.model.events.RemovedEdgesListener;
 import org.cytoscape.service.util.AbstractCyActivator;
+import org.cytoscape.session.events.SessionLoadedListener;
 import org.cytoscape.work.swing.DialogTaskManager;
 import org.osgi.framework.BundleContext;
 
 import de.hhu.ba.yoshikoWrapper.core.ConfigurationManager;
 import de.hhu.ba.yoshikoWrapper.core.CyCore;
 import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
+import de.hhu.ba.yoshikoWrapper.core.NetChangeListener;
 import de.hhu.ba.yoshikoWrapper.core.YoshikoLoader;
 import de.hhu.ba.yoshikoWrapper.gui.MainPanel;
 import de.hhu.ba.yoshikoWrapper.gui.SolutionsPanel;
@@ -52,6 +59,16 @@ public class CyActivator extends AbstractCyActivator {
 		MainPanel mainPanel = new MainPanel(solutionsPanel);
 		registerService(context,mainPanel,CytoPanelComponent.class, new Properties());
 		registerService(context,solutionsPanel,CytoPanelComponent.class, new Properties());
+		
+		//Listener for Network-Changes -> Updating possible columns for mapping
+		NetChangeListener netChangeListener = new NetChangeListener(mainPanel.getColumnMapper());
+		registerService(context,netChangeListener, NetworkAddedListener.class, new Properties());
+		registerService(context,netChangeListener, AddedEdgesListener.class, new Properties());
+		registerService(context,netChangeListener, RemovedEdgesListener.class, new Properties());
+		registerService(context,netChangeListener, ColumnCreatedListener.class, new Properties());
+		registerService(context,netChangeListener, ColumnDeletedListener.class, new Properties());
+		registerService(context,netChangeListener, SessionLoadedListener.class, new Properties());
+
 	}
 
 }
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/NetChangeListener.java b/src/main/java/de/hhu/ba/yoshikoWrapper/core/NetChangeListener.java
new file mode 100644
index 0000000..cfb4620
--- /dev/null
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/NetChangeListener.java
@@ -0,0 +1,63 @@
+package de.hhu.ba.yoshikoWrapper.core;
+
+import org.cytoscape.model.events.AddedEdgesEvent;
+import org.cytoscape.model.events.AddedEdgesListener;
+import org.cytoscape.model.events.ColumnCreatedEvent;
+import org.cytoscape.model.events.ColumnCreatedListener;
+import org.cytoscape.model.events.ColumnDeletedEvent;
+import org.cytoscape.model.events.ColumnDeletedListener;
+import org.cytoscape.model.events.NetworkAddedEvent;
+import org.cytoscape.model.events.NetworkAddedListener;
+import org.cytoscape.model.events.RemovedEdgesEvent;
+import org.cytoscape.model.events.RemovedEdgesListener;
+import org.cytoscape.session.events.SessionLoadedEvent;
+import org.cytoscape.session.events.SessionLoadedListener;
+
+import de.hhu.ba.yoshikoWrapper.gui.ColumnMapper;
+
+public class NetChangeListener 
+implements //everything
+NetworkAddedListener,
+AddedEdgesListener,
+RemovedEdgesListener,
+ColumnCreatedListener,
+ColumnDeletedListener,
+SessionLoadedListener
+{
+	private ColumnMapper columnMapper;
+	
+	public NetChangeListener(ColumnMapper columnMapper) {
+		this.columnMapper = columnMapper;
+	}
+
+	@Override
+	public void handleEvent(ColumnDeletedEvent e) {
+		columnMapper.updateValues();
+	}
+
+	@Override
+	public void handleEvent(ColumnCreatedEvent e) {
+		columnMapper.updateValues();
+	}
+
+	@Override
+	public void handleEvent(RemovedEdgesEvent e) {
+		columnMapper.updateValues();
+	}
+
+	@Override
+	public void handleEvent(AddedEdgesEvent e) {
+		columnMapper.updateValues();
+	}
+
+	@Override
+	public void handleEvent(NetworkAddedEvent e) {
+		columnMapper.updateValues();
+	}
+
+	@Override
+	public void handleEvent(SessionLoadedEvent e) {
+		columnMapper.updateValues();
+	}
+
+}
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 83284ae..aa6d26d 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/EditCostPanel.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/EditCostPanel.java
@@ -66,6 +66,10 @@ public class EditCostPanel extends ComfortPanel {
 		return dcField.getValueAsDouble();
 	}
 
+	public ColumnMapper getColumnMapper() {
+		return columnMapper;
+	}
+
 
 	
 }
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 bdabdfb..805770f 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/MainPanel.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/MainPanel.java
@@ -182,6 +182,10 @@ public class MainPanel extends ComfortPanel implements CytoPanelComponent {
 		}	
 	};
 	
+	public ColumnMapper getColumnMapper() {
+		return ecPanel.getColumnMapper();
+	}
+	
 	
 	//GETTER / SETTER
 
@@ -207,4 +211,6 @@ public class MainPanel extends ComfortPanel implements CytoPanelComponent {
 		//TODO: 
 		return null;
 	}
+
+
 }
diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/SolutionsPanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/SolutionsPanel.java
index cb6373e..0bdba5d 100644
--- a/src/main/java/de/hhu/ba/yoshikoWrapper/gui/SolutionsPanel.java
+++ b/src/main/java/de/hhu/ba/yoshikoWrapper/gui/SolutionsPanel.java
@@ -12,6 +12,9 @@ import org.cytoscape.application.swing.CytoPanelName;
 
 import de.hhu.ba.yoshikoWrapper.core.LocalizationManager;
 
+/**Swing component that contains ALL solutions that are found during one run.
+ * Conforms to CY 3.5 by being a CytoPanelComponent which is the norm for "result" panels
+ */
 @SuppressWarnings("serial")//Will never be serialized
 public class SolutionsPanel extends ComfortPanel implements CytoPanelComponent{
 	
@@ -36,6 +39,8 @@ public class SolutionsPanel extends ComfortPanel implements CytoPanelComponent{
 
 	public void setCost(double modificationCost) {
 		costLabel.setText(LocalizationManager.get("cost")+" "+modificationCost);
+		revalidate();
+		repaint();
 	}
 	
 	public void reset() {
-- 
GitLab