From 8cbbf76e1732113c07ef416874346f15b85ae34b Mon Sep 17 00:00:00 2001 From: Luca Keidel <info@lucakeidel.de> Date: Tue, 14 Jun 2016 14:07:18 +0200 Subject: [PATCH] Implemented remote address selection dialog --- src/main/java/fucoin/Main.java | 2 +- src/main/java/fucoin/MainRemote.java | 10 +++++++++- src/main/java/fucoin/actions/Action.java | 4 +++- src/main/java/fucoin/actions/join/ActionJoin.java | 1 + .../java/fucoin/gui/WalletGuiControlImpl.java | 8 +++++++- src/main/java/fucoin/wallet/WalletImpl.java | 15 +++++++++++++++ 6 files changed, 36 insertions(+), 4 deletions(-) diff --git a/src/main/java/fucoin/Main.java b/src/main/java/fucoin/Main.java index 2d9f6c3..36991ab 100644 --- a/src/main/java/fucoin/Main.java +++ b/src/main/java/fucoin/Main.java @@ -16,7 +16,7 @@ import java.util.List; public class Main { - private static int numberOfWallets = 2; + private static int numberOfWallets = 1; private static ActorSystem cSystem; diff --git a/src/main/java/fucoin/MainRemote.java b/src/main/java/fucoin/MainRemote.java index 3568dd0..9080f7b 100644 --- a/src/main/java/fucoin/MainRemote.java +++ b/src/main/java/fucoin/MainRemote.java @@ -15,9 +15,17 @@ public class MainRemote { public static void main(String[] args) throws InterruptedException { + //Load configuration from current directory or from resources directory of jar File file = new File("application.conf"); - System.out.println("config found? " + file.exists()); Config config = ConfigFactory.parseFile(file); + if (!file.exists()) { + System.out.println("Load default application.conf"); + config = ConfigFactory.parseResources("application.conf"); + } else { + System.out.println("Load local application.conf"); + } + + //Init System Actor System ActorSystem system = ActorSystem.create("Test", config); Address address = new Address("akka.tcp", "Core", "127.0.0.1", 1234); diff --git a/src/main/java/fucoin/actions/Action.java b/src/main/java/fucoin/actions/Action.java index 7bb94e8..cb4b42a 100644 --- a/src/main/java/fucoin/actions/Action.java +++ b/src/main/java/fucoin/actions/Action.java @@ -4,7 +4,9 @@ import akka.actor.ActorRef; import akka.actor.UntypedActorContext; import fucoin.AbstractNode; -public abstract class Action<T extends AbstractNode> { +import java.io.Serializable; + +public abstract class Action<T extends AbstractNode> implements Serializable{ private ActorRef self; public final void doAction(T abstractNode) { diff --git a/src/main/java/fucoin/actions/join/ActionJoin.java b/src/main/java/fucoin/actions/join/ActionJoin.java index 8c1699f..e224ddb 100644 --- a/src/main/java/fucoin/actions/join/ActionJoin.java +++ b/src/main/java/fucoin/actions/join/ActionJoin.java @@ -12,6 +12,7 @@ public class ActionJoin extends GeneralAction { UntypedActorContext context, AbstractNode node) { ActionJoinAnswer aja = new ActionJoinAnswer(); aja.someNeighbors.putAll(node.getKnownNeighbors()); + System.out.println("Answer to "+sender.path().name()); sender.tell(aja, self); } diff --git a/src/main/java/fucoin/gui/WalletGuiControlImpl.java b/src/main/java/fucoin/gui/WalletGuiControlImpl.java index 3cf3fb4..518ee80 100644 --- a/src/main/java/fucoin/gui/WalletGuiControlImpl.java +++ b/src/main/java/fucoin/gui/WalletGuiControlImpl.java @@ -1,5 +1,6 @@ package fucoin.gui; +import akka.actor.ActorSelection; import fucoin.wallet.AbstractWallet; import javax.swing.*; @@ -59,7 +60,12 @@ public class WalletGuiControlImpl implements WalletGuiControl { JTextField sendToNewEdt = new JTextField(); centerup2.add(sendToNewEdt, BorderLayout.CENTER); JButton addNewButton = new JButton("Add"); - addNewButton.addActionListener(e -> txtSendTo.addItem(sendToNewEdt.getText())); + addNewButton.addActionListener(e -> { + ActorSelection selection = wallet.getContext().actorSelection(sendToNewEdt.getText()); + System.out.println(selection); + //selection.tell("Hallo!", self()); + //txtSendTo.addItem(); + }); centerup2.add(addNewButton, BorderLayout.EAST); centerPanel.add(centerup2); diff --git a/src/main/java/fucoin/wallet/WalletImpl.java b/src/main/java/fucoin/wallet/WalletImpl.java index 5cb6e22..7efa22d 100644 --- a/src/main/java/fucoin/wallet/WalletImpl.java +++ b/src/main/java/fucoin/wallet/WalletImpl.java @@ -1,6 +1,7 @@ package fucoin.wallet; import akka.actor.ActorRef; +import akka.actor.ActorSelection; import akka.actor.Props; import fucoin.actions.ClientAction; import fucoin.actions.join.ActionJoin; @@ -11,6 +12,8 @@ import fucoin.actions.transaction.ActionGetAmountAnswer; import fucoin.actions.transaction.ActionInvokeSentMoney; import fucoin.gui.WalletGuiControl; +import javax.swing.*; + public class WalletImpl extends AbstractWallet { private ActorRef preKnownNeighbour; @@ -29,6 +32,14 @@ public class WalletImpl extends AbstractWallet { this.preKnownNeighbourName = preKnownNeighbourName; this.preKnownNeighbour = preKnownNeighbour; this.remoteSuperVisorActor = remoteSuperVisorActor; + + if(remoteSuperVisorActor == null){ + String path = JOptionPane.showInputDialog(null, "Enter a neighbour address: "); + System.out.println(path); + ActorSelection selection = getContext().actorSelection(path); + selection.tell(new ActionJoin(), self()); + //selection.tell("Hallo!", self()); + } } public static Props props(ActorRef preKnownNeighbour, String preKnownNeighbourName, @@ -59,6 +70,10 @@ public class WalletImpl extends AbstractWallet { ((ClientAction) message).doAction(this); } + if (message instanceof ActionJoin){ + ((ActionJoin) message).doAction(this); + } + } @Override -- GitLab