/* WCQuoteOneSentence.java - A part of word card corresponds to one quotation
* of a page (entry) in Wiktionary.
*
* Copyright (c) 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.quote.TQuote;
import wikokit.base.wikt.sql.quote.TQuotRef;
import wikokit.base.wikt.word.WQuote;
import wiwordik.WConstants;
import wikokit.base.wikipedia.sql.Connect;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
import javafx.scene.layout.VBox;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import java.lang.*;
import javafx.scene.text.FontWeight;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.text.FontPosture;
/** WCQuoteOneSentence contains one quote (phrase/sentence) that illustrates
* one meaning of Wiktionary word and reference data (author, title, year...).
*
* @see wikt.word.WQuote
*/
public class WCQuoteOneSentence {
/** Quotation sentence. */
String sentence_text;
/** Translation of the quotation sentence. */
String translation_text;
int translation_indent = 20;
/** Related bibliography text: author, title, year, publisher. */
//var reference_text : String;
/** Author name. */
String author_name;
/** Source title. */
String title;
/** Years of the book. */
String years_range;
/** Publisher. */
String publisher;
/** Source. */
String source;
public VBox group = new VBox();
/** Creates a part of card (parts of wiki pages) with list of quotes
* related to one meaning (sense).
**/
public void create (Connect conn,
TQuote _quote) {
// 1. Sentence text
// WT:ELE: "In the quotation itself the word being illustrated should be in boldface."
// todo: substitue '''marked word''' by some color, but
// we are waiting "Rich Text" in JavaFX 2.0
String s = WQuote.removeHighlightedMarksFromSentence( WConstants.native_lang,
_quote.getText(), "", "");
// additional treatment of the sentence text (e.g., , -> " ")
sentence_text = WQuote.transformSentenceText(
WConstants.IS_SQLITE, WConstants.native_lang, s);
Text t_sentence_text = new Text(sentence_text);
t_sentence_text.setWrappingWidth(WConstants.wordcard_width - 35);
t_sentence_text.setFont(Font.font(null, FontWeight.NORMAL, 14));
t_sentence_text.setFill(Color.GREEN);
group.getChildren().addAll(t_sentence_text);
translation_text = _quote.getTranslation(conn);
if(translation_text.length() > 0) {
translation_text = WQuote.removeHighlightedMarksFromSentence( WConstants.native_lang,
translation_text, "", "");
// Optional node, only if there is a translation of the quote sentence.
Text translation_text_node = new Text(translation_text);
translation_text_node.setTranslateX(translation_indent);
translation_text_node.setWrappingWidth(WConstants.wordcard_width - 35 - translation_indent);
translation_text_node.setFont(Font.font(null, FontWeight.NORMAL, 14));
translation_text_node.setFill(Color.CHOCOLATE);
group.getChildren().addAll(translation_text_node);
}
// 2. Reference text
TQuotRef quot_ref = _quote.getReference();
if(null == quot_ref)
return;
// 2a. data and logic
//reference_text = "{quot_ref.getYearsRange()}{quot_ref.getAuthorName()}";
years_range = quot_ref.getYearsRange();
author_name = quot_ref.getAuthorName();
title = quot_ref.getTitle();
publisher = quot_ref.getPublisherName();
source = quot_ref.getSourceName();
if(WConstants.IS_SQLITE && title.contains("\\\"")) // \" -> " (SQLite feature)
title = title.replace("\\\"", "\"");
// commas and //:
// 1. years_range, author_name
if(years_range.length() > 0 && author_name.length() > 0)
years_range = years_range.concat(", ");
// 2. author_name, title
if(author_name.length() > 0 && title.length() > 0)
author_name = author_name.concat(", ");
// 3. title // (publisher or source)
if(title.length() > 0 && publisher.length() > 0)
title = title.concat(" // ");
// 4. (title or publisher), source
if((title.length() > 0 || publisher.length() > 0) && source.length() > 0)
publisher= publisher.concat(", ");
if(WConstants.DEBUGUI) {
source = "{source}; quot_ref.id={quot_ref.getID()}";
sentence_text = "{sentence_text}; quote.id={_quote.getID()}";
if(translation_text.length() > 0)
translation_text = "{translation_text}; quot_translation.quote_id={_quote.getID()}";
}
// 2b. GUI
HBox reference_hbox = new HBox();
reference_hbox.setAlignment(Pos.BASELINE_RIGHT);
reference_hbox.setSpacing(1);
// top right bottom left
reference_hbox.setPadding(new Insets(0, 10, 0, 0));
// temp debug:
//reference_hbox.setStyle("-fx-background-color:#e0e0e0");
if(0 < years_range.length()) {
Text t_years_range = new Text(years_range);
t_years_range.setFont(Font.font("Times New Roman", FontWeight.BOLD, 12));
t_years_range.setFill(Color.GREY);
reference_hbox.getChildren().addAll(t_years_range);
}
if(0 < author_name.length()) {
Text t_author_name = new Text(author_name);
t_author_name.setFont(Font.font(null, FontWeight.NORMAL, 12));
t_author_name.setFill(Color.GREY);
reference_hbox.getChildren().addAll(t_author_name);
}
if(0 < title.length()) {
Text t_title = new Text(title);
t_title.setFont(Font.font("Times New Roman Italic", FontPosture.ITALIC, 12));
t_title.setFill(Color.GREY);
reference_hbox.getChildren().addAll(t_title);
}
if(0 < publisher.length()) {
Text t_publisher = new Text(publisher);
t_publisher.setFont(Font.font(null, FontWeight.NORMAL, 12));
t_publisher.setFill(Color.GREY);
reference_hbox.getChildren().addAll(t_publisher);
}
if(0 < source.length()) {
Text t_source = new Text(source);
t_source.setFont(Font.font(null, FontWeight.NORMAL, 12));
t_source.setFill(Color.GREY);
reference_hbox.getChildren().addAll(t_source);
}
// insert reference_hbox into group.content;
group.getChildren().addAll(reference_hbox);
}
}