From 76c6e39bc7dcacc6c51107b8ad86695cc7ac0be9 Mon Sep 17 00:00:00 2001
From: David Bohn <davbohn@googlemail.com>
Date: Sat, 9 Jul 2016 00:07:46 +0200
Subject: [PATCH] Refactoring and fixing the invisible graph bug

---
 .../configurations/GephiConfiguration.java       | 16 ++++++++--------
 src/main/java/fucoin/gui/gephi/GraphWindow.java  |  9 ++++-----
 .../internal => gui/gephi}/NodeClickHandler.java |  6 ++----
 .../java/fucoin/gui/gephi/PreviewSketch.java     |  5 +++++
 4 files changed, 19 insertions(+), 17 deletions(-)
 rename src/main/java/fucoin/{configurations/internal => gui/gephi}/NodeClickHandler.java (74%)

diff --git a/src/main/java/fucoin/configurations/GephiConfiguration.java b/src/main/java/fucoin/configurations/GephiConfiguration.java
index 1465998..3fb495c 100644
--- a/src/main/java/fucoin/configurations/GephiConfiguration.java
+++ b/src/main/java/fucoin/configurations/GephiConfiguration.java
@@ -1,6 +1,7 @@
 package fucoin.configurations;
 
 import akka.actor.ActorRef;
+import akka.dispatch.OnSuccess;
 import akka.pattern.Patterns;
 import akka.util.Timeout;
 import fucoin.actions.transaction.ActionGetAmount;
@@ -9,7 +10,6 @@ import fucoin.configurations.internal.ConfigurationName;
 import fucoin.configurations.internal.GephiLoader;
 import fucoin.gui.gephi.GraphWindow;
 import org.gephi.graph.api.Graph;
-import scala.concurrent.Await;
 import scala.concurrent.Future;
 import scala.concurrent.duration.Duration;
 
@@ -42,13 +42,13 @@ public class GephiConfiguration extends AbstractConfiguration {
             ActorRef wallet = walletByName(node.getLabel());
 
             Future<Object> future = Patterns.ask(wallet, new ActionGetAmount(), timeout);
-            ActionGetAmountAnswer answer = null;
-            try {
-                 answer = (ActionGetAmountAnswer) Await.result(future, timeout.duration());
-            } catch (Exception e) {
-                System.err.println("An error occured while fetching the wallet info: "+e.getMessage());
-            }
-            graphWindow.setInfobarText(node.getLabel()+" has "+answer.amount+" FUCs");
+            future.onSuccess(new OnSuccess<Object>() {
+                @Override
+                public void onSuccess(Object result) throws Throwable {
+                    ActionGetAmountAnswer answer = (ActionGetAmountAnswer) result;
+                    graphWindow.setInfobarText(node.getLabel()+" has "+answer.amount+" FUCs");
+                }
+            }, context().dispatcher());
         });
 
         graphWindow.setVisible(true);
diff --git a/src/main/java/fucoin/gui/gephi/GraphWindow.java b/src/main/java/fucoin/gui/gephi/GraphWindow.java
index 954f6d7..f32bd9a 100644
--- a/src/main/java/fucoin/gui/gephi/GraphWindow.java
+++ b/src/main/java/fucoin/gui/gephi/GraphWindow.java
@@ -1,6 +1,5 @@
 package fucoin.gui.gephi;
 
-import fucoin.configurations.internal.NodeClickHandler;
 import org.gephi.graph.api.Node;
 import org.gephi.preview.api.*;
 import org.gephi.preview.types.DependantOriginalColor;
@@ -50,10 +49,10 @@ public class GraphWindow extends JFrame implements NodeMouseListener {
         JPanel infobar = new JPanel(new BorderLayout());
         infobar.add(infobarText, BorderLayout.WEST);
 
-        JPanel zoomOptions = new JPanel(new FlowLayout(FlowLayout.CENTER, 5,2));
+        JPanel zoomOptions = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 2));
         zoomOptions.add(new JLabel("Zoom: "));
 
-        Dimension zoomBtnSize = new Dimension(20,20);
+        Dimension zoomBtnSize = new Dimension(20, 20);
 
         JButton minusButton = new JButton("-");
         minusButton.setPreferredSize(zoomBtnSize);
@@ -114,10 +113,10 @@ public class GraphWindow extends JFrame implements NodeMouseListener {
         super.setVisible(b);
 
         previewController.refreshPreview();
-        previewSketch.repaint();
+        previewSketch.refreshSketch();
     }
 
-    public void setInfobarText(String text){
+    public void setInfobarText(String text) {
         SwingUtilities.invokeLater(() -> infobarText.setText(text));
     }
 }
diff --git a/src/main/java/fucoin/configurations/internal/NodeClickHandler.java b/src/main/java/fucoin/gui/gephi/NodeClickHandler.java
similarity index 74%
rename from src/main/java/fucoin/configurations/internal/NodeClickHandler.java
rename to src/main/java/fucoin/gui/gephi/NodeClickHandler.java
index 01a207c..9005017 100644
--- a/src/main/java/fucoin/configurations/internal/NodeClickHandler.java
+++ b/src/main/java/fucoin/gui/gephi/NodeClickHandler.java
@@ -1,12 +1,10 @@
-package fucoin.configurations.internal;
+package fucoin.gui.gephi;
 
 import org.gephi.graph.api.Node;
 import org.gephi.preview.api.PreviewMouseEvent;
 
 import java.util.function.BiConsumer;
 
-/**
- * @author davidbohn
- */
+
 public interface NodeClickHandler extends BiConsumer<Node, PreviewMouseEvent> {
 }
diff --git a/src/main/java/fucoin/gui/gephi/PreviewSketch.java b/src/main/java/fucoin/gui/gephi/PreviewSketch.java
index 255cc1f..4f324bc 100644
--- a/src/main/java/fucoin/gui/gephi/PreviewSketch.java
+++ b/src/main/java/fucoin/gui/gephi/PreviewSketch.java
@@ -11,6 +11,7 @@ import java.util.TimerTask;
 import java.util.concurrent.atomic.AtomicBoolean;
 import javax.swing.JPanel;
 import javax.swing.SwingUtilities;
+
 import org.gephi.preview.api.G2DTarget;
 import org.gephi.preview.api.PreviewController;
 import org.gephi.preview.api.PreviewMouseEvent;
@@ -59,6 +60,10 @@ public class PreviewSketch extends JPanel implements MouseListener, MouseWheelLi
         g.drawImage(target.getImage(), 0, 0, getWidth(), getHeight(), this);
     }
 
+    public void refreshSketch() {
+        refreshLoop.refreshSketch();
+    }
+
     public void setMoving(boolean moving) {
         target.setMoving(moving);
     }
-- 
GitLab