/* WCLanguage.fx - A part of word card corresponds to a language part * of a page (entry) in Wiktionary. It contains POS's sub-parts. * * Copyright (c) 2009-2011 Andrew Krizhanovsky <andrew.krizhanovsky at gmail.com> * Distributed under EPL/LGPL/GPL/AL/BSD multi-license. */ package wiwordik.word_card; import wikokit.base.wikt.sql.TLangPOS; import wikokit.base.wikipedia.sql.Connect; import wikokit.base.wikipedia.language.LanguageType; import javafx.scene.text.Text; import javafx.scene.text.Font; import javafx.scene.layout.VBox; import java.lang.*; import java.util.ArrayList; import java.util.List; import javafx.scene.Scene; import javafx.scene.text.FontWeight; import wiwordik.WConstants; /** Language part of a Wiktionary page. It contains POS's sub-parts. * * @see wikt.word.WLanguage */ public class WCLanguage { /** Language of the word. */ public LanguageType lang; /** Parts of speech of current word. */ WCPOS[] pos; private final static WCPOS[] NULL_WCPOS_ARRAY = new WCPOS[0]; // todo: ToggleButton, ToggleGroup // experiments: toggle language buttons "ru", "en", "uk" Text text_lang; VBox pos_group = new VBox(); /* var pos_group : VBox = VBox { spacing: 20 //opacity: 0.5 //width: bind card_scene.width - 30 width: WConstants.wrapping_width - 30 };*/ VBox group = new VBox(); /*public var group: VBox = VBox { spacing: 5 content: [ Text { content: bind language_name_value // "I think it's a place for a language block. Yes?" font: Font { embolden: true size: 18 name:"Times New Roman" } underline: true //overline: true //textOrigin: TextOrigin.TOP //fill: Color.BLANCHEDALMOND } pos_group] };*/ /** Creates text with a name of language, e.g. "Russian", or "English". */ public void createTextLang(LanguageType _lang) { // "lang (code)" String language_name_value = _lang.getName(WConstants.native_lang) + " (" + _lang.getCode() + ")"; // System.out.println("WCLanguage.create(). language_name_value = {language_name_value}"); text_lang = new Text(language_name_value); text_lang.setFont(Font.font("Times New Roman", FontWeight.BOLD, 18)); text_lang.setUnderline(true); } /** Creates a language part of card (parts of wiki pages), * consists of several POS blocks. **/ public void create(Connect conn, Scene card_scene, //_tpage : TPage, LanguageType _lang, TLangPOS[] lang_pos_array ) { createTextLang(_lang); List<WCPOS> list_pos = new ArrayList<>(); for (TLangPOS _lang_pos : lang_pos_array) { if(_lang_pos.getLang().getLanguage() == _lang) { WCPOS _pos = new WCPOS(); _pos.create(conn, _lang_pos); list_pos.add(_pos); // logic: insert _pos into pos pos_group.getChildren().addAll(_pos.group); // visual } } pos = ((WCPOS[])list_pos.toArray(NULL_WCPOS_ARRAY)); // logic pos_group.setSpacing(20); // todo?: width: WConstants.wrapping_width - 30 group.setSpacing(5); group.getChildren().addAll(text_lang, pos_group); } }