Refactoring: Moving GUI program logic from CoderClient to each controller class
-Removing the Session Guard -Adding a SessionHandler -Adding a ProjectHandler
This commit is contained in:
parent
0a580f8c53
commit
5a9e709ae8
22 changed files with 656 additions and 655 deletions
|
|
@ -2,11 +2,14 @@ package com.coder.client.gui.newProject;
|
|||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.HashSet;
|
||||
import java.util.ResourceBundle;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.coder.server.message.CoderMessage;
|
||||
import com.coder.server.message.ProjectTypeReqMsg;
|
||||
import com.coder.server.message.ProjectTypeRspMsg;
|
||||
import com.coder.server.message.SupportedProperties;
|
||||
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.event.ActionEvent;
|
||||
|
|
@ -20,11 +23,13 @@ import javafx.scene.input.KeyEvent;
|
|||
|
||||
import zutil.log.LogUtil;
|
||||
|
||||
import com.coder.client.CoderClient;
|
||||
import com.coder.client.gui.GuiWindow;
|
||||
import com.coder.client.session.ProjectTypeRspMsgListener;
|
||||
|
||||
public class NewProjectDialog extends GuiWindow {
|
||||
public static final Logger logger = LogUtil.getLogger();
|
||||
private HashSet<NewProjectDialogListener> listeners;
|
||||
private CoderClient client;
|
||||
|
||||
@FXML private Button createButton;
|
||||
@FXML private Button cancelButton;
|
||||
|
|
@ -35,18 +40,28 @@ public class NewProjectDialog extends GuiWindow {
|
|||
|
||||
private ObservableList<String> projectTypeList = null;
|
||||
|
||||
public NewProjectDialog() throws IOException {
|
||||
public NewProjectDialog(CoderClient client) throws IOException {
|
||||
super(NewProjectDialog.class.getResource("NewProjectDialog.fxml"));
|
||||
projectTypeList = FXCollections.observableArrayList();
|
||||
projectTypeComboBox.setItems(projectTypeList);
|
||||
listeners = new HashSet<NewProjectDialogListener>();
|
||||
this.client = client;
|
||||
client.getSessionHandler().addMessageListener(new ProjectTypeRspMsgListener() {
|
||||
@Override
|
||||
public void messageReceived(final ProjectTypeRspMsg msg) {
|
||||
logger.fine("a ProjectTypeRspMsg received");
|
||||
for(String typeName : msg.keySet()){
|
||||
SupportedProperties typeData = msg.get(typeName);
|
||||
addProjectTypeToList(typeName, typeData);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void willShow() {
|
||||
for(NewProjectDialogListener listener : this.listeners){
|
||||
listener.willShow();
|
||||
}
|
||||
clearProjectTypeList();
|
||||
sendProjectTypeReqMsg();
|
||||
|
||||
if(errorMessageLabel.getText() == null || errorMessageLabel.getText().isEmpty()){
|
||||
projectNameTextField.setText(null);
|
||||
projectTypeComboBox.setValue(null);
|
||||
|
|
@ -60,8 +75,15 @@ public class NewProjectDialog extends GuiWindow {
|
|||
errorMessageLabel.setText("");
|
||||
}
|
||||
|
||||
private void sendProjectTypeReqMsg(){
|
||||
CoderMessage msg = new CoderMessage();
|
||||
msg.ProjectTypeReq = new ProjectTypeReqMsg();
|
||||
client.getSessionHandler().sendMessage(msg);
|
||||
}
|
||||
|
||||
@FXML
|
||||
protected void create(ActionEvent event){
|
||||
logger.fine("create button triggered");
|
||||
if(projectNameTextField.getText() == null || projectNameTextField.getText().isEmpty()){
|
||||
logger.warning("Missing project name");
|
||||
return;
|
||||
|
|
@ -70,19 +92,17 @@ public class NewProjectDialog extends GuiWindow {
|
|||
logger.warning("Missing project type");
|
||||
return;
|
||||
}
|
||||
for(NewProjectDialogListener listener : this.listeners){
|
||||
listener.create(projectNameTextField.getText(), projectTypeComboBox.getValue(), projectDescriptionTextField.getText());
|
||||
}
|
||||
|
||||
client.getProjectHandler().createNewProject(projectNameTextField.getText(), projectTypeComboBox.getValue(), projectDescriptionTextField.getText());
|
||||
}
|
||||
|
||||
@FXML
|
||||
protected void cancel(ActionEvent event){
|
||||
for(NewProjectDialogListener listener : this.listeners){
|
||||
listener.cancel();
|
||||
}
|
||||
logger.fine("cancel button triggered");
|
||||
client.getProjectHandler().setProject(null);
|
||||
client.getProjectHandler().selectProject();
|
||||
}
|
||||
|
||||
|
||||
@FXML
|
||||
protected void keyPressed(KeyEvent event){
|
||||
enableDisableButton();
|
||||
|
|
@ -113,10 +133,6 @@ public class NewProjectDialog extends GuiWindow {
|
|||
return "New Project";
|
||||
}
|
||||
|
||||
public void addNewProjectDialogListener(NewProjectDialogListener newProjectDialogListener) {
|
||||
this.listeners.add(newProjectDialogListener);
|
||||
}
|
||||
|
||||
public void addProjectTypeToList(String typeName, SupportedProperties typeData) {
|
||||
logger.fine("Adding project type \"" + typeName + "\" to the project type list");
|
||||
projectTypeList.add(typeName);
|
||||
|
|
@ -126,9 +142,13 @@ public class NewProjectDialog extends GuiWindow {
|
|||
projectTypeList.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setErrorMessage(String errorMsg) {
|
||||
private void setErrorMessage(String errorMsg) {
|
||||
errorMessageLabel.setText(errorMsg);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getDescriptiveName() {
|
||||
return "New Project Dialog";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue