/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.eas.client.forms.components.rt; import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; import java.beans.PropertyChangeListener; import javax.swing.JEditorPane; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; /** * * @author Марат */ public class VHtmlArea extends JEditorPane implements HasValue<String>, HasEmptyText, HasEditable { private String value; private boolean modified; public VHtmlArea(String aText) { super(); super.setContentType("text/html"); super.setText(aText != null ? aText : ""); super.addFocusListener(new FocusAdapter() { @Override public void focusLost(FocusEvent e) { if (modified) { setValue(superGetText()); } } }); getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { modified = true; } @Override public void removeUpdate(DocumentEvent e) { modified = true; } @Override public void changedUpdate(DocumentEvent e) { modified = true; } }); } private String superGetText() { return super.getText(); } @Override public String getValue() { return value; } @Override public void setValue(String aValue) { if (value == null ? aValue != null : !value.equals(aValue)) { String oldValue = value; value = aValue; super.setText(value != null ? value : ""); modified = false; firePropertyChange(VALUE_PROP_NAME, oldValue, value); } } @Override public void addValueChangeListener(PropertyChangeListener listener) { super.addPropertyChangeListener(VALUE_PROP_NAME, listener); } @Override public void removeValueChangeListener(PropertyChangeListener listener) { super.removePropertyChangeListener(VALUE_PROP_NAME, listener); } @Override public boolean getEditable() { return super.isEditable(); } protected String emptyText; @Override public String getEmptyText() { return emptyText; } @Override public void setEmptyText(String aValue) { emptyText = aValue; } @Override public String getText() { return value != null ? value : ""; } @Override public void setText(String aValue) { setValue(aValue); } }