Archived
0
This repository has been archived on 2022-07-30. You can view files and clone it, but cannot push or open issues or pull requests.
Files
trader/client/src/main/java/ru/trader/Main.java
2015-02-21 16:13:40 +03:00

113 lines
4.0 KiB
Java

package ru.trader;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;
import org.apache.log4j.PropertyConfigurator;
import org.controlsfx.control.action.Action;
import org.controlsfx.dialog.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.trader.controllers.Screeners;
import ru.trader.view.support.Localization;
import javax.xml.stream.XMLStreamException;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Locale;
public class Main extends Application {
private final static Logger LOG = LoggerFactory.getLogger(Main.class);
public static Settings SETTINGS = new Settings();
private static Stage primaryStage;
@Override
public void start(Stage primaryStage) throws Exception {
SETTINGS = new Settings(new File("profile.properties"));
SETTINGS.load();
Locale locale = SETTINGS.getLocale();
if (locale != null){
Localization.setLocale(locale);
}
Main.primaryStage = primaryStage;
loadMainScene();
loadResources();
EMDNUpdater.init();
primaryStage.show();
}
@Override
public void stop() throws Exception {
super.stop();
}
public static void main(String[] args) {
PropertyConfigurator.configure("log4j.properties");
Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
System.err.print("Exception in thread \"" + t.getName() + "\" ");
e.printStackTrace(System.err);
LOG.error("", e);
Screeners.showException(e);
});
launch(args);
}
public static void changeLocale(Locale locale) throws IOException {
Localization.setLocale(locale);
primaryStage.hide();
loadMainScene();
loadResources();
primaryStage.show();
}
private static void loadMainScene() throws IOException {
primaryStage.setTitle(Localization.getString("main.title"));
primaryStage.setMinHeight(590);
primaryStage.setScene(new Scene(Screeners.newScreeners(Main.class.getResource("/view/main.fxml"),getUrl("style.css").toExternalForm())));
primaryStage.setOnCloseRequest((we)->{
try {
if (World.getMarket().isChange()){
Action res = Screeners.showConfirm(Localization.getString("dialog.confirm.save"));
if (res == Dialog.ACTION_YES) World.save();
else if (res == Dialog.ACTION_CANCEL) we.consume();
}
EMDNUpdater.shutdown();
SETTINGS.save();
Screeners.closeAll();
} catch (FileNotFoundException | UnsupportedEncodingException | XMLStreamException e) {
LOG.error("Error on save world",e);
Screeners.showException(e);
}
});
}
private static void loadResources() throws IOException {
Screeners.loadItemDescStage(getUrl(("itemDesc.fxml")));
Screeners.loadVEditorStage(getUrl(("vEditor.fxml")));
Screeners.loadAddOfferStage(getUrl(("oEditor.fxml")));
Screeners.loadOrdersStage(getUrl(("orders.fxml")));
Screeners.loadTopOrdersStage(getUrl(("topOrders.fxml")));
Screeners.loadPathsStage(getUrl(("paths.fxml")));
Screeners.loadSettingsStage(getUrl(("settings.fxml")));
Screeners.loadSEditorStage(getUrl(("sEditor.fxml")));
Screeners.loadFilterStage(getUrl(("filter.fxml")));
Screeners.loadItemAddStage(getUrl("itemAdd.fxml"));
Screeners.loadGroupAddStage(getUrl("groupAdd.fxml"));
}
private static URL getUrl(String filename) throws MalformedURLException {
File file = new File("conf"+File.separator+filename);
if (file.exists()) return file.toURI().toURL();
return Main.class.getResource("/view/"+filename);
}
}