From 9afac8903f4eb08dcd45f4858a765b42a71a4d7c Mon Sep 17 00:00:00 2001
From: Hai HoDac <hhodac@student.unimelb.edu.au>
Date: Thu, 24 Oct 2019 19:45:45 +1100
Subject: [PATCH] Merged with Ryan's code

---
 src/GUI/DrawingArea.java           |  4 ++--
 src/client/DrawingUpdate.java      |  3 ++-
 src/remote/IDrawingController.java |  2 +-
 src/remote/IDrawingUpdate.java     |  2 +-
 src/server/DrawingController.java  |  5 +++--
 src/server/Server.java             | 10 ++++++++++
 src/server/server.policy           |  1 +
 7 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/src/GUI/DrawingArea.java b/src/GUI/DrawingArea.java
index c1f7a65..42b74cd 100644
--- a/src/GUI/DrawingArea.java
+++ b/src/GUI/DrawingArea.java
@@ -205,11 +205,11 @@ public class DrawingArea extends JPanel implements MouseMotionListener, MouseLis
         switch (currentMode) {
 
             case TEXT:
-
+                g2.setColor(shapeColor);
                 g2.setFont(new Font("TimesRoman", Font.PLAIN, textSize));
                 g2.drawString(textString, startPoint.x, startPoint.y);
                 try {
-                    client.getDrawingController().broadcastText(client.getUserName(), textString, g2.getFont(), startPoint);
+                    client.getDrawingController().broadcastText(client.getUserName(), textString, g2.getFont(), shapeColor, startPoint);
                 } catch (RemoteException ex) {
                     ex.printStackTrace();
                 }
diff --git a/src/client/DrawingUpdate.java b/src/client/DrawingUpdate.java
index 68c8f9a..00f9bd0 100644
--- a/src/client/DrawingUpdate.java
+++ b/src/client/DrawingUpdate.java
@@ -21,9 +21,10 @@ public class DrawingUpdate extends UnicastRemoteObject implements IDrawingUpdate
     }
 
     @Override
-    public boolean notifyTextDrawing(String fromClient, String text, Font font, Point startPoint) throws RemoteException {
+    public boolean notifyTextDrawing(String fromClient, String text, Font font, Color color, Point startPoint) throws RemoteException {
         client.getApplicationMain().getPaintGUI().getDrawingArea().getG2().setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
         client.getApplicationMain().getPaintGUI().getDrawingArea().getG2().setFont(font);
+        client.getApplicationMain().getPaintGUI().getDrawingArea().getG2().setColor(color);
         client.getApplicationMain().getPaintGUI().getDrawingArea().getG2().drawString(text, startPoint.x, startPoint.y);
         client.getApplicationMain().getPaintGUI().getDrawingArea().repaint();
         return true;
diff --git a/src/remote/IDrawingController.java b/src/remote/IDrawingController.java
index be96a21..3aa40d3 100644
--- a/src/remote/IDrawingController.java
+++ b/src/remote/IDrawingController.java
@@ -15,7 +15,7 @@ import java.rmi.RemoteException;
  */
 public interface IDrawingController extends Remote {
 
-    boolean broadcastText(String fromClient, String text, Font font, Point startPoint) throws RemoteException;
+    boolean broadcastText(String fromClient, String text, Font font, Color color, Point startPoint) throws RemoteException;
     boolean broadcastDrawing(String fromClient, Shape drawing, String mode, Color color, int strokeSize) throws RemoteException;
     boolean broadcastDraggingDrawing(String fromClient, Shape drawing, String mode, Color color, int strokeSize) throws RemoteException;
     boolean broadcastClearCanvas(String fromClient) throws RemoteException;
diff --git a/src/remote/IDrawingUpdate.java b/src/remote/IDrawingUpdate.java
index 02f17f1..a52781b 100644
--- a/src/remote/IDrawingUpdate.java
+++ b/src/remote/IDrawingUpdate.java
@@ -6,7 +6,7 @@ import java.rmi.Remote;
 import java.rmi.RemoteException;
 
 public interface IDrawingUpdate extends Remote, Serializable {
-    boolean notifyTextDrawing(String fromClient, String text, Font font, Point startPoint) throws RemoteException;
+    boolean notifyTextDrawing(String fromClient, String text, Font font, Color color, Point startPoint) throws RemoteException;
     boolean notifyDrawing(String fromClient, Shape drawing, String mode, Color color, int strokeSize) throws RemoteException;
     boolean notifyDraggingDrawing(String fromClient, Shape drawing, String mode, Color color, int strokeSize) throws RemoteException;
     boolean notifyCanvasClearance(String fromClient) throws RemoteException;
diff --git a/src/server/DrawingController.java b/src/server/DrawingController.java
index 934d892..484ecda 100644
--- a/src/server/DrawingController.java
+++ b/src/server/DrawingController.java
@@ -30,12 +30,13 @@ public class DrawingController extends UnicastRemoteObject implements IDrawingCo
     }
 
     @Override
-    public boolean broadcastText(String fromClient, String text, Font font, Point startPoint) throws RemoteException {
+    public boolean broadcastText(String fromClient, String text, Font font, Color color, Point startPoint) throws RemoteException {
         System.out.print("Broadcasting drawing to everyone...");
 
         g2 = (Graphics2D) bufferedImage.getGraphics();
         g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
         g2.setFont(font);
+        g2.setPaint(color);
         g2.drawString(text, startPoint.x, startPoint.y);
         g2 = (Graphics2D) bufferedImage.getGraphics();
         g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
@@ -47,7 +48,7 @@ public class DrawingController extends UnicastRemoteObject implements IDrawingCo
         {
             if (!u.getUserName().equals(fromClient)) {
                 client = u.getIDrawingUpdate();
-                client.notifyTextDrawing(fromClient, text, font, startPoint);
+                client.notifyTextDrawing(fromClient, text, font, color, startPoint);
             }
         }
 
diff --git a/src/server/Server.java b/src/server/Server.java
index 1063d88..5a9b983 100644
--- a/src/server/Server.java
+++ b/src/server/Server.java
@@ -60,6 +60,16 @@ public class Server
 
     public void run() throws RemoteException
     {
+        String serverIP = "";
+        try {
+            InetAddress inetAddress = InetAddress.getLocalHost();
+            serverIP = inetAddress.getHostAddress();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        System.setProperty("java.rmi.server.hostname", serverIP);
+
         LocateRegistry.createRegistry(1099);
         Registry registry = LocateRegistry.getRegistry();
 //        if (System.getSecurityManager() == null) {
diff --git a/src/server/server.policy b/src/server/server.policy
index 5c05949..be17177 100644
--- a/src/server/server.policy
+++ b/src/server/server.policy
@@ -1,3 +1,4 @@
 grant codeBase "file:/Users/haiho/OneDrive - The University of Melbourne/Distributed Systems (COMP90015)/Assignment 2/InfinityMonkeys-remaster/comp90015-dsass2-infinitymonkeys-remaster/out/production/comp90015-dsass2-infinitymonkeys-remaster/" {
+    permission java.util.PropertyPermission '*', "read,write";
     permission java.security.AllPermission;
 };
\ No newline at end of file
-- 
GitLab