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,7 +2,6 @@ package com.coder.client.gui.selectProject;
|
|||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.HashSet;
|
||||
import java.util.ResourceBundle;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
|
@ -25,33 +24,65 @@ import javafx.scene.input.MouseButton;
|
|||
import javafx.scene.input.MouseEvent;
|
||||
import javafx.util.Callback;
|
||||
|
||||
import com.coder.client.CoderClient;
|
||||
import com.coder.client.gui.GuiWindow;
|
||||
import com.coder.client.session.ProjectListRspMsgListener;
|
||||
import com.coder.client.session.ProjectRspMsgListener;
|
||||
import com.coder.server.message.CoderMessage;
|
||||
import com.coder.server.message.ProjectListData;
|
||||
import com.coder.server.message.ProjectListReqMsg;
|
||||
import com.coder.server.message.ProjectListRspMsg;
|
||||
import com.coder.server.message.ProjectRspMsg;
|
||||
|
||||
public class SelectProjectDialog extends GuiWindow {
|
||||
public static final Logger logger = LogUtil.getLogger();
|
||||
private HashSet<SelectProjectDialogListener> listeners;
|
||||
private ObservableList<ProjectListItem> projectList;
|
||||
private CoderClient client;
|
||||
|
||||
@FXML private ListView<ProjectListItem> projectListView;
|
||||
@FXML private Button newProjectButton;
|
||||
@FXML private Button cancelButton;
|
||||
@FXML private Button openButton;
|
||||
@FXML private Label errorLabel;
|
||||
|
||||
private String projectName = null;
|
||||
|
||||
public SelectProjectDialog() throws IOException {
|
||||
super(SelectProjectDialog.class.getResource("SelectProjectDialog.fxml"));
|
||||
listeners = new HashSet<SelectProjectDialogListener>();
|
||||
public SelectProjectDialog(final CoderClient client) throws IOException {
|
||||
super(SelectProjectDialog.class.getResource("SelectProjectDialog.fxml"));
|
||||
this.client = client;
|
||||
|
||||
client.getSessionHandler().addMessageListener(new ProjectListRspMsgListener() {
|
||||
@Override
|
||||
public void messageReceived(final ProjectListRspMsg msg) {
|
||||
logger.fine("a ProjectListRsp received");
|
||||
for(String projectName : msg.keySet()){
|
||||
ProjectListData projectData = msg.get(projectName);
|
||||
addProjectToList(projectName, projectData);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
client.getSessionHandler().addMessageListener(new ProjectRspMsgListener() {
|
||||
@Override
|
||||
public void messageReceived(final ProjectRspMsg msg) {
|
||||
logger.fine("a ProjectRspMsg received");
|
||||
if(msg.error != null){
|
||||
logger.severe("Server responded on the project request with the following error message: " + msg.error);
|
||||
client.getProjectHandler().setProject(null);
|
||||
setErrorMessage("ERROR: " + msg.error);
|
||||
}else{
|
||||
setErrorMessage("");
|
||||
client.getProjectHandler().setProject(msg.name);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void willShow() {
|
||||
for(SelectProjectDialogListener listener : this.listeners){
|
||||
listener.willShow();
|
||||
}
|
||||
if(this.projectName != null && !this.projectName.isEmpty()){
|
||||
clearProjectList();
|
||||
if(!client.getProjectHandler().isProjectSet()){
|
||||
sendProjectListReq();
|
||||
}else{
|
||||
logger.fine("will outofire the open button since all parameters are already set");
|
||||
openButton.setDisable(false);
|
||||
openButton.fire();
|
||||
}
|
||||
|
|
@ -88,6 +119,13 @@ public class SelectProjectDialog extends GuiWindow {
|
|||
});
|
||||
}
|
||||
|
||||
private void sendProjectListReq(){
|
||||
//send a request for a new list of projects
|
||||
CoderMessage msg = new CoderMessage();
|
||||
msg.ProjectListReq = new ProjectListReqMsg();
|
||||
client.getSessionHandler().sendMessage(msg);
|
||||
}
|
||||
|
||||
@FXML
|
||||
protected void mouseClickedOnList(MouseEvent event){
|
||||
if(event.getButton().equals(MouseButton.PRIMARY)){
|
||||
|
|
@ -113,42 +151,31 @@ public class SelectProjectDialog extends GuiWindow {
|
|||
|
||||
@FXML
|
||||
protected void newProject(ActionEvent event){
|
||||
logger.fine("user triggered the new project button");
|
||||
for(SelectProjectDialogListener listener : this.listeners){
|
||||
listener.newProject();
|
||||
}
|
||||
logger.fine("new project button triggered");
|
||||
client.getProjectHandler().createNewProject();
|
||||
}
|
||||
|
||||
@FXML
|
||||
protected void cancel(ActionEvent event){
|
||||
logger.fine("user triggered the cancel button");
|
||||
for(SelectProjectDialogListener listener : this.listeners){
|
||||
listener.cancel();
|
||||
}
|
||||
logger.fine("cancel button triggered");
|
||||
client.getSessionHandler().closeCurrentSession(false);
|
||||
}
|
||||
|
||||
@FXML
|
||||
protected void refresh(ActionEvent event){
|
||||
for(SelectProjectDialogListener listener : this.listeners){
|
||||
listener.refresh();
|
||||
}
|
||||
logger.fine("refresh button triggered");
|
||||
clearProjectList();
|
||||
sendProjectListReq();
|
||||
}
|
||||
|
||||
@FXML
|
||||
protected void open(ActionEvent event){
|
||||
if(this.projectName == null || this.projectName.isEmpty()){
|
||||
logger.fine("open button triggered");
|
||||
if(!client.getProjectHandler().isProjectSet()){
|
||||
ProjectListItem selectedItem = projectListView.getSelectionModel().getSelectedItem();
|
||||
projectName = selectedItem.getName();
|
||||
client.getProjectHandler().setProject(selectedItem.getName());
|
||||
}
|
||||
for(SelectProjectDialogListener listener : this.listeners){
|
||||
if(projectName != null){
|
||||
listener.open(projectName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void addSelectProjectDialogListener(SelectProjectDialogListener listener){
|
||||
this.listeners.add(listener);
|
||||
client.getProjectHandler().openProject();
|
||||
}
|
||||
|
||||
public void clearProjectList(){
|
||||
|
|
@ -167,21 +194,13 @@ public class SelectProjectDialog extends GuiWindow {
|
|||
return "Open Project";
|
||||
}
|
||||
|
||||
public void setProject(String project) {
|
||||
this.projectName = project;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setErrorMessage(String errorMsg){
|
||||
private void setErrorMessage(String errorMsg){
|
||||
this.errorLabel.setText(errorMsg);
|
||||
}
|
||||
|
||||
public boolean isProjectSelected() {
|
||||
return this.projectName != null && !this.projectName.isEmpty();
|
||||
}
|
||||
|
||||
public String getSelectedProject() {
|
||||
return this.projectName;
|
||||
@Override
|
||||
protected String getDescriptiveName() {
|
||||
return "Select Project Dialog";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue