package com.twasyl.slideshowfx.content.extension.sequence.diagram;
import com.twasyl.slideshowfx.content.extension.AbstractContentExtension;
import com.twasyl.slideshowfx.content.extension.ResourceType;
import com.twasyl.slideshowfx.content.extension.sequence.diagram.controllers.SequenceDiagramContentExtensionController;
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 content extension that allows to insert sequence diagrams in a presentation. This extension only supports HTML for
* inserting the content in the presentation, meaning that HTML code will always be returned when calling
* {@link #buildDefaultContentString()} and {@link #buildContentString(com.twasyl.slideshowfx.markup.IMarkup)}.
*
* @author Thierry Wasylczenko
* @version 1.0.0
* @since SlideshowFX 1.0
*/
public class SequenceDiagramContentExtension extends AbstractContentExtension {
private static final Logger LOGGER = Logger.getLogger(SequenceDiagramContentExtension.class.getName());
private SequenceDiagramContentExtensionController controller;
public SequenceDiagramContentExtension() {
super("SEQUENCE_DIAGRAM",
SequenceDiagramContentExtension.class.getResource("/com/twasyl/slideshowfx/content/extension/sequence/diagram/resources/jumly.zip"),
FontAwesomeIcon.SHARE_ALT_SQUARE,
"Insert a sequence diagram",
"Insert a sequence diagram");
final String baseURL = "jumly/0.2.3/";
// Add URL
this.putResource(ResourceType.JAVASCRIPT_FILE, baseURL.concat("js/jquery-2.1.0.min.js"));
this.putResource(ResourceType.JAVASCRIPT_FILE, baseURL.concat("js/coffee-script-1.7.1.js"));
this.putResource(ResourceType.JAVASCRIPT_FILE, baseURL.concat("jumly.min.js"));
}
@Override
public Pane getUI() {
FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource("/com/twasyl/slideshowfx/content/extension/sequence/diagram/fxml/SequenceDiagramContentExtension.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 SequenceDiagramContentExtension", e);
}
return root;
}
@Override
public String buildContentString(IMarkup markup) {
return this.buildDefaultContentString();
}
@Override
public String buildDefaultContentString() {
final StringBuilder builder = new StringBuilder("<script type='text/jumly+sequence'>\n");
builder.append(this.controller.getSequenceDiagramText())
.append("\n</script>");
return builder.toString();
}
}