/* FilterMeanSemRelTrans.java - Words filter by a presence of meaning, * semantic relations, translations. * * Copyright (c) 2009-2011 Andrew Krizhanovsky <andrew.krizhanovsky at gmail.com> * Distributed under EPL/LGPL/GPL/AL/BSD multi-license. */ package wiwordik.search_window; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.scene.control.CheckBox; import javafx.scene.input.MouseEvent; import javafx.scene.control.Tooltip; import javafx.scene.layout.HBox; /** Words filter by a presence of meaning, semantic relations, translations, * etc. (CheckBoxes). */ public class FilterMeanSemRelTrans { /** Whether list only articles with definitions */ static boolean meaning_checkbox_value = false; /** Whether list only articles with semantic relations */ static boolean sem_rel_checkbox_value = false; WordList word_list; LangChoice lang_choice; QueryTextString query_text_string; public HBox filter_MRT_hbox = new HBox(); CheckBox meaning_checkbox = new CheckBox(); CheckBox sem_rel_checkbox = new CheckBox(); CheckBox translation_checkbox = new CheckBox(); /** Set parameters of the class. * @param _word_list list of words in the dictionary (ListView) * @param _lang_choice checkboxes and text field with language codes * @param _query_text_string field with a user search text query */ public void initialize( //_wikt_parsed_conn : Connect, WordList _word_list, LangChoice _lang_choice, QueryTextString _query_text_string ) { //wikt_parsed_conn = _wikt_parsed_conn; word_list = _word_list; lang_choice = _lang_choice; query_text_string = _query_text_string; // GUI meaning_checkbox.setText("Meaning"); Tooltip tp = new Tooltip(); tp.setText("List of words only with meanings (senses)"); meaning_checkbox.setTooltip(tp); sem_rel_checkbox.setText("Semantic Relation"); Tooltip tp2 = new Tooltip(); tp2.setText("List of words only with\n" + "Semantic relations\n" + "(synonyms, hypernyms, etc.)"); sem_rel_checkbox.setTooltip(tp2); translation_checkbox.setText("Translation"); Tooltip tp3 = new Tooltip(); tp3.setText("List of words only with translations (todo)"); translation_checkbox.setTooltip(tp3); translation_checkbox.setDisable(true); // todo then enable filter_MRT_hbox.setSpacing(10); filter_MRT_hbox.getChildren().addAll(meaning_checkbox); filter_MRT_hbox.getChildren().addAll(sem_rel_checkbox); filter_MRT_hbox.getChildren().addAll(translation_checkbox); // If user clicks CheckBox and select filtering words - only with meanings meaning_checkbox.selectedProperty().addListener(new ChangeListener<Boolean>() { public void changed(ObservableValue<? extends Boolean> ov, Boolean old_val, Boolean new_val) { boolean b_selected = meaning_checkbox.isSelected(); if (meaning_checkbox_value != b_selected) { meaning_checkbox_value = b_selected; updateWordList(); } } }); // If user clicks CheckBox and select filtering words - only with semantic relations sem_rel_checkbox.selectedProperty().addListener(new ChangeListener<Boolean>() { public void changed(ObservableValue<? extends Boolean> ov, Boolean old_val, Boolean new_val) { boolean b_selected = sem_rel_checkbox.isSelected(); if (sem_rel_checkbox_value != b_selected) { sem_rel_checkbox_value = b_selected; updateWordList(); } } }); } public void setWordList( WordList _word_list ) { word_list = _word_list; } /** Whether to filter words by a presence of word's definition. */ public Boolean filterByMeaning() { return meaning_checkbox_value; } /** Whether to filter words by a presence of semantic relations. */ public Boolean filterBySemanticRelation() { return sem_rel_checkbox_value; } /** Inteface to the real function updateWordList(). */ void updateWordList() { if(null == word_list) { System.err.println("Error: FilterMeanSemRelTrans.updateWordList(): word_list is empty, non-initialized"); return; } word_list.updateWordList( word_list.getSkipRedirects(), query_text_string.getWordValue() ); query_text_string.saveWordValue(); } }