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.processor.annotation.CommandDescription;
015
016@CommandDescription("`HTML` View Type example:\r\n"
017                + "\r\n"
018                + "```xml \r\n"
019                + "<View name=\"htmlView\" reuse=\"false\" type=\"HTML\" /> \r\n"
020                + "<Out view=\"htmlView\">\r\n"
021                + "     <html>\r\n"
022                + "             <h1>HTML Test Page</h1> \r\n"
023                + "             <p>Lorem ipsum dolor sit amet</p> \r\n"
024                + "     </html> \r\n"
025                + "</Out> \r\n"
026                + "```")
027public class HTML extends View {
028
029        private static final long serialVersionUID = 1L;
030        private String fFrameId = null;
031        private String fTitle = "";
032        private JEditorPane displayEditorPane = null;
033
034        private boolean append;
035
036        private StringBuilder text = new StringBuilder();
037
038        public void init(Properties params, AEManager manager) {
039                super.init(params, manager);
040
041                append = Boolean.valueOf(params.getProperty("append", "false"));
042
043                displayEditorPane = new JEditorPane();
044                displayEditorPane.setContentType("text/html");
045                displayEditorPane.setEditable(false);
046                displayEditorPane.addHyperlinkListener(new HyperlinkAdapter(manager));
047
048                add(new JScrollPane(displayEditorPane), BorderLayout.CENTER);
049        }
050
051        public String getFrameId() {
052                return fFrameId;
053        }
054
055        public String getTitle() {
056                return fTitle;
057        }
058
059        @Override
060        public void out(Object value, Properties properties) {
061                if (append) {
062                        text.append(value);
063                } else {
064                        text = new StringBuilder(ObjectUtils.toString(value));
065                }
066
067                if (displayEditorPane != null) {
068                        displayEditorPane.setText(text.toString());
069                }
070        }
071
072        @Override
073        public void setEnabled(boolean enabled) {
074                setBackground(Color.lightGray);
075                super.setEnabled(enabled);
076        }
077
078}