package com.twasyl.slideshowfx.content.extension.quote; import com.twasyl.slideshowfx.content.extension.AbstractContentExtension; import com.twasyl.slideshowfx.content.extension.quote.controllers.QuoteContentExtensionController; import com.twasyl.slideshowfx.markup.IMarkup; import de.jensd.fx.glyphs.fontawesome.FontAwesomeIcon; import javafx.fxml.FXMLLoader; import javafx.scene.layout.Pane; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; /** * The QuoteContentExtension extends the AbstractContentExtension. It allows to build a content containing quote to insert * inside a SlideshowFX presentation. * This extension doesn't use other resources * This extension supports HTML and Textile markup languages. * * @author Thierry Wasylczenko * @version 1.0 * @since SlideshowFX 1.0 */ public class QuoteContentExtension extends AbstractContentExtension { private static final Logger LOGGER = Logger.getLogger(QuoteContentExtension.class.getName()); private QuoteContentExtensionController controller; public QuoteContentExtension() { super("QUOTE", null, FontAwesomeIcon.QUOTE_LEFT, "Insert a quote", "Insert a quote"); } @Override public Pane getUI() { FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource("/com/twasyl/slideshowfx/content/extension/quote/fxml/QuoteContentExtension.fxml")); Pane root = null; try { loader.setClassLoader(getClass().getClassLoader()); root = loader.load(); this.controller = loader.getController(); } catch (IOException e) { LOGGER.log(Level.SEVERE, "Can not load UI for QuoteContentExtension", e); } return root; } @Override public String buildContentString(IMarkup markup) { final StringBuilder builder = new StringBuilder(); if(markup == null || "HTML".equals(markup.getCode())) { builder.append(this.buildDefaultContentString()); } else if("TEXTILE".equals(markup.getCode())) { builder.append("bq.. ") .append(this.controller.getQuote()) .append("\np{text-align: right; font-weight: bold; font-style: italic;}. ") .append(this.controller.getAuthor()); } else { builder.append(this.buildDefaultContentString()); } return builder.toString(); } @Override public String buildDefaultContentString() { final StringBuilder builder = new StringBuilder(); builder.append("<blockquote><p>") .append(this.controller.getQuote()) .append("</p></blockquote>\n<p style=\"text-align: right; font-weight: bold; font-style: italic;\">") .append(this.controller.getAuthor()) .append("</p>"); return builder.toString(); } }