As well as displaying log messages received from the servers the GUI Server Management client allows the **independent restarting or stopping** of each server.
-The GUI User client makes extensive use of Swing components. The NetBeans IDE is responsible for generating most of the GUI skeleton code for handling user actions via `ActionEvent` and `PropertyChange` event listeners and several function-specific child windows and dialogs for presentation during log-in, profile editing, chat and configuration. After the GUI skeleton code was complete I added support for the network services background threads and then implemented the links between them and the the GUI components.
+The GUI User client makes extensive use of Swing components. The NetBeans IDE is responsible for generating most of the GUI skeleton code for handling user actions via `ActionEvent` and `PropertyChange` event listeners and several function-specific child windows and dialogs for presentation during log-in, profile editing, chat and configuration. After the GUI skeleton code was complete I added support for the network services background threads and then implemented the links between them and the GUI components.
Since the criteria requires a range of network functionality shared across clients and servers I implemented a **[common network library](dist/javadoc/uk/ac/ntu/n0521366/wsyd/libs/net/package-frame.html)**. This network library, and the server services it implements, needs to support **multi-threading** especially on the client since listening for incoming connections is an **operation that blocks** in the operating system kernel. If those blocking operations were performed on the GUI Event Dispatch thread it would cause **poor response** in the user interface.