diff --git a/src/GUI/icon/circle.png b/resources/circle.png similarity index 100% rename from src/GUI/icon/circle.png rename to resources/circle.png diff --git a/src/GUI/icon/eraser.png b/resources/eraser.png similarity index 100% rename from src/GUI/icon/eraser.png rename to resources/eraser.png diff --git a/src/GUI/icon/freehand.png b/resources/freehand.png similarity index 100% rename from src/GUI/icon/freehand.png rename to resources/freehand.png diff --git a/src/GUI/icon/line.png b/resources/line.png similarity index 100% rename from src/GUI/icon/line.png rename to resources/line.png diff --git a/src/GUI/icon/oval.png b/resources/oval.png similarity index 100% rename from src/GUI/icon/oval.png rename to resources/oval.png diff --git a/src/GUI/icon/palette.png b/resources/palette.png similarity index 100% rename from src/GUI/icon/palette.png rename to resources/palette.png diff --git a/src/GUI/icon/rectangle.png b/resources/rectangle.png similarity index 100% rename from src/GUI/icon/rectangle.png rename to resources/rectangle.png diff --git a/src/GUI/icon/square.png b/resources/square.png similarity index 100% rename from src/GUI/icon/square.png rename to resources/square.png diff --git a/src/GUI/icon/text.png b/resources/text.png similarity index 100% rename from src/GUI/icon/text.png rename to resources/text.png diff --git a/src/GUI/DrawingArea.java b/src/GUI/DrawingArea.java index 227329927351e162be4fa4393a2013d2f73a3327..6282dfd62a8d890332f3bc3ca669c8523e4835ac 100644 --- a/src/GUI/DrawingArea.java +++ b/src/GUI/DrawingArea.java @@ -93,6 +93,8 @@ public class DrawingArea extends JPanel implements MouseMotionListener, MouseLis public void clear() { image = new BufferedImage(AREA_WIDTH, AREA_HEIGHT, BufferedImage.TYPE_INT_ARGB); + g2 = (Graphics2D) image.getGraphics(); + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); repaint(); } @@ -113,6 +115,7 @@ public class DrawingArea extends JPanel implements MouseMotionListener, MouseLis /// Eraser has no border color /// Color borderColor = currentMode != Mode.ERASE ? shapeColor : Color.WHITE; g2.setColor(borderColor); + g2.setStroke(lineStroke); g2.draw(drawing); } } diff --git a/src/GUI/PaintGUI.java b/src/GUI/PaintGUI.java index 78265a94fee2eb865f7cc7ce59fb1fe62c0c35dc..bf6c13b8510f83203590b7b48f3ee1696b5c4447 100644 --- a/src/GUI/PaintGUI.java +++ b/src/GUI/PaintGUI.java @@ -1,7 +1,6 @@ package GUI; import client.Client; -import remote.IDrawingUpdate; import javax.imageio.ImageIO; import javax.swing.*; @@ -59,24 +58,15 @@ public class PaintGUI extends JPanel { /// Set up button icons /// try { - String path = System.getProperty("user.dir"); - System.out.println(path); - File palettePic = new File(path + "/src/GUI/icon/palette.png"); - File freehandPic = new File(path + "/src/GUI/icon/freehand.png"); - File linePic = new File(path + "/src/GUI/icon/line.png"); - File circlePic = new File(path + "/src/GUI/icon/circle.png"); - File rectPic = new File(path + "/src/GUI/icon/rectangle.png"); - File ovalPic = new File(path + "/src/GUI/icon/oval.png"); - File eraserPic = new File(path + "/src/GUI/icon/eraser.png"); - File textPic = new File(path + "/src/GUI/icon/text.png"); - BufferedImage paletteIcon = ImageIO.read(palettePic); - BufferedImage freehandIcon = ImageIO.read(freehandPic); - BufferedImage lineIcon = ImageIO.read(linePic); - BufferedImage circleIcon = ImageIO.read(circlePic); - BufferedImage rectIcon = ImageIO.read(rectPic); - BufferedImage ovalIcon = ImageIO.read(ovalPic); - BufferedImage eraserIcon = ImageIO.read(eraserPic); - BufferedImage textIcon = ImageIO.read(textPic); + BufferedImage paletteIcon = ImageIO.read(getClass().getResource("/palette.png")); + BufferedImage freehandIcon = ImageIO.read(getClass().getResource("/freehand.png")); + BufferedImage lineIcon = ImageIO.read(getClass().getResource("/line.png")); + BufferedImage circleIcon = ImageIO.read(getClass().getResource("/circle.png")); + BufferedImage rectIcon = ImageIO.read(getClass().getResource("/rectangle.png")); + BufferedImage ovalIcon = ImageIO.read(getClass().getResource("/oval.png")); + BufferedImage eraserIcon = ImageIO.read(getClass().getResource("/eraser.png")); + BufferedImage textIcon = ImageIO.read(getClass().getResource("/text.png")); + colorPaletteBtn = new JButton(new ImageIcon(paletteIcon)); colorPaletteBtn.addActionListener(actionListener); freehandBtn = new JButton(new ImageIcon(freehandIcon)); @@ -107,7 +97,7 @@ public class PaintGUI extends JPanel { // setFontBtn = new JButton("Font"); // setFontBtn.addActionListener(actionListener); textInput = new JTextField("Text here."); - textInput.setColumns(8); + textInput.setColumns(13); textInput.addFocusListener(focusListener); // textInput.setVisible(false); textSize = new JTextField("12"); @@ -409,7 +399,13 @@ public class PaintGUI extends JPanel { private void setTextDetail() { String textString = textInput.getText(); - int size = Integer.parseInt(textSize.getText()); + int size = 12; // default + if (!textSize.getText().isEmpty()) { + size = Integer.parseInt(textSize.getText()); + } + else { + textSize.setText(Integer.toString(size)); + } drawingArea.setModeText(textString, size); } diff --git a/src/GUI/StartScreen.java b/src/GUI/StartScreen.java index 6b6a4b53bfb7466916b97ed4f06073b92d3c927c..6b030e1fada0d4a4b0576dbc088fd53aa94b93e8 100644 --- a/src/GUI/StartScreen.java +++ b/src/GUI/StartScreen.java @@ -46,43 +46,47 @@ public class StartScreen { String userName = usernameField.getText(); String password = new String(passwordField.getPassword()); - int connectionStatus = client.connect(userName, serverAddress, password); - - if( connectionStatus == 1 ) - { - frame.setVisible(false); - frame.dispose(); - if (client.getApplicationMain().getFrame() == null) { - client.startApplication(); + if (userName.length() <= 15) { + int connectionStatus = client.connect(userName, serverAddress, password); + if( connectionStatus == 1 ) + { + frame.setVisible(false); + frame.dispose(); + if (client.getApplicationMain().getFrame() == null) { + client.startApplication(); + } + else { + client.clearChat(); + client.clearDrawingArea(); + client.setVisibleApplication(); + } + + } + else if( connectionStatus == 2 || connectionStatus == 6 ) + { + showErrorMessage("Duplicate usernameField: Please enter a new usernameField"); + } + else if( connectionStatus == 3 ) + { + showErrorMessage("Cannot connect to server: Please check the server address"); } - else { - client.clearChat(); - client.clearDrawingArea(); + else if( connectionStatus == 4 ) + { + showErrorMessage("Incorrect Password"); + } + else if( connectionStatus == 5 ) + { + frame.setVisible(false); + frame.dispose(); client.setVisibleApplication(); } - - } - else if( connectionStatus == 2 || connectionStatus == 6 ) - { - showErrorMessage("Duplicate usernameField: Please enter a new usernameField"); - } - else if( connectionStatus == 3 ) - { - showErrorMessage("Cannot connect to server: Please check the server address"); - } - else if( connectionStatus == 4 ) - { - showErrorMessage("Incorrect Password"); - } - else if( connectionStatus == 5 ) - { - frame.setVisible(false); - frame.dispose(); - client.setVisibleApplication(); + else + { + showErrorMessage("Unknown Connection Status"); + } } - else - { - showErrorMessage("Unknown Connection Status"); + else { + showErrorMessage("Username must be less or equal to 15 characters"); } } } diff --git a/src/client/Client.java b/src/client/Client.java index a9ca1b3b1ec660e097ede6d0cebefa7401f7738b..acfe956e63539b52110b1831e0570e2d2a1f87c5 100644 --- a/src/client/Client.java +++ b/src/client/Client.java @@ -93,9 +93,9 @@ public class Client } - public Client(String username) throws RemoteException, NoSuchProviderException, NoSuchAlgorithmException + public Client() throws RemoteException, NoSuchProviderException, NoSuchAlgorithmException { - this.defaultUserName = username; + this.defaultUserName = DEFAULT_USERNAME; this.clientUpdate = new ClientUpdate(this); this.chatUpdate = new ChatUpdate(this); this.drawingUpdate = new DrawingUpdate(this); @@ -108,7 +108,7 @@ public class Client { try { - Client client = new Client(args[0]); + Client client = new Client(); client.showStartScreen(); } catch (Exception e) diff --git a/src/server/DrawingController.java b/src/server/DrawingController.java index ebbadcacc84bde7256f2f82920f16fd8b5e01b82..38a850dfd4cb60d66164a30eae13543b837f88ad 100644 --- a/src/server/DrawingController.java +++ b/src/server/DrawingController.java @@ -34,7 +34,7 @@ public class DrawingController extends UnicastRemoteObject implements IDrawingCo @Override public boolean broadcastText(String fromClient, String text, Font font, Color color, Point startPoint) throws RemoteException { - System.out.print("Broadcasting drawing to everyone..."); +// System.out.print("Broadcasting drawing to everyone..."); g2 = (Graphics2D) bufferedImage.getGraphics(); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); @@ -55,7 +55,7 @@ public class DrawingController extends UnicastRemoteObject implements IDrawingCo } } - System.out.print("...DONE\n"); +// System.out.print("...DONE\n"); return true; } @@ -63,7 +63,7 @@ public class DrawingController extends UnicastRemoteObject implements IDrawingCo @Override public boolean broadcastDrawing(String fromClient, Shape drawing, String mode, Color color, int strokeSize) throws RemoteException { - System.out.print("Broadcasting drawing to everyone..."); +// System.out.print("Broadcasting drawing to everyone..."); g2 = (Graphics2D) bufferedImage.getGraphics(); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); @@ -97,13 +97,13 @@ public class DrawingController extends UnicastRemoteObject implements IDrawingCo } } - System.out.print("...DONE\n"); +// System.out.print("...DONE\n"); return true; } public boolean broadcastDraggingDrawing(String fromClient, Shape drawing, String mode, Color color, int strokeSize) throws RemoteException { - System.out.print("Broadcasting dragging drawing to everyone..."); +// System.out.print("Broadcasting dragging drawing to everyone..."); g2 = (Graphics2D) bufferedImage.getGraphics(); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); @@ -137,13 +137,13 @@ public class DrawingController extends UnicastRemoteObject implements IDrawingCo } } - System.out.print("...DONE\n"); +// System.out.print("...DONE\n"); return true; } public boolean broadcastClearCanvas(String fromClient) throws RemoteException { - System.out.print("Broadcasting canvas clearance to everyone..."); +// System.out.print("Broadcasting canvas clearance to everyone..."); IDrawingUpdate client; @@ -159,7 +159,7 @@ public class DrawingController extends UnicastRemoteObject implements IDrawingCo } } - System.out.print("...DONE\n"); +// System.out.print("...DONE\n"); return true; } @@ -188,7 +188,7 @@ public class DrawingController extends UnicastRemoteObject implements IDrawingCo public boolean broadcastUpdateImage(String fromClient) throws RemoteException { - System.out.print("Broadcasting new image loading to everyone..."); +// System.out.print("Broadcasting new image loading to everyone..."); try { @@ -216,7 +216,7 @@ public class DrawingController extends UnicastRemoteObject implements IDrawingCo err.printStackTrace(); } - System.out.print("...DONE\n"); +// System.out.print("...DONE\n"); return true; } diff --git a/src/server/Server.java b/src/server/Server.java index 9e0084d77316ae0cdabc05dc2755b48cf327bef0..b65b320e1acd0861b99fa9eeb41d0cb345a9c8cc 100644 --- a/src/server/Server.java +++ b/src/server/Server.java @@ -50,7 +50,7 @@ public class Server { Server server = new Server(); - server.run(); + server.run(args[0]); } catch( Exception e ) { @@ -58,15 +58,15 @@ public class Server } } - public void run() throws RemoteException + public void run(String serverIP) throws RemoteException { - String serverIP = ""; - try { - InetAddress inetAddress = InetAddress.getLocalHost(); - serverIP = inetAddress.getHostAddress(); - } catch (Exception e) { - e.printStackTrace(); - } +// String serverIP = ""; +// try { +// InetAddress inetAddress = InetAddress.getLocalHost(); +// serverIP = inetAddress.getHostAddress(); +// } catch (Exception e) { +// e.printStackTrace(); +// } System.setProperty("java.rmi.server.hostname", serverIP); @@ -91,16 +91,18 @@ public class Server System.out.println("Server is ready"); - printIP(); + printIP(serverIP); } - private void printIP() + private void printIP(String serverIP) { InetAddress inetAddress = null; try { - inetAddress = InetAddress.getLocalHost(); + if (serverIP.isEmpty()) { + inetAddress = InetAddress.getLocalHost(); + } else inetAddress = InetAddress.getByName(serverIP); } catch (UnknownHostException e) {