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}