diff --git a/src/main/java/gui/AboutTab.java b/src/main/java/gui/AboutTab.java new file mode 100755 index 0000000..0a05c0f --- /dev/null +++ b/src/main/java/gui/AboutTab.java @@ -0,0 +1,119 @@ +package gui; + +import alg.XML_processing; +import data.*; +import javafx.application.HostServices; +import javafx.beans.InvalidationListener; +import javafx.beans.Observable; +import javafx.beans.binding.StringBinding; +import javafx.beans.property.ReadOnlyDoubleWrapper; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.ListChangeListener; +import javafx.collections.ObservableList; +import javafx.concurrent.Task; +import javafx.fxml.FXML; +import javafx.scene.control.*; +import javafx.scene.image.ImageView; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.Pane; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.controlsfx.control.CheckComboBox; + +import java.io.File; +import java.io.UnsupportedEncodingException; +import java.util.*; +import java.util.regex.Pattern; + +import static gui.GUIController.showAlert; + +@SuppressWarnings("Duplicates") +public class AboutTab { + public final static Logger logger = LogManager.getLogger(AboutTab.class); + + private HostServices hostService; + + @FXML + public AnchorPane aboutTabPane; + + @FXML + public Pane paneSlo; + + @FXML + public Pane paneEng; + + @FXML + public Label aboutL; + + @FXML + private Hyperlink cjvtSH; + + @FXML + private Hyperlink githubSH; + + @FXML + private Hyperlink cjvtEH; + + @FXML + private Hyperlink githubEH; + + @FXML + private Button changeLanguageB; + + @FXML + public ImageView stringLengthI; + + // TODO: pass observables for taxonomy based on header scan + // after header scan + + public void initialize() { + aboutTabPane.getStylesheets().add("style.css"); + aboutTabPane.getStyleClass().add("root"); + + Messages.setPane(paneSlo, paneEng); + + manageTranslations(); + + changeLanguageB.setOnAction(e -> { + if (I18N.getLocale() == new Locale.Builder().setLanguage("sl").setRegion("SI").build()){ + I18N.setLocale(Locale.ENGLISH); + } else { + I18N.setLocale(new Locale.Builder().setLanguage("sl").setRegion("SI").build()); + } + Messages.reload(); + Messages.updateChooseCorpusL(); + logger.info("change language"); + }); + + cjvtSH.setOnAction(e -> openCjvtWebsite()); + + githubSH.setOnAction(e -> openGithubWebsite()); + + cjvtEH.setOnAction(e -> openCjvtWebsite()); + + githubEH.setOnAction(e -> openGithubWebsite()); + } + + private void manageTranslations(){ + changeLanguageB.textProperty().bind(I18N.createStringBinding("button.language")); + aboutL.textProperty().bind(I18N.createStringBinding("about.text")); +// calculateForL.textProperty().bind(I18N.createStringBinding("label.calculateFor")); +// displayTaxonomyL.textProperty().bind(I18N.createStringBinding("label.displayTaxonomy")); +// +// addTooltipToImage(stringLengthI, I18N.createStringBinding("label.letter.stringLengthH")); + } + + private void openCjvtWebsite(){ + hostService.showDocument(Messages.CJVT_URL); + } + + private void openGithubWebsite(){ + hostService.showDocument(Messages.GITHUB_URL); + } + + public void setHostServices(HostServices hostServices){ + this.hostService = hostServices; + } +} diff --git a/src/main/java/gui/CharacterAnalysisTab.java b/src/main/java/gui/CharacterAnalysisTab.java index cef396e..378f8cf 100755 --- a/src/main/java/gui/CharacterAnalysisTab.java +++ b/src/main/java/gui/CharacterAnalysisTab.java @@ -148,8 +148,8 @@ public class CharacterAnalysisTab { @FXML public Label progressLabel; - @FXML - private Hyperlink helpH; +// @FXML +// private Hyperlink helpH; private enum MODE { LETTER @@ -429,7 +429,7 @@ public class CharacterAnalysisTab { }); - helpH.setOnAction(e -> openHelpWebsite()); +// helpH.setOnAction(e -> openHelpWebsite()); cancel.setVisible(false); } @@ -441,7 +441,7 @@ public class CharacterAnalysisTab { } private void manageTranslations(){ - helpH.textProperty().bind(I18N.createStringBinding("hyperlink.help")); +// helpH.textProperty().bind(I18N.createStringBinding("hyperlink.help")); changeLanguageB.textProperty().bind(I18N.createStringBinding("button.language")); computeNgramsB.textProperty().bind(I18N.createStringBinding("button.computeNgrams")); cancel.textProperty().bind(I18N.createStringBinding("button.cancel")); diff --git a/src/main/java/gui/CorpusTab.java b/src/main/java/gui/CorpusTab.java index 08535b9..c8b85cb 100755 --- a/src/main/java/gui/CorpusTab.java +++ b/src/main/java/gui/CorpusTab.java @@ -122,13 +122,14 @@ public class CorpusTab { private ProgressIndicator locationScanPI; @FXML - private Hyperlink helpH; +// private Hyperlink helpH; // *** shared *** private Corpus corpus; private CorpusType corpusType; // tabs - used to enable/disable + private Tab aboutTab; private Tab stringLevelTabNew2; private Tab oneWordAnalysisTab; private Tab characterLevelTab; @@ -138,6 +139,7 @@ public class CorpusTab { private TabPane tabPane; private StringAnalysisTabNew2 satNew2Controller; private OneWordAnalysisTab oneWordTabController; + private AboutTab aboutTabController; private CharacterAnalysisTab catController; private FiltersForSolar ffsController; // private WordFormationTab wfController; @@ -239,7 +241,7 @@ public class CorpusTab { // add listeners chooseCorpusLocationB.setOnAction(e -> chooseCorpusLocation()); - helpH.setOnAction(e -> openHelpWebsite()); +// helpH.setOnAction(e -> openHelpWebsite()); readHeaderInfoChB.selectedProperty().addListener((observable, oldValue, newValue) -> { readHeaderInfo = newValue; @@ -279,7 +281,7 @@ public class CorpusTab { readHeaderInfoChB.textProperty().bind(I18N.createStringBinding("checkBox.readHeaderInfo")); chooseResultsLocationB.textProperty().bind(I18N.createStringBinding("button.chooseResultsLocation")); chooseResultsLocationL.textProperty().bind(I18N.createStringBinding("label.chooseResultsLocation")); - helpH.textProperty().bind(I18N.createStringBinding("hyperlink.help")); +// helpH.textProperty().bind(I18N.createStringBinding("hyperlink.help")); changeLanguageB.textProperty().bind(I18N.createStringBinding("button.language")); chooseCorpusL.textProperty().bind(I18N.createStringBinding("message.LABEL_CORPUS_LOCATION_NOT_SET")); chooseResultsL.textProperty().bind(I18N.createStringBinding("message.LABEL_RESULTS_LOCATION_NOT_SET")); @@ -531,6 +533,7 @@ public class CorpusTab { if (ValidationUtil.isEmpty(readTaxonomy)) { // if no taxonomy found alert the user and keep other tabs disabled +// aboutTab.setDisable(true); stringLevelTabNew2.setDisable(true); oneWordAnalysisTab.setDisable(true); characterLevelTab.setDisable(true); @@ -693,6 +696,8 @@ public class CorpusTab { private void setCorpusForAnalysis() { if (corpus.validate()) { // new statistic, enable tabs... +// aboutTab.setDisable(false); +// aboutTabController.init(); stringLevelTabNew2.setDisable(false); satNew2Controller.setCorpus(corpus); satNew2Controller.init(); @@ -814,6 +819,8 @@ public class CorpusTab { this.corpus = corpus; } + public void setAboutTab(Tab aboutTab) { this.aboutTab = aboutTab; } + public void setStringLevelTabNew2(Tab stringLevelTabNew2) { this.stringLevelTabNew2 = stringLevelTabNew2; } public void setOneWordAnalysisTab(Tab oneWordAnalysisTab) { this.oneWordAnalysisTab = oneWordAnalysisTab; } @@ -849,4 +856,8 @@ public class CorpusTab { public void setHostServices(HostServices hostServices){ this.hostService = hostServices; } + + public void setAboutTabController(AboutTab aboutTabController) { + this.aboutTabController = aboutTabController; + } } diff --git a/src/main/java/gui/FiltersForSolar.java b/src/main/java/gui/FiltersForSolar.java index 217d108..d18af6f 100755 --- a/src/main/java/gui/FiltersForSolar.java +++ b/src/main/java/gui/FiltersForSolar.java @@ -55,8 +55,8 @@ public class FiltersForSolar { public TextArea selectedFiltersTextArea; @FXML private Button changeLanguageB; - @FXML - private Hyperlink helpH; +// @FXML +// private Hyperlink helpH; private Corpus corpus; @@ -115,11 +115,11 @@ public class FiltersForSolar { logger.info("change language"); }); - helpH.setOnAction(e -> openHelpWebsite()); +// helpH.setOnAction(e -> openHelpWebsite()); } private void manageTranslations() { - helpH.textProperty().bind(I18N.createStringBinding("hyperlink.help")); +// helpH.textProperty().bind(I18N.createStringBinding("hyperlink.help")); changeLanguageB.textProperty().bind(I18N.createStringBinding("button.language")); solarRegijaL.textProperty().bind(I18N.createStringBinding("filter.solarRegijaL")); diff --git a/src/main/java/gui/GUIController.java b/src/main/java/gui/GUIController.java index 7522004..17fb0fa 100755 --- a/src/main/java/gui/GUIController.java +++ b/src/main/java/gui/GUIController.java @@ -26,6 +26,8 @@ public class GUIController extends Application { @FXML public AnchorPane gui; @FXML + public Tab AboutTab; + @FXML public Tab StringLevelTabNew2; @FXML public Tab OneWordAnalysisTab; @@ -45,6 +47,8 @@ public class GUIController extends Application { @FXML private OneWordAnalysisTab oneWordTabController; @FXML + private AboutTab aboutTabController; + @FXML private static Parent oneWordTab; @FXML private CorpusTab ctController; @@ -87,11 +91,13 @@ public class GUIController extends Application { ctController.setCorpus(corpus); ctController.setFilterTab(filterTab); + ctController.setAboutTab(AboutTab); ctController.setStringLevelTabNew2(StringLevelTabNew2); ctController.setOneWordAnalysisTab(OneWordAnalysisTab); ctController.setCharacterLevelTab(CharacterLevelTabNew); ctController.setSatNew2Controller(satNew2Controller); ctController.setOneWordTabController(oneWordTabController); + ctController.setAboutTabController(aboutTabController); ctController.setCatController(catController); ctController.setWlController(wlController); ctController.setTabPane(tabPane); @@ -104,6 +110,7 @@ public class GUIController extends Application { satNew2Controller.setHostServices(getHostServices()); oneWordTabController.setCorpus(corpus); oneWordTabController.setHostServices(getHostServices()); + aboutTabController.setHostServices(getHostServices()); catController.setCorpus(corpus); catController.setHostServices(getHostServices()); wlController.setCorpus(corpus); @@ -129,6 +136,7 @@ public class GUIController extends Application { wordLevelTab.textProperty().bind(I18N.createStringBinding("tab.wordLevelTab")); OneWordAnalysisTab.textProperty().bind(I18N.createStringBinding("tab.oneWordAnalysisTab")); StringLevelTabNew2.textProperty().bind(I18N.createStringBinding("tab.stringLevelTabNew2")); + AboutTab.textProperty().bind(I18N.createStringBinding("tab.aboutTab")); } static void showAlert(Alert.AlertType alertType, String headerText, String contentText) { diff --git a/src/main/java/gui/Messages.java b/src/main/java/gui/Messages.java index 06b0254..c75a949 100755 --- a/src/main/java/gui/Messages.java +++ b/src/main/java/gui/Messages.java @@ -3,9 +3,11 @@ package gui; import static javafx.scene.control.Alert.AlertType.*; import java.util.HashMap; +import java.util.Locale; import javafx.scene.control.Alert; import javafx.scene.control.Label; +import javafx.scene.layout.Pane; public class Messages { @@ -37,8 +39,13 @@ public class Messages { private static String chooseCorpusLabelContent; private static String[] chooseCorpusLabelProperties; + private static Pane paneSlo; + private static Pane paneEng; + // Not properly to be here. TODO move somewhere else in future public static String HELP_URL = "http://slovnica.ijs.si/"; + public static String CJVT_URL = "http://hdl.handle.net/11356/1227"; + public static String GITHUB_URL = "https://gitea.cjvt.si/lkrsnik/korpeks"; // helper maps /** @@ -62,6 +69,19 @@ public class Messages { windowTitles.put(ERROR, I18N.get("windowTitles.error")); windowTitles.put(WARNING, I18N.get("windowTitles.warning")); windowTitles.put(CONFIRMATION, I18N.get("windowTitles.confirmation")); + + if(I18N.getLocale().equals(Locale.ENGLISH)){ + paneSlo.setVisible(false); + paneEng.setVisible(true); + } else { + paneSlo.setVisible(true); + paneEng.setVisible(false); + } + } + + public static void setPane(Pane paneSl, Pane paneEn){ + paneSlo = paneSl; + paneEng = paneEn; } public static void setChooseCorpusL(Label chooseCorpus, String chooseCorpusLabel){ diff --git a/src/main/java/gui/OneWordAnalysisTab.java b/src/main/java/gui/OneWordAnalysisTab.java index b69af79..c207790 100755 --- a/src/main/java/gui/OneWordAnalysisTab.java +++ b/src/main/java/gui/OneWordAnalysisTab.java @@ -166,9 +166,9 @@ public class OneWordAnalysisTab { public ProgressBar ngramProgressBar; @FXML public Label progressLabel; - - @FXML - private Hyperlink helpH; +// +// @FXML +// private Hyperlink helpH; private enum MODE { LETTER, @@ -609,7 +609,7 @@ public class OneWordAnalysisTab { compute(); logger.info("compute button"); }); - helpH.setOnAction(e -> openHelpWebsite()); +// helpH.setOnAction(e -> openHelpWebsite()); cancel.setVisible(false); } @@ -621,7 +621,7 @@ public class OneWordAnalysisTab { } private void manageTranslations(){ - helpH.textProperty().bind(I18N.createStringBinding("hyperlink.help")); +// helpH.textProperty().bind(I18N.createStringBinding("hyperlink.help")); changeLanguageB.textProperty().bind(I18N.createStringBinding("button.language")); computeNgramsB.textProperty().bind(I18N.createStringBinding("button.computeNgrams")); cancel.textProperty().bind(I18N.createStringBinding("button.cancel")); diff --git a/src/main/java/gui/StringAnalysisTabNew2.java b/src/main/java/gui/StringAnalysisTabNew2.java index fafec53..723c5df 100755 --- a/src/main/java/gui/StringAnalysisTabNew2.java +++ b/src/main/java/gui/StringAnalysisTabNew2.java @@ -194,9 +194,9 @@ public class StringAnalysisTabNew2 { public ProgressBar ngramProgressBar; @FXML public Label progressLabel; - - @FXML - private Hyperlink helpH; +// +// @FXML +// private Hyperlink helpH; private enum MODE { LETTER, @@ -684,7 +684,7 @@ public class StringAnalysisTabNew2 { logger.info("compute button"); }); - helpH.setOnAction(e -> openHelpWebsite()); +// helpH.setOnAction(e -> openHelpWebsite()); cancel.setVisible(false); } @@ -696,7 +696,7 @@ public class StringAnalysisTabNew2 { } private void manageTranslations(){ - helpH.textProperty().bind(I18N.createStringBinding("hyperlink.help")); +// helpH.textProperty().bind(I18N.createStringBinding("hyperlink.help")); changeLanguageB.textProperty().bind(I18N.createStringBinding("button.language")); computeNgramsB.textProperty().bind(I18N.createStringBinding("button.computeNgrams")); cancel.textProperty().bind(I18N.createStringBinding("button.cancel")); diff --git a/src/main/java/gui/WordLevelTab.java b/src/main/java/gui/WordLevelTab.java index d4a5df2..b81cb54 100755 --- a/src/main/java/gui/WordLevelTab.java +++ b/src/main/java/gui/WordLevelTab.java @@ -193,8 +193,8 @@ public class WordLevelTab { @FXML public Label progressLabel; - @FXML - private Hyperlink helpH; +// @FXML +// private Hyperlink helpH; private enum MODE { LETTER, @@ -706,7 +706,7 @@ public class WordLevelTab { compute(); logger.info("compute button"); }); - helpH.setOnAction(e -> openHelpWebsite()); +// helpH.setOnAction(e -> openHelpWebsite()); cancel.setVisible(false); } @@ -718,7 +718,7 @@ public class WordLevelTab { } private void manageTranslations(){ - helpH.textProperty().bind(I18N.createStringBinding("hyperlink.help")); +// helpH.textProperty().bind(I18N.createStringBinding("hyperlink.help")); changeLanguageB.textProperty().bind(I18N.createStringBinding("button.language")); computeNgramsB.textProperty().bind(I18N.createStringBinding("button.computeNgrams")); cancel.textProperty().bind(I18N.createStringBinding("button.cancel")); diff --git a/src/main/resources/CJVT_CGP_Osnovni_znak+Pripis_naziva_ENG.png b/src/main/resources/CJVT_CGP_Osnovni_znak+Pripis_naziva_ENG.png new file mode 100644 index 0000000..36f0431 Binary files /dev/null and b/src/main/resources/CJVT_CGP_Osnovni_znak+Pripis_naziva_ENG.png differ diff --git a/src/main/resources/CJVT_CGP_Osnovni_znak+Pripis_naziva_SLO.png b/src/main/resources/CJVT_CGP_Osnovni_znak+Pripis_naziva_SLO.png new file mode 100644 index 0000000..c331b7a Binary files /dev/null and b/src/main/resources/CJVT_CGP_Osnovni_znak+Pripis_naziva_SLO.png differ diff --git a/src/main/resources/GUI.fxml b/src/main/resources/GUI.fxml index a3dc6bb..65b861f 100755 --- a/src/main/resources/GUI.fxml +++ b/src/main/resources/GUI.fxml @@ -31,6 +31,9 @@ + + + diff --git a/src/main/resources/gui/AboutTab.fxml b/src/main/resources/gui/AboutTab.fxml new file mode 100755 index 0000000..bdef736 --- /dev/null +++ b/src/main/resources/gui/AboutTab.fxml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + +