/*
* ExplanationPanelHTMLEditorKit.java
*
* Created on 25 September 2006, 19:41
*/
package uk.co.bytemark.vm.enigma.inquisition.gui.quiz;
import java.awt.Component;
import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.Document;
import javax.swing.text.Element;
import javax.swing.text.StyleConstants;
import javax.swing.text.View;
import javax.swing.text.ViewFactory;
import javax.swing.text.html.FormView;
import javax.swing.text.html.HTML;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.StyleSheet;
public class ExplanationPanelHTMLEditorKit extends HTMLEditorKit {
@Override
public Document createDefaultDocument() {
StyleSheet styles = getStyleSheet();
HTMLDocument doc = new HTMLDocument(styles);
return doc;
}
@Override
public ViewFactory getViewFactory() { return new MyHTMLFactory(); }
private static class MyHTMLFactory extends HTMLFactory {
@Override
public View create(Element e) {
AttributeSet a = e.getAttributes();
if (a.getAttribute(StyleConstants.NameAttribute) == HTML.Tag.INPUT) {
return new NonEditableInputFormView(e);
} else {
return super.create(e);
}
}
}
private static class NonEditableInputFormView extends FormView {
public NonEditableInputFormView(Element elem) {
super(elem);
}
@Override
protected Component createComponent() {
Component c = super.createComponent();
if (c instanceof JTextField) {
JTextField tf = (JTextField) c;
tf.setEditable(false);
tf.setBackground(DragAndDropPanel.NORMAL_COLOUR);
tf.setEditable(false);
int oldSize = tf.getFont().getSize();
tf.setFont(new Font("Monospaced", Font.PLAIN, oldSize));
}
return c;
}
}
}