package helpmaker;
import helpmaker.model.Link;
import helpmaker.model.XMLParameter;
import helpmaker.view.InsertLinkController;
import helpmaker.view.MainController;
import helpmaker.view.XMLNodeNewController;
import helpmaker.view.XMLParameterEditController;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.control.SplitPane;
import javafx.scene.image.Image;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Modality;
import javafx.stage.Stage;
import java.io.IOException;
public class Main extends Application {
private Stage primaryStage;
private SplitPane rootLayout;
@Override
public void start(Stage primaryStage) throws Exception{
this.primaryStage = primaryStage;
this.primaryStage.setTitle("HelpMaker");
this.primaryStage.getIcons().add(new Image("helpmaker/res/favicon.png"));
initRootLayout();
}
private void initRootLayout() {
try {
FXMLLoader loader = new FXMLLoader();
loader.setLocation(Main.class.getResource("view/main.fxml"));
rootLayout = loader.load();
MainController controller = loader.getController();
controller.setMainApp(this);
Scene scene = new Scene(rootLayout);
primaryStage.setScene(scene);
primaryStage.setOnCloseRequest(handle -> {
controller.btnSaveTreeClick();
controller.saveHTMLFile();
});
primaryStage.show();
controller.initializeAfterShow();
} catch (IOException e) {
e.printStackTrace();
}
}
public boolean showXMLParameterEditDialog(XMLParameter xmlParameter, String windowName, Image icon) {
try {
FXMLLoader loader = new FXMLLoader();
loader.setLocation(Main.class.getResource("view/XMLParameterEdit.fxml"));
AnchorPane panel = loader.load();
Stage dialogStage = new Stage();
dialogStage.setTitle(windowName);
dialogStage.getIcons().add(icon);
dialogStage.initModality(Modality.WINDOW_MODAL);
dialogStage.initOwner(primaryStage);
dialogStage.setResizable(false);
Scene scene = new Scene(panel);
dialogStage.setScene(scene);
XMLParameterEditController controller = loader.getController();
controller.setDialogStage(dialogStage);
controller.setXmlParameter(xmlParameter);
dialogStage.showAndWait();
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
public String showXMLNodeNewDialog() {
try {
FXMLLoader loader = new FXMLLoader();
loader.setLocation(Main.class.getResource("view/XMLNodeNew.fxml"));
AnchorPane panel = loader.load();
Stage dialogStage = new Stage();
dialogStage.setTitle("Add document");
dialogStage.initModality(Modality.WINDOW_MODAL);
dialogStage.initOwner(primaryStage);
dialogStage.setResizable(false);
Scene scene = new Scene(panel);
dialogStage.setScene(scene);
XMLNodeNewController controller = loader.getController();
controller.setDialogStage(dialogStage);
dialogStage.showAndWait();
return controller.getCaption();
} catch (IOException e) {
e.printStackTrace();
return "";
}
}
public Link showInsertLinkDialog(String caption) {
try {
FXMLLoader loader = new FXMLLoader();
loader.setLocation(Main.class.getResource("view/InsertLink.fxml"));
AnchorPane panel = loader.load();
Stage dialogStage = new Stage();
dialogStage.setTitle("Insert Link");
dialogStage.initModality(Modality.WINDOW_MODAL);
dialogStage.initOwner(primaryStage);
dialogStage.setResizable(false);
Scene scene = new Scene(panel);
dialogStage.setScene(scene);
Link link = new Link(caption);
InsertLinkController controller = loader.getController();
controller.setDialogStage(dialogStage);
controller.setLink(link);
dialogStage.showAndWait();
return controller.getLink();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
launch(args);
}
}