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
|
|
@ -5,45 +5,34 @@ import java.util.Map;
|
|||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.coder.client.gui.GuiWindow;
|
||||
import com.coder.client.gui.editor.EditorWindow;
|
||||
import com.coder.client.gui.login.LoginDialog;
|
||||
import com.coder.client.gui.newProject.NewProjectDialog;
|
||||
import com.coder.client.gui.selectProject.SelectProjectDialog;
|
||||
import com.coder.client.gui.selectServer.SelectServerDialog;
|
||||
import com.coder.client.project.ProjectHandler;
|
||||
import com.coder.client.project.ProjectListener;
|
||||
import com.coder.client.session.ProjectRspMsgListener;
|
||||
import com.coder.client.session.SessionHandler;
|
||||
import com.coder.client.session.SessionListener;
|
||||
import com.coder.server.message.CoderMessage;
|
||||
import com.coder.server.message.ProjectCreateReqMsg;
|
||||
import com.coder.server.message.ProjectReqMsg;
|
||||
import com.coder.server.message.ProjectRspMsg;
|
||||
|
||||
import zutil.log.CompactLogFormatter;
|
||||
import zutil.log.LogUtil;
|
||||
import zutil.net.ssdp.SSDPClient;
|
||||
import zutil.net.ssdp.SSDPClient.SSDPServiceListener;
|
||||
import zutil.net.ssdp.StandardSSDPInfo;
|
||||
import javafx.application.Application;
|
||||
import javafx.application.Platform;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.stage.Stage;
|
||||
|
||||
public class CoderClient extends Application{
|
||||
public static final Logger logger = LogUtil.getLogger();
|
||||
private SessionHandler sessionHandler = new SessionHandler();
|
||||
private ProjectHandler projectHandler = new ProjectHandler();
|
||||
private SessionHandler sessionHandler;
|
||||
private ProjectHandler projectHandler;
|
||||
private SSDPHandler ssdpHandler;
|
||||
|
||||
//GUI elements
|
||||
private Stage mainStage;
|
||||
private EditorWindow editorWindow;
|
||||
private LoginDialog loginDialog;
|
||||
private SelectProjectDialog selectProjectDialog;
|
||||
private SelectServerDialog selectServerDialog;
|
||||
private NewProjectDialog newProjectDialog;
|
||||
|
||||
//services
|
||||
SSDPClient ssdpClient;
|
||||
|
||||
public static void main(String[] args) {
|
||||
Application.launch(args);
|
||||
}
|
||||
|
|
@ -59,7 +48,18 @@ public class CoderClient extends Application{
|
|||
LogUtil.setFormatter("zutil", formatter);
|
||||
LogUtil.setGlobalFormatter(formatter);
|
||||
|
||||
//setup handlers
|
||||
try{
|
||||
this.sessionHandler = new SessionHandler();
|
||||
this.projectHandler = new ProjectHandler();
|
||||
this.ssdpHandler = new SSDPHandler();
|
||||
}catch(Exception e){
|
||||
logger.log(Level.SEVERE, "could not load all handlers", e);
|
||||
exit();
|
||||
}
|
||||
|
||||
//setup GUI elements
|
||||
this.mainStage = mainStage;
|
||||
mainStage.setTitle("CoderClient");
|
||||
try{
|
||||
this.selectServerDialog = new SelectServerDialog(this);
|
||||
|
|
@ -69,7 +69,7 @@ public class CoderClient extends Application{
|
|||
this.editorWindow = new EditorWindow(this);
|
||||
}catch(IOException e){
|
||||
logger.log(Level.SEVERE, "could not load all GUI elements", e);
|
||||
System.exit(1);
|
||||
exit();
|
||||
}
|
||||
|
||||
//parse program arguments
|
||||
|
|
@ -92,170 +92,25 @@ public class CoderClient extends Application{
|
|||
}
|
||||
}
|
||||
|
||||
//setup SSDP client
|
||||
try{
|
||||
setupSSDPClient();
|
||||
}catch(IOException e){
|
||||
logger.log(Level.SEVERE, "could not setup SSDP client", e);
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
//add session listeners
|
||||
sessionHandler.addSessionListener(new SessionListener() {
|
||||
@Override
|
||||
public void sessionDisconnected(boolean retryToEstablishConnection) {
|
||||
Platform.runLater(new Runnable(){
|
||||
@Override
|
||||
public void run() {
|
||||
logger.info("session disconnected, will show the select server dialog on the main stage");
|
||||
selectServerDialog.showOnStage(mainStage);
|
||||
}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
public void sessionConnectionSuccess() {
|
||||
Platform.runLater(new Runnable(){
|
||||
@Override
|
||||
public void run() {
|
||||
logger.info("session connection successfull, will show the login dialog on the main stage");
|
||||
loginDialog.showOnStage(mainStage);
|
||||
}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
public void sessionConnectionFailure() {
|
||||
Platform.runLater(new Runnable(){
|
||||
@Override
|
||||
public void run() {
|
||||
logger.info("session connection failure, will show the select server dialog on the main stage");
|
||||
selectServerDialog.showOnStage(mainStage);
|
||||
}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
public void sessionAuthenticationSuccess() {
|
||||
Platform.runLater(new Runnable(){
|
||||
@Override
|
||||
public void run() {
|
||||
logger.info("session authentication successfull, will show the select project dialog on the main stage");
|
||||
selectProjectDialog.showOnStage(mainStage);
|
||||
}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
public void sessionAuthenticationFailure() {
|
||||
Platform.runLater(new Runnable(){
|
||||
@Override
|
||||
public void run() {
|
||||
logger.info("session authentication failure, will show the select server dialog on the main stage");
|
||||
selectServerDialog.showOnStage(mainStage);
|
||||
}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
public void sessionAuthenticationCancel() {
|
||||
Platform.runLater(new Runnable(){
|
||||
@Override
|
||||
public void run() {
|
||||
logger.info("session authentication canceled, will show the select server dialog on the main stage");
|
||||
selectServerDialog.showOnStage(mainStage);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//add project listeners
|
||||
projectHandler.addprojectListener(new ProjectListener() {
|
||||
@Override
|
||||
public void selectProject() {
|
||||
Platform.runLater(new Runnable(){
|
||||
@Override
|
||||
public void run() {
|
||||
logger.info("select project requested, will show the select project dialog on the main stage");
|
||||
selectProjectDialog.showOnStage(mainStage);
|
||||
}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
public void openProject(String projectName) {
|
||||
CoderMessage msg = new CoderMessage();
|
||||
msg.ProjectReq = new ProjectReqMsg();
|
||||
msg.ProjectReq.name = projectName;
|
||||
sessionHandler.sendMessage(msg);
|
||||
}
|
||||
@Override
|
||||
public void createNewProject(String name, String type, String description) {
|
||||
CoderMessage msg = new CoderMessage();
|
||||
msg.ProjectCreateReq = new ProjectCreateReqMsg();
|
||||
msg.ProjectCreateReq.name = name;
|
||||
msg.ProjectCreateReq.type = type;
|
||||
msg.ProjectCreateReq.description = description;
|
||||
sessionHandler.sendMessage(msg);
|
||||
}
|
||||
@Override
|
||||
public void createNewProject() {
|
||||
Platform.runLater(new Runnable(){
|
||||
@Override
|
||||
public void run() {
|
||||
logger.info("new project requested, will show the new project dialog on the main stage");
|
||||
newProjectDialog.showOnStage(mainStage);
|
||||
}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
public void openProjectFailed(String errorMsg) {
|
||||
Platform.runLater(new Runnable(){
|
||||
@Override
|
||||
public void run() {
|
||||
logger.info("open project failed, will show the select project dialog on the main stage");
|
||||
selectProjectDialog.showOnStage(mainStage);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//add message listeners
|
||||
sessionHandler.addMessageListener(new ProjectRspMsgListener() {
|
||||
@Override
|
||||
public void messageReceived(final ProjectRspMsg msg) {
|
||||
Platform.runLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if(msg.error != null){
|
||||
selectServerDialog.showOnStage(mainStage);
|
||||
}else{
|
||||
editorWindow.showOnStage(mainStage);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//start program logic
|
||||
selectServerDialog.setServerPort(-1);
|
||||
selectServerDialog.showOnStage(mainStage);
|
||||
showOnStage(selectServerDialog);
|
||||
|
||||
}
|
||||
|
||||
private void setupSSDPClient() throws IOException{
|
||||
this.ssdpClient = new SSDPClient();
|
||||
ssdpClient.setListener(new SSDPServiceListener() {
|
||||
@Override
|
||||
public void newService(final StandardSSDPInfo service) {
|
||||
if(selectServerDialog != null){
|
||||
Platform.runLater(new Runnable() {
|
||||
public void showOnStage(final GuiWindow gui){
|
||||
Platform.runLater(new Runnable(){
|
||||
@Override
|
||||
public void run() {
|
||||
String ip = service.getInetAddress().getHostAddress();
|
||||
selectServerDialog.addServerToList(ip, 1337);
|
||||
Scene scene = gui.getScene();
|
||||
mainStage.setScene(scene);
|
||||
mainStage.setTitle(gui.getTitle());
|
||||
logger.fine("about to show " + gui.getDescriptiveName() + " on stage");
|
||||
gui.willShow();
|
||||
mainStage.show();
|
||||
logger.fine("showing " + gui.getDescriptiveName());
|
||||
}
|
||||
});
|
||||
} else {
|
||||
logger.warning("New Service found ("+service.getLocation()+") when stage closed.");
|
||||
}
|
||||
}
|
||||
});
|
||||
ssdpClient.start();
|
||||
}
|
||||
|
||||
public void exit() {
|
||||
|
|
@ -264,10 +119,6 @@ public class CoderClient extends Application{
|
|||
System.exit(0);
|
||||
}
|
||||
|
||||
public SSDPClient getSSDPClient() {
|
||||
return this.ssdpClient;
|
||||
}
|
||||
|
||||
|
||||
public SessionHandler getSessionHandler() {
|
||||
return this.sessionHandler;
|
||||
|
|
@ -277,4 +128,8 @@ public class CoderClient extends Application{
|
|||
return this.projectHandler;
|
||||
}
|
||||
|
||||
public SSDPHandler getSSDPHandler(){
|
||||
return this.ssdpHandler;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
package com.coder.client.project;
|
||||
package com.coder.client;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.coder.client.project.ProjectListener;
|
||||
|
||||
import zutil.log.LogUtil;
|
||||
|
||||
public class ProjectHandler {
|
||||
|
|
@ -18,12 +20,6 @@ public class ProjectHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public void triggerCreateNewProject(String name, String type, String description){
|
||||
for(ProjectListener listener : projectListeners){
|
||||
listener.createNewProject(name, type, description);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isProjectSet() {
|
||||
return projectName != null && !projectName.isEmpty();
|
||||
}
|
||||
32
src/com/coder/client/SSDPHandler.java
Normal file
32
src/com/coder/client/SSDPHandler.java
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
package com.coder.client;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import zutil.log.LogUtil;
|
||||
import zutil.net.ssdp.SSDPClient;
|
||||
import zutil.net.ssdp.SSDPClient.SSDPServiceListener;
|
||||
import zutil.net.ssdp.StandardSSDPInfo;
|
||||
|
||||
public class SSDPHandler {
|
||||
public static final Logger logger = LogUtil.getLogger();
|
||||
|
||||
private SSDPClient ssdpClient;
|
||||
|
||||
public SSDPHandler() throws IOException{
|
||||
ssdpClient = new SSDPClient();
|
||||
ssdpClient.start();
|
||||
}
|
||||
|
||||
public void setSSDPServiceListener(SSDPServiceListener listener){
|
||||
ssdpClient.setListener(listener);
|
||||
}
|
||||
|
||||
public List<StandardSSDPInfo> requestService(String service) {
|
||||
logger.fine("sending SSDP service request: \""+service+"\"");
|
||||
ssdpClient.requestService(service);
|
||||
return ssdpClient.getServices(service);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.coder.client.session;
|
||||
package com.coder.client;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashSet;
|
||||
|
|
@ -7,6 +7,9 @@ import java.util.logging.Logger;
|
|||
|
||||
import zutil.log.LogUtil;
|
||||
|
||||
import com.coder.client.session.ProjectMessageListener;
|
||||
import com.coder.client.session.Session;
|
||||
import com.coder.client.session.SessionListener;
|
||||
import com.coder.server.message.CoderMessage;
|
||||
|
||||
public class SessionHandler{
|
||||
|
|
@ -97,11 +100,15 @@ public class SessionHandler{
|
|||
}
|
||||
}
|
||||
|
||||
public void authenticationCancel() {
|
||||
public void triggerAuthenticationCancel() {
|
||||
if(session.isConnected() && !session.isAuthenticated()){
|
||||
closeCurrentSession(false);
|
||||
for(SessionListener listener : sessionListeners){
|
||||
listener.sessionAuthenticationCancel();
|
||||
}
|
||||
}else{
|
||||
logger.warning("Can only cancel a connected but not yet authenticated authentication. ignoring call");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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,15 +131,10 @@ 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")){
|
||||
List<StandardSSDPInfo> serverList = client.getSSDPHandler().requestService("coder:discover");
|
||||
for(StandardSSDPInfo server : serverList){
|
||||
addServerToList(server.getInetAddress().getHostAddress(), 1337);
|
||||
}
|
||||
}else{
|
||||
logger.severe("could not send a SSDP request since the client is not setup");
|
||||
}
|
||||
}
|
||||
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";
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package com.coder.client.project;
|
|||
|
||||
public interface ProjectListener {
|
||||
public void createNewProject();
|
||||
public void createNewProject(String name, String type, String description);
|
||||
public void selectProject();
|
||||
public void openProject(String projectName);
|
||||
public void openProjectFailed(String errorMsg);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ public class Session extends Thread {
|
|||
|
||||
}
|
||||
|
||||
protected static Session setupConnection(String url, int port){
|
||||
public static Session setupConnection(String url, int port){
|
||||
Session session = new Session();
|
||||
logger.fine("Setting up a TCP socket to " + url + ":" + port);
|
||||
try {
|
||||
|
|
@ -118,7 +118,7 @@ public class Session extends Thread {
|
|||
return authenticated;
|
||||
}
|
||||
|
||||
protected boolean authenticate(String username, char[] clearTextPassword) {
|
||||
public boolean authenticate(String username, char[] clearTextPassword) {
|
||||
logger.fine("Authenticating session");
|
||||
|
||||
if(socket == null){
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue