001package com.ganteater.ae.desktop.view; 002 003import java.awt.BorderLayout; 004import java.awt.Color; 005import java.util.Properties; 006 007import javax.swing.JEditorPane; 008import javax.swing.JScrollPane; 009 010import org.apache.commons.lang.ObjectUtils; 011 012import com.ganteater.ae.AEManager; 013import com.ganteater.ae.desktop.ui.HyperlinkAdapter; 014import com.ganteater.ae.desktop.ui.JParsedown; 015import com.ganteater.ae.processor.annotation.CommandDescription; 016 017@CommandDescription("`Markdown` View Type example:\n" 018 + "\n" 019 + "```xml\n" 020 + "<View name=\"mdView\" reuse=\"false\" type=\"Markdown\" />\n" 021 + "<Out view=\"mdView\">\n" 022 + "# Title\n" 023 + "## Section\n\n" 024 + "- Item 1\n" 025 + "- Item 2\n" 026 + "- Item 3\n" 027 + "</Out>\n" 028 + "```") 029public class Markdown extends View { 030 031 private static final long serialVersionUID = 1L; 032 private String fFrameId = null; 033 private String fTitle = ""; 034 private JEditorPane displayEditorPane = null; 035 036 private boolean append; 037 038 private StringBuilder content = new StringBuilder(); 039 040 public void init(Properties params, AEManager manager) { 041 super.init(params, manager); 042 043 append = Boolean.valueOf(params.getProperty("append", "false")); 044 045 displayEditorPane = new JEditorPane(); 046 displayEditorPane.setContentType("text/html"); 047 displayEditorPane.setEditable(false); 048 displayEditorPane.addHyperlinkListener(new HyperlinkAdapter(manager)); 049 050 add(new JScrollPane(displayEditorPane), BorderLayout.CENTER); 051 } 052 053 public String getFrameId() { 054 return fFrameId; 055 } 056 057 public String getTitle() { 058 return fTitle; 059 } 060 061 @Override 062 public void out(Object value, Properties properties) { 063 String text = new JParsedown().text(ObjectUtils.toString(value)); 064 065 if (displayEditorPane != null) { 066 StringBuilder output = new StringBuilder("<html><body>"); 067 output.append(text); 068 output.append("</body></html>"); 069 displayEditorPane.setText(output.toString()); 070 } 071 } 072 073 @Override 074 public void setEnabled(boolean enabled) { 075 setBackground(Color.lightGray); 076 super.setEnabled(enabled); 077 } 078 079}