using listeners instead of a main thread for main logic
This commit is contained in:
parent
3177714fc5
commit
3634a61ee5
11 changed files with 229 additions and 47 deletions
|
|
@ -11,22 +11,18 @@ import com.coder.client.Session;
|
|||
import com.coder.client.gui.editor.EditorWindow;
|
||||
import com.coder.client.gui.editor.EditorWindowListener;
|
||||
import com.coder.client.gui.login.LoginDialog;
|
||||
import com.coder.client.gui.login.LoginDialogAction;
|
||||
import com.coder.client.gui.project.SelectProjectDialog;
|
||||
import com.coder.client.gui.project.SelectProjectDialogListener;
|
||||
import com.coder.client.gui.login.LoginDialogListener;
|
||||
import com.coder.client.gui.selectProject.SelectProjectDialog;
|
||||
import com.coder.client.gui.selectProject.SelectProjectDialogListener;
|
||||
import com.coder.client.gui.selectServer.SelectServerDialog;
|
||||
import com.coder.client.gui.selectServer.SelectServerDialogListener;
|
||||
import com.coder.server.CoderServer;
|
||||
import com.coder.server.message.CoderMessage;
|
||||
import com.coder.server.message.ConfigData;
|
||||
import com.coder.server.message.ProjectListData;
|
||||
import com.coder.server.message.ProjectListReqMsg;
|
||||
import com.coder.server.message.ProjectRspMsg;
|
||||
|
||||
import zutil.log.CompactLogFormatter;
|
||||
import zutil.log.LogUtil;
|
||||
import javafx.application.Application;
|
||||
import javafx.fxml.FXMLLoader;
|
||||
import javafx.scene.Parent;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.stage.Stage;
|
||||
|
||||
public class CoderClient extends Application{
|
||||
|
|
@ -34,14 +30,17 @@ public class CoderClient extends Application{
|
|||
private int port = CoderServer.SERVER_PORT;
|
||||
private static final int DEFAULT_CONNECTION_RETRIES = 5;
|
||||
private Session session;
|
||||
private String url;
|
||||
private Stage mainStage;
|
||||
private int connectionRetriesLimit = DEFAULT_CONNECTION_RETRIES; //if zero, try forever
|
||||
|
||||
private String url;
|
||||
private String username = null;
|
||||
private char[] password = null;
|
||||
private int connectionRetriesLimit = DEFAULT_CONNECTION_RETRIES; //if zero, try forever
|
||||
|
||||
private EditorWindow editorWindow;
|
||||
private LoginDialog loginDialog;
|
||||
private SelectProjectDialog selectProjectDialog;
|
||||
private SelectServerDialog selectServerDialog;
|
||||
|
||||
public static void main(String[] args) {
|
||||
Application.launch(args);
|
||||
|
|
@ -56,6 +55,7 @@ public class CoderClient extends Application{
|
|||
|
||||
//parse program arguments
|
||||
Map<String, String> params = this.getParameters().getNamed();
|
||||
String url = null;
|
||||
String username = null;
|
||||
char[] password = null;
|
||||
boolean reconnectForever = false;
|
||||
|
|
@ -67,11 +67,15 @@ public class CoderClient extends Application{
|
|||
password = value.toCharArray();
|
||||
}else if(key.equals("retry-connect-forever")){
|
||||
reconnectForever = true;
|
||||
}else if(key.equals("url")){
|
||||
url = value;
|
||||
}
|
||||
}
|
||||
|
||||
//create a client instance
|
||||
this.url = "127.0.0.1";
|
||||
if(url != null){
|
||||
this.url = url;
|
||||
}
|
||||
if(username != null){
|
||||
this.username = username;
|
||||
if(password != null){
|
||||
|
|
@ -88,16 +92,69 @@ public class CoderClient extends Application{
|
|||
this.editorWindow = new EditorWindow();
|
||||
this.loginDialog = new LoginDialog();
|
||||
this.selectProjectDialog = new SelectProjectDialog();
|
||||
this.selectServerDialog = new SelectServerDialog();
|
||||
|
||||
//register listeners
|
||||
registerListeners();
|
||||
|
||||
//start program logic
|
||||
run();
|
||||
selectServerDialog.showOnStage(mainStage);
|
||||
|
||||
//run();
|
||||
}
|
||||
|
||||
private void registerListeners() {
|
||||
|
||||
this.selectServerDialog.addSelectProjectDialogListener(new SelectServerDialogListener() {
|
||||
@Override
|
||||
public void willShow() {
|
||||
selectServerDialog.setURL(url);
|
||||
}
|
||||
@Override
|
||||
public void cancel() {
|
||||
//TODO
|
||||
}
|
||||
@Override
|
||||
public void connect(String serverUrl) {
|
||||
//selectServerDialog.hide();
|
||||
url = serverUrl;
|
||||
//connect session
|
||||
session = Session.setupConnection(url, port);
|
||||
if(session == null){
|
||||
logger.warning("Could not setup a connection to " + url + ":" + port);
|
||||
url = null;
|
||||
selectServerDialog.showOnStage(mainStage);
|
||||
}
|
||||
loginDialog.showOnStage(mainStage);
|
||||
}
|
||||
});
|
||||
|
||||
this.loginDialog.addLoginDialogListener(new LoginDialogListener(){
|
||||
@Override
|
||||
public void willShow() {
|
||||
loginDialog.setUsername(username);
|
||||
loginDialog.setPassword(password);
|
||||
}
|
||||
@Override
|
||||
public void cancel() {
|
||||
//TODO
|
||||
}
|
||||
@Override
|
||||
public void login(String uname, char[] paswd) {
|
||||
username = uname;
|
||||
password = paswd;
|
||||
//authenticate session
|
||||
boolean authenticated = session.authenticate(username, password);
|
||||
if(!authenticated){
|
||||
JOptionPane.showMessageDialog(null, "Wrong username or password", "Authentication Failed", JOptionPane.INFORMATION_MESSAGE);
|
||||
logger.severe("Authentication failed: wrong username or password");
|
||||
password = null;
|
||||
loginDialog.showOnStage(mainStage);
|
||||
}
|
||||
selectProjectDialog.showOnStage(mainStage);
|
||||
}
|
||||
});
|
||||
|
||||
this.selectProjectDialog.addSelectProjectDialogListener(new SelectProjectDialogListener() {
|
||||
@Override
|
||||
public void willShow() {
|
||||
|
|
@ -116,17 +173,15 @@ public class CoderClient extends Application{
|
|||
}
|
||||
@Override
|
||||
public void openProject(String selectedProjectName) {
|
||||
selectProjectDialog.close();
|
||||
editorWindow.showOnStage(mainStage);
|
||||
}
|
||||
@Override
|
||||
public void newProject() {
|
||||
selectProjectDialog.close();
|
||||
//TODO
|
||||
}
|
||||
@Override
|
||||
public void cancel() {
|
||||
selectProjectDialog.close();
|
||||
//TODO
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -142,7 +197,7 @@ public class CoderClient extends Application{
|
|||
session = null;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
public void run(){
|
||||
//keep track of the number of connection retries to the server
|
||||
int connectionRetries = 0;
|
||||
|
|
@ -242,5 +297,6 @@ public class CoderClient extends Application{
|
|||
// this.projectEditorWindow.dispose();
|
||||
System.exit(0);
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue