gitextract_e98itcgw/ ├── .gitignore ├── LICENSE.txt ├── README.md ├── client/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ ├── client/ │ │ │ ├── chatwindow/ │ │ │ │ ├── CellRenderer.java │ │ │ │ ├── ChatController.java │ │ │ │ └── Listener.java │ │ │ ├── login/ │ │ │ │ ├── LoginController.java │ │ │ │ └── MainLauncher.java │ │ │ └── util/ │ │ │ ├── ResizeHelper.java │ │ │ ├── VoicePlayback.java │ │ │ ├── VoiceRecorder.java │ │ │ └── VoiceUtil.java │ │ ├── messages/ │ │ │ ├── Message.java │ │ │ ├── MessageType.java │ │ │ ├── Status.java │ │ │ ├── User.java │ │ │ └── bubble/ │ │ │ ├── Bubble.java │ │ │ ├── BubbleSpec.java │ │ │ └── BubbledLabel.java │ │ └── traynotifications/ │ │ ├── animations/ │ │ │ ├── AnimationProvider.java │ │ │ ├── AnimationType.java │ │ │ ├── FadeAnimation.java │ │ │ ├── PopupAnimation.java │ │ │ ├── SlideAnimation.java │ │ │ └── TrayAnimation.java │ │ ├── models/ │ │ │ ├── CustomStage.java │ │ │ └── Location.java │ │ └── notification/ │ │ ├── NotificationType.java │ │ └── TrayNotification.java │ └── resources/ │ ├── styles/ │ │ ├── ButtonStyle.css │ │ ├── ChatViewStyle.css │ │ ├── ComboBox.css │ │ ├── ListViewStyle.css │ │ └── Login.css │ └── views/ │ ├── ChatView.fxml │ ├── LoginView.fxml │ └── TrayNotification.fxml ├── pom.xml └── server/ ├── pom.xml └── src/ └── main/ └── java/ └── com/ ├── exception/ │ └── DuplicateUsernameException.java ├── messages/ │ ├── Message.java │ ├── MessageType.java │ ├── Status.java │ └── User.java └── server/ └── Server.java