/* WCRelation.java - A part of word card corresponds to a semantic relations part
* of a page (entry) in Wiktionary.
*
* 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.TMeaning;
import wikokit.base.wikt.sql.TRelation;
import wikokit.base.wikipedia.sql.Connect;
import wikokit.base.wikt.constant.Relation;
import javafx.scene.text.Text;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import java.lang.*;
import wiwordik.WConstants;
/** Semantic relations consists of word's synonyms, antonyms, etc..
*
* @see wikt.api.WTRelation and wikt.sql.TRelation
*/
public class WCRelation {
/** Syn, Ant, etc. */
String relation_type;
/** List of synonyms, or antonyms, etc. */
String relation_words;
HBox group = new HBox();
// "synonyms: synonym_word1, word2, word3"
Text text_relation_type, text_column, text_relation_words;
/* todo
public var group: HBox = HBox {
spacing: 0
content: [
Text {
content: bind relation_type
//wrappingWidth: 380
//font: Font { size: 14 }
fill: Color.GRAY
underline: true
}
Text {
content: ": "
fill: Color.GRAY
}
Text {
content: bind relation_words
//wrappingWidth: 380
//font: Font { size: 14 }
//fill: Color.GRAY
wrappingWidth: 300
}
]
};
*/
/** Creates text field with a list of synonyms (another text field with antonyms, etc.).
*/
public void createRelationText(String _relation_type, String _relation_words) {
text_relation_type = new Text(_relation_type);
text_relation_type.setUnderline(true);
text_relation_type.setFill(Color.GREY);
text_column = new Text(": ");
text_column.setFill(Color.GREY);
text_relation_words = new Text(relation_words);
text_relation_words.setWrappingWidth(WConstants.wordcard_width - 80);
}
/** Creates a part of card (parts of wiki pages) with semantic relations.
*
* _max_meaning_number total number of different meanings for the current
* POS-language sub-entry
*
* @return true if there are any synonyms, antonyms, etc. in this relation block.
**/
public boolean create ( Connect conn,
Relation _relation_type,
TMeaning _tmeaning
) {
TRelation[] rels = TRelation.get(conn, _tmeaning);
StringBuilder list = new StringBuilder();
for(TRelation r : rels) {
if(r.getRelationType() == _relation_type) {
list.append(r.getWikiText().getText());
list.append(", ");
}
}
int len = list.length(); // at least one relation exists.
if(len > 0) {
relation_type = _relation_type.toString();
relation_words = list.substring(0, len - 2);
createRelationText(relation_type, relation_words);
// HBox [text_relation_type, text_column, text_relation_words]
group.setSpacing(0);
group.getChildren().addAll(text_relation_type);
group.getChildren().addAll(text_column);
group.getChildren().addAll(text_relation_words);
return true;
}
return false;
}
}