package com.twasyl.slideshowfx.content.extension.image;
import com.twasyl.slideshowfx.content.extension.AbstractContentExtension;
import com.twasyl.slideshowfx.content.extension.image.controllers.ImageContentExtensionController;
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 ImageContentExtension extends the AbstractContentExtension. It allows to build a content containing images to insert
* inside a SlideshowFX presentation.
* This extension supports HTML and Textile markup languages.
*
* @author Thierry Wasylczenko
* @version 1.2
* @since SlideshowFX 1.0
*/
public class ImageContentExtension extends AbstractContentExtension {
private static final Logger LOGGER = Logger.getLogger(ImageContentExtension.class.getName());
private ImageContentExtensionController controller;
public ImageContentExtension() {
super("IMAGE", null,
FontAwesomeIcon.PICTURE_ALT,
"Insert an image",
"Insert an image");
}
@Override
public Pane getUI() {
FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource("/com/twasyl/slideshowfx/content/extension/image/fxml/ImageContentExtension.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 ImageContentExtension", e);
}
return root;
}
@Override
public String buildContentString(IMarkup markup) {
final StringBuilder builder = new StringBuilder();
if (this.controller.getSelectedFile() != null) {
if (markup == null || "HTML".equals(markup.getCode())) {
builder.append(this.buildDefaultContentString());
} else if ("TEXTILE".equals(markup.getCode())) {
builder.append("!").append(this.controller.getSelectedFileUrl()).append("!");
} else if ("MARKDOWN".equals(markup.getCode())) {
builder.append("![](").append(this.controller.getSelectedFileUrl()).append(")");
} else {
builder.append(this.buildDefaultContentString());
}
}
return builder.toString();
}
@Override
public String buildDefaultContentString() {
final StringBuilder builder = new StringBuilder();
builder.append("<img src=\"")
.append(this.controller.getSelectedFileUrl())
.append("\" />");
return builder.toString();
}
}