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;
014
015public class HTMLPanel extends PresentationPanel {
016
017        private static final long serialVersionUID = 1L;
018        private String fFrameId = null;
019        private String fTitle = "";
020        private JEditorPane displayEditorPane = null;
021
022        private boolean append;
023
024        private StringBuilder text = new StringBuilder();
025
026        public HTMLPanel(Properties params, AEManager manager) {
027                super(params);
028
029                append = Boolean.valueOf(params.getProperty("append", "false"));
030
031                displayEditorPane = new JEditorPane();
032                displayEditorPane.setContentType("text/html");
033                displayEditorPane.setEditable(false);
034                displayEditorPane.addHyperlinkListener(new HyperlinkAdapter(manager));
035
036                add(new JScrollPane(displayEditorPane), BorderLayout.CENTER);
037        }
038
039        public String getFrameId() {
040                return fFrameId;
041        }
042
043        public String getTitle() {
044                return fTitle;
045        }
046
047        @Override
048        public void out(Object value, Properties properties) {
049                if (append) {
050                        text.append(value);
051                } else {
052                        text = new StringBuilder(ObjectUtils.toString(value));
053                }
054
055                if (displayEditorPane != null) {
056                        displayEditorPane.setText(text.toString());
057                }
058        }
059
060        @Override
061        public void setEnabled(boolean enabled) {
062                setBackground(Color.lightGray);
063                super.setEnabled(enabled);
064        }
065
066}