coder-client/src/com/coder/client/CoderClient.java

136 lines
3.7 KiB
Java
Raw Normal View History

2015-10-09 13:37:45 +00:00
package com.coder.client;
import java.io.IOException;
import java.util.Map;
2015-10-09 13:37:45 +00:00
import java.util.logging.Level;
import java.util.logging.Logger;
import com.coder.client.gui.GuiWindow;
2015-10-20 14:26:58 +00:00
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;
2015-10-09 13:37:45 +00:00
import zutil.log.CompactLogFormatter;
2015-10-09 13:37:45 +00:00
import zutil.log.LogUtil;
2015-10-20 14:26:58 +00:00
import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
2015-10-20 14:26:58 +00:00
import javafx.stage.Stage;
2015-10-09 13:37:45 +00:00
2015-10-20 14:26:58 +00:00
public class CoderClient extends Application{
2015-10-09 13:37:45 +00:00
public static final Logger logger = LogUtil.getLogger();
private SessionHandler sessionHandler;
private ProjectHandler projectHandler;
private SSDPHandler ssdpHandler;
//GUI elements
private Stage mainStage;
2015-10-20 14:26:58 +00:00
private EditorWindow editorWindow;
private LoginDialog loginDialog;
private SelectProjectDialog selectProjectDialog;
private SelectServerDialog selectServerDialog;
private NewProjectDialog newProjectDialog;
2015-10-20 14:26:58 +00:00
public static void main(String[] args) {
Application.launch(args);
}
2015-10-20 14:26:58 +00:00
@Override
public void start(final Stage mainStage) throws Exception {
2015-10-20 14:26:58 +00:00
//setup logging
2015-10-28 12:56:22 +01:00
CompactLogFormatter formatter = new CompactLogFormatter();
2015-10-29 12:52:11 +01:00
LogUtil.setLevel("com.coder", Level.FINEST);
2015-10-28 12:56:22 +01:00
LogUtil.setFormatter("com.coder", formatter);
2015-10-29 12:52:11 +01:00
LogUtil.setLevel("zutil", Level.FINEST);
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);
this.loginDialog = new LoginDialog(this);
this.selectProjectDialog = new SelectProjectDialog(this);
this.newProjectDialog = new NewProjectDialog(this);
this.editorWindow = new EditorWindow(this);
}catch(IOException e){
logger.log(Level.SEVERE, "could not load all GUI elements", e);
exit();
}
2015-10-20 14:26:58 +00:00
//parse program arguments
Map<String, String> params = this.getParameters().getNamed();
for(String key : params.keySet()){
String value = params.get(key);
if(key.equals("username")){
loginDialog.setUsername(value);
}else if(key.equals("url")){
selectServerDialog.setServerAddress(value);
}else if(key.equals("port")){
try{
selectServerDialog.setServerPort(Integer.parseInt(value));
}catch(NumberFormatException e){
logger.warning("port argument to program is not of a integer type");
selectServerDialog.setServerPort(-1);
}
}else if(key.equals("project")){
projectHandler.setProject(value);
2015-10-20 14:26:58 +00:00
}
}
//start program logic
selectServerDialog.setServerPort(-1);
showOnStage(selectServerDialog);
2015-10-20 14:26:58 +00:00
}
public void showOnStage(final GuiWindow gui){
Platform.runLater(new Runnable(){
@Override
public void run() {
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());
}
});
}
public void exit() {
logger.info("terminating");
Platform.exit();
System.exit(0);
}
public SessionHandler getSessionHandler() {
return this.sessionHandler;
}
public ProjectHandler getProjectHandler(){
return this.projectHandler;
2015-10-20 14:26:58 +00:00
}
public SSDPHandler getSSDPHandler(){
return this.ssdpHandler;
}
2015-10-09 13:37:45 +00:00
}