Lightweight, flexible, customizable WYSIWYG Markdown editor.
Source
<p:growl id="growl" keepAlive="true">
<p:autoUpdate/>
</p:growl>
<h:panelGrid columns="2" id="pnlDetails" styleClass="p-4">
<p:outputLabel value="RTL:" for="@next" styleClass="mr-2"/>
<p:selectBooleanCheckbox id="chkRtl" value="#{markdownEditorController.rtl}" styleClass="mr-2">
<p:ajax update="txtMarkdown"/>
</p:selectBooleanCheckbox>
</h:panelGrid>
<pe:markdownEditor id="txtMarkdown" widgetVar="mde" value="#{markdownEditorController.markdown}"
maxHeight="300px" sideBySideFullscreen="false" required="true" mode="sidebyside"
dir="#{markdownEditorController.rtl ? 'rtl' : 'ltr'}"
toolbar="bold, italic, strikethrough, |, heading-1, heading-2, heading-3,|, code, quote, unordered-list, ordered-list,|, clean-block, link, image, table, horizontal-rule,|, preview, side-by-side, fullscreen, |, guide">
<p:ajax event="paste" listener="#{markdownEditorController.onPaste}"/>
<p:ajax event="copy" listener="#{markdownEditorController.onCopy}"/>
<p:ajax event="cut" listener="#{markdownEditorController.onCut}"/>
</pe:markdownEditor>
<p:commandButton value="Submit" actionListener="#{markdownEditorController.submit}" update="txtMarkdown"
styleClass="mt-4"/>
@Named
@ViewScoped
public class MarkdownEditorController implements Serializable {
private static final long serialVersionUID = 1L;
private String markdown;
private boolean rtl;
@PostConstruct
public void init() {
this.markdown = "Markdown editing with **inline** styling!";
this.rtl = false;
}
public void addMessage(String message) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(message));
}
public void submit() {
addMessage(getMarkdown());
}
public void onPaste(AjaxBehaviorEvent e) {
addMessage("Paste event.");
}
public void onCopy(AjaxBehaviorEvent e) {
addMessage("Copy event.");
}
public void onCut(AjaxBehaviorEvent e) {
addMessage("Cut event.");
}
public String getMarkdown() {
return this.markdown;
}
public void setMarkdown(String markdown) {
this.markdown = markdown;
}
public boolean isRtl() {
return rtl;
}
public void setRtl(final boolean rtl) {
this.rtl = rtl;
}
}