Refactoring: moving more GUI logic to each controller class
-Adding a handler for SSDP -CoderClient giving control to each controller to be able to show itself on the main stage
This commit is contained in:
parent
02efc6c22f
commit
09d15b4a80
12 changed files with 244 additions and 243 deletions
|
|
@ -11,7 +11,6 @@ import javafx.fxml.FXMLLoader;
|
|||
import javafx.fxml.Initializable;
|
||||
import javafx.scene.Parent;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.stage.Stage;
|
||||
|
||||
public abstract class GuiWindow implements Initializable{
|
||||
public static final Logger logger = LogUtil.getLogger();
|
||||
|
|
@ -28,27 +27,18 @@ public abstract class GuiWindow implements Initializable{
|
|||
scene = new Scene((Parent)loader.load());
|
||||
}
|
||||
|
||||
/**
|
||||
* show on the given stage
|
||||
* @param stage The stage to show on
|
||||
*/
|
||||
public void showOnStage(Stage stage){
|
||||
stage.setScene(scene);
|
||||
stage.setTitle(getTitle());
|
||||
logger.fine("about to show " + getDescriptiveName() + " on stage");
|
||||
willShow();
|
||||
stage.show();
|
||||
logger.fine("showing " + getDescriptiveName());
|
||||
public Scene getScene(){
|
||||
return this.scene;
|
||||
}
|
||||
|
||||
protected abstract String getDescriptiveName();
|
||||
public abstract String getDescriptiveName();
|
||||
|
||||
protected abstract String getTitle();
|
||||
public abstract String getTitle();
|
||||
|
||||
/**
|
||||
* Called every time before showed on stage
|
||||
*/
|
||||
protected abstract void willShow();
|
||||
public abstract void willShow();
|
||||
|
||||
/**
|
||||
* Will be called once when created
|
||||
|
|
|
|||
|
|
@ -16,12 +16,14 @@ import zutil.log.LogUtil;
|
|||
|
||||
import com.coder.client.CoderClient;
|
||||
import com.coder.client.gui.GuiWindow;
|
||||
import com.coder.client.project.ProjectListener;
|
||||
import com.coder.client.property.CheckBoxProperty;
|
||||
import com.coder.client.property.CoderClientProperty;
|
||||
import com.coder.client.property.ComboBoxProperty;
|
||||
import com.coder.client.session.ProjectRspMsgListener;
|
||||
import com.coder.client.session.ProjectTypeRspMsgListener;
|
||||
import com.coder.server.message.CoderMessage;
|
||||
import com.coder.server.message.ProjectReqMsg;
|
||||
import com.coder.server.message.ProjectRspMsg;
|
||||
import com.coder.server.message.ProjectTypeReqMsg;
|
||||
import com.coder.server.message.ProjectTypeRspMsg;
|
||||
|
|
@ -53,6 +55,7 @@ public class EditorWindow extends GuiWindow {
|
|||
public EditorWindow(final CoderClient client) throws IOException{
|
||||
super(EditorWindow.class.getResource("EditorWindow.fxml"));
|
||||
this.client = client;
|
||||
|
||||
client.getSessionHandler().addMessageListener(new ProjectRspMsgListener() {
|
||||
@Override
|
||||
public void messageReceived(final ProjectRspMsg msg) {
|
||||
|
|
@ -63,6 +66,7 @@ public class EditorWindow extends GuiWindow {
|
|||
client.getProjectHandler().setProject(null);
|
||||
return;
|
||||
}else{
|
||||
client.showOnStage(EditorWindow.this);
|
||||
client.getProjectHandler().setProject(msg.name);
|
||||
}
|
||||
|
||||
|
|
@ -114,6 +118,7 @@ public class EditorWindow extends GuiWindow {
|
|||
}
|
||||
}
|
||||
});
|
||||
|
||||
client.getSessionHandler().addMessageListener(new ProjectTypeRspMsgListener() {
|
||||
@Override
|
||||
public void messageReceived(ProjectTypeRspMsg msg) {
|
||||
|
|
@ -124,6 +129,29 @@ public class EditorWindow extends GuiWindow {
|
|||
}
|
||||
}
|
||||
});
|
||||
|
||||
client.getProjectHandler().addprojectListener(new ProjectListener() {
|
||||
@Override
|
||||
public void selectProject() {
|
||||
|
||||
}
|
||||
@Override
|
||||
public void openProjectFailed(String errorMsg) {
|
||||
|
||||
}
|
||||
@Override
|
||||
public void openProject(String projectName) {
|
||||
CoderMessage msg = new CoderMessage();
|
||||
msg.ProjectReq = new ProjectReqMsg();
|
||||
msg.ProjectReq.name = projectName;
|
||||
client.getSessionHandler().sendMessage(msg);
|
||||
}
|
||||
@Override
|
||||
public void createNewProject() {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -134,7 +162,7 @@ public class EditorWindow extends GuiWindow {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void willShow(){
|
||||
public void willShow(){
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -209,7 +237,7 @@ public class EditorWindow extends GuiWindow {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected String getTitle() {
|
||||
public String getTitle() {
|
||||
return "Coder Client";
|
||||
}
|
||||
|
||||
|
|
@ -219,7 +247,7 @@ public class EditorWindow extends GuiWindow {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected String getDescriptiveName() {
|
||||
public String getDescriptiveName() {
|
||||
return "Editor Window";
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,8 @@ public class LoginDialog extends GuiWindow {
|
|||
client.getSessionHandler().addSessionListener(new SessionListener() {
|
||||
@Override
|
||||
public void sessionConnectionSuccess() {
|
||||
|
||||
logger.fine("session connection successfull, will show the login dialog on the main stage");
|
||||
client.showOnStage(LoginDialog.this);
|
||||
}
|
||||
@Override
|
||||
public void sessionDisconnected(boolean tryToEstablishConnection) {
|
||||
|
|
@ -67,7 +68,7 @@ public class LoginDialog extends GuiWindow {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void willShow(){
|
||||
public void willShow(){
|
||||
passwordPasswordField.setText("");
|
||||
if( (errorLabel.getText() == null || (errorLabel.getText() != null && errorLabel.getText().isEmpty())) && usernameTextField.getText() != null && !usernameTextField.getText().isEmpty()){
|
||||
passwordPasswordField.requestFocus();
|
||||
|
|
@ -101,7 +102,7 @@ public class LoginDialog extends GuiWindow {
|
|||
@FXML
|
||||
protected void cancel(ActionEvent event){
|
||||
logger.fine("cancel button triggered");
|
||||
client.getSessionHandler().authenticationCancel();
|
||||
client.getSessionHandler().triggerAuthenticationCancel();
|
||||
}
|
||||
|
||||
public void setUsername(String username){
|
||||
|
|
@ -109,7 +110,7 @@ public class LoginDialog extends GuiWindow {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected String getTitle() {
|
||||
public String getTitle() {
|
||||
return "Login";
|
||||
}
|
||||
|
||||
|
|
@ -118,7 +119,7 @@ public class LoginDialog extends GuiWindow {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected String getDescriptiveName() {
|
||||
public String getDescriptiveName() {
|
||||
return "Login Dialog";
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import java.util.ResourceBundle;
|
|||
import java.util.logging.Logger;
|
||||
|
||||
import com.coder.server.message.CoderMessage;
|
||||
import com.coder.server.message.ProjectCreateReqMsg;
|
||||
import com.coder.server.message.ProjectTypeReqMsg;
|
||||
import com.coder.server.message.ProjectTypeRspMsg;
|
||||
import com.coder.server.message.SupportedProperties;
|
||||
|
|
@ -25,6 +26,7 @@ import zutil.log.LogUtil;
|
|||
|
||||
import com.coder.client.CoderClient;
|
||||
import com.coder.client.gui.GuiWindow;
|
||||
import com.coder.client.project.ProjectListener;
|
||||
import com.coder.client.session.ProjectTypeRspMsgListener;
|
||||
|
||||
public class NewProjectDialog extends GuiWindow {
|
||||
|
|
@ -40,11 +42,12 @@ public class NewProjectDialog extends GuiWindow {
|
|||
|
||||
private ObservableList<String> projectTypeList = null;
|
||||
|
||||
public NewProjectDialog(CoderClient client) throws IOException {
|
||||
public NewProjectDialog(final CoderClient client) throws IOException {
|
||||
super(NewProjectDialog.class.getResource("NewProjectDialog.fxml"));
|
||||
projectTypeList = FXCollections.observableArrayList();
|
||||
projectTypeComboBox.setItems(projectTypeList);
|
||||
this.client = client;
|
||||
|
||||
client.getSessionHandler().addMessageListener(new ProjectTypeRspMsgListener() {
|
||||
@Override
|
||||
public void messageReceived(final ProjectTypeRspMsg msg) {
|
||||
|
|
@ -55,10 +58,31 @@ public class NewProjectDialog extends GuiWindow {
|
|||
}
|
||||
}
|
||||
});
|
||||
|
||||
client.getProjectHandler().addprojectListener(new ProjectListener() {
|
||||
@Override
|
||||
public void selectProject() {
|
||||
|
||||
}
|
||||
@Override
|
||||
public void openProjectFailed(String errorMsg) {
|
||||
|
||||
}
|
||||
@Override
|
||||
public void openProject(String projectName) {
|
||||
|
||||
}
|
||||
@Override
|
||||
public void createNewProject() {
|
||||
setErrorMessage("");
|
||||
logger.fine("new project requested, will show the new project dialog on the main stage");
|
||||
client.showOnStage(NewProjectDialog.this);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void willShow() {
|
||||
public void willShow() {
|
||||
clearProjectTypeList();
|
||||
sendProjectTypeReqMsg();
|
||||
|
||||
|
|
@ -93,7 +117,13 @@ public class NewProjectDialog extends GuiWindow {
|
|||
return;
|
||||
}
|
||||
|
||||
client.getProjectHandler().triggerCreateNewProject(projectNameTextField.getText(), projectTypeComboBox.getValue(), projectDescriptionTextField.getText());
|
||||
CoderMessage msg = new CoderMessage();
|
||||
msg.ProjectCreateReq = new ProjectCreateReqMsg();
|
||||
msg.ProjectCreateReq.name = projectNameTextField.getText();
|
||||
msg.ProjectCreateReq.type = projectTypeComboBox.getValue();
|
||||
msg.ProjectCreateReq.description = projectDescriptionTextField.getText();
|
||||
client.getSessionHandler().sendMessage(msg);
|
||||
|
||||
}
|
||||
|
||||
@FXML
|
||||
|
|
@ -129,7 +159,7 @@ public class NewProjectDialog extends GuiWindow {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected String getTitle() {
|
||||
public String getTitle() {
|
||||
return "New Project";
|
||||
}
|
||||
|
||||
|
|
@ -147,7 +177,7 @@ public class NewProjectDialog extends GuiWindow {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected String getDescriptiveName() {
|
||||
public String getDescriptiveName() {
|
||||
return "New Project Dialog";
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ import com.coder.client.gui.GuiWindow;
|
|||
import com.coder.client.project.ProjectListener;
|
||||
import com.coder.client.session.ProjectListRspMsgListener;
|
||||
import com.coder.client.session.ProjectRspMsgListener;
|
||||
import com.coder.client.session.SessionListener;
|
||||
import com.coder.server.message.CoderMessage;
|
||||
import com.coder.server.message.ProjectListData;
|
||||
import com.coder.server.message.ProjectListReqMsg;
|
||||
|
|
@ -50,6 +51,34 @@ public class SelectProjectDialog extends GuiWindow {
|
|||
super(SelectProjectDialog.class.getResource("SelectProjectDialog.fxml"));
|
||||
this.client = client;
|
||||
|
||||
client.getSessionHandler().addSessionListener(new SessionListener() {
|
||||
@Override
|
||||
public void sessionDisconnected(boolean retryToEstablishConnection) {
|
||||
|
||||
}
|
||||
@Override
|
||||
public void sessionConnectionSuccess() {
|
||||
|
||||
}
|
||||
@Override
|
||||
public void sessionConnectionFailure() {
|
||||
|
||||
}
|
||||
@Override
|
||||
public void sessionAuthenticationSuccess() {
|
||||
logger.fine("session authentication successfull, will show the select project dialog on the main stage");
|
||||
client.showOnStage(SelectProjectDialog.this);
|
||||
}
|
||||
@Override
|
||||
public void sessionAuthenticationFailure() {
|
||||
|
||||
}
|
||||
@Override
|
||||
public void sessionAuthenticationCancel() {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
client.getSessionHandler().addMessageListener(new ProjectListRspMsgListener() {
|
||||
@Override
|
||||
public void messageReceived(final ProjectListRspMsg msg) {
|
||||
|
|
@ -77,20 +106,19 @@ public class SelectProjectDialog extends GuiWindow {
|
|||
client.getProjectHandler().addprojectListener(new ProjectListener() {
|
||||
@Override
|
||||
public void selectProject() {
|
||||
|
||||
logger.fine("select project requested, will show the select project dialog on the main stage");
|
||||
client.showOnStage(SelectProjectDialog.this);
|
||||
}
|
||||
@Override
|
||||
public void openProjectFailed(String errorMsg) {
|
||||
logger.fine("open project failed, setting error message to \""+errorMsg+"\"");
|
||||
setErrorMessage(errorMsg);
|
||||
logger.fine("open project failed, will show the select project dialog on the main stage");
|
||||
client.showOnStage(SelectProjectDialog.this);
|
||||
}
|
||||
@Override
|
||||
public void openProject(String projectName) {
|
||||
|
||||
}
|
||||
@Override
|
||||
public void createNewProject(String name, String type, String description) {
|
||||
|
||||
}
|
||||
@Override
|
||||
public void createNewProject() {
|
||||
|
|
@ -100,7 +128,7 @@ public class SelectProjectDialog extends GuiWindow {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void willShow() {
|
||||
public void willShow() {
|
||||
clearProjectList();
|
||||
if(!client.getProjectHandler().isProjectSet()){
|
||||
sendProjectListReq();
|
||||
|
|
@ -213,7 +241,7 @@ public class SelectProjectDialog extends GuiWindow {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected String getTitle() {
|
||||
public String getTitle() {
|
||||
return "Open Project";
|
||||
}
|
||||
|
||||
|
|
@ -222,7 +250,7 @@ public class SelectProjectDialog extends GuiWindow {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected String getDescriptiveName() {
|
||||
public String getDescriptiveName() {
|
||||
return "Select Project Dialog";
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,10 +2,12 @@ package com.coder.client.gui.selectServer;
|
|||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.List;
|
||||
import java.util.ResourceBundle;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javafx.application.Platform;
|
||||
import javafx.beans.value.ChangeListener;
|
||||
import javafx.beans.value.ObservableValue;
|
||||
import javafx.collections.FXCollections;
|
||||
|
|
@ -23,12 +25,14 @@ import javafx.scene.input.MouseEvent;
|
|||
import javafx.util.Callback;
|
||||
|
||||
import zutil.log.LogUtil;
|
||||
import zutil.net.ssdp.SSDPClient;
|
||||
import zutil.net.ssdp.SSDPClient.SSDPServiceListener;
|
||||
import zutil.net.ssdp.StandardSSDPInfo;
|
||||
|
||||
import com.coder.client.CoderClient;
|
||||
import com.coder.client.gui.GuiWindow;
|
||||
import com.coder.client.session.ProjectRspMsgListener;
|
||||
import com.coder.client.session.SessionListener;
|
||||
import com.coder.server.message.ProjectRspMsg;
|
||||
|
||||
public class SelectServerDialog extends GuiWindow {
|
||||
public static final Logger logger = LogUtil.getLogger();
|
||||
|
|
@ -43,7 +47,7 @@ public class SelectServerDialog extends GuiWindow {
|
|||
@FXML private Button connectButton;
|
||||
@FXML private Label errorLabel;
|
||||
|
||||
public SelectServerDialog(CoderClient client) throws IOException {
|
||||
public SelectServerDialog(final CoderClient client) throws IOException {
|
||||
super(SelectServerDialog.class.getResource("SelectServerDialog.fxml"));
|
||||
this.client = client;
|
||||
client.getSessionHandler().addSessionListener(new SessionListener() {
|
||||
|
|
@ -59,11 +63,15 @@ public class SelectServerDialog extends GuiWindow {
|
|||
}else{
|
||||
setErrorMessage("The current session was disconnected");
|
||||
}
|
||||
logger.fine("session disconnected, will show the select server dialog on the main stage");
|
||||
client.showOnStage(SelectServerDialog.this);
|
||||
}
|
||||
@Override
|
||||
public void sessionConnectionFailure() {
|
||||
setServerAddress(null);
|
||||
setErrorMessage("ERROR: Unable to connect to remote host");
|
||||
logger.fine("session connection failure, will show the select server dialog on the main stage");
|
||||
client.showOnStage(SelectServerDialog.this);
|
||||
}
|
||||
@Override
|
||||
public void sessionAuthenticationSuccess() {
|
||||
|
|
@ -72,17 +80,49 @@ public class SelectServerDialog extends GuiWindow {
|
|||
@Override
|
||||
public void sessionAuthenticationFailure() {
|
||||
setErrorMessage("");
|
||||
logger.fine("session authentication failure, will show the select server dialog on the main stage");
|
||||
client.showOnStage(SelectServerDialog.this);
|
||||
}
|
||||
@Override
|
||||
public void sessionAuthenticationCancel() {
|
||||
setServerAddress(null);
|
||||
setErrorMessage(null);
|
||||
logger.fine("session authentication canceled, will show the select server dialog on the main stage");
|
||||
client.showOnStage(SelectServerDialog.this);
|
||||
}
|
||||
});
|
||||
|
||||
client.getSessionHandler().addMessageListener(new ProjectRspMsgListener() {
|
||||
@Override
|
||||
public void messageReceived(final ProjectRspMsg msg) {
|
||||
Platform.runLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if(msg.error != null){
|
||||
client.showOnStage(SelectServerDialog.this);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
client.getSSDPHandler().setSSDPServiceListener(new SSDPServiceListener() {
|
||||
@Override
|
||||
public void newService(final StandardSSDPInfo service) {
|
||||
Platform.runLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
String ip = service.getInetAddress().getHostAddress();
|
||||
addServerToList(ip, 1337);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void willShow() {
|
||||
public void willShow() {
|
||||
logger.fine("Clearing server list");
|
||||
serverList.clear();
|
||||
if(address != null && port != -1){
|
||||
|
|
@ -91,14 +131,9 @@ public class SelectServerDialog extends GuiWindow {
|
|||
connectButton.fire();
|
||||
}else{
|
||||
logger.fine("sending a SSDP request for local servers");
|
||||
SSDPClient ssdpClient = client.getSSDPClient();
|
||||
if(ssdpClient != null){
|
||||
ssdpClient.requestService("coder:discover");
|
||||
for(StandardSSDPInfo server : ssdpClient.getServices("coder:discover")){
|
||||
addServerToList(server.getInetAddress().getHostAddress(), 1337);
|
||||
}
|
||||
}else{
|
||||
logger.severe("could not send a SSDP request since the client is not setup");
|
||||
List<StandardSSDPInfo> serverList = client.getSSDPHandler().requestService("coder:discover");
|
||||
for(StandardSSDPInfo server : serverList){
|
||||
addServerToList(server.getInetAddress().getHostAddress(), 1337);
|
||||
}
|
||||
}
|
||||
connectButton.setDisable(true);
|
||||
|
|
@ -180,7 +215,7 @@ public class SelectServerDialog extends GuiWindow {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected String getTitle() {
|
||||
public String getTitle() {
|
||||
return "Select Server";
|
||||
}
|
||||
|
||||
|
|
@ -195,7 +230,7 @@ public class SelectServerDialog extends GuiWindow {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected String getDescriptiveName() {
|
||||
public String getDescriptiveName() {
|
||||
return "Select Server Dialog";
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue