package gui; import javax.swing.text.*; /** * Source: http://stackoverflow.com/a/13375811 by * http://stackoverflow.com/users/301607/stanislavl */ public class WrapEditorKit extends StyledEditorKit { ViewFactory defaultFactory = new WrapColumnFactory(); public ViewFactory getViewFactory() { return defaultFactory; } private class WrapColumnFactory implements ViewFactory { public View create(Element elem) { String kind = elem.getName(); if (kind != null) { switch (kind) { case AbstractDocument.ContentElementName: return new WrapLabelView(elem); case AbstractDocument.ParagraphElementName: return new ParagraphView(elem); case AbstractDocument.SectionElementName: return new BoxView(elem, View.Y_AXIS); case StyleConstants.ComponentElementName: return new WrapComponentView(elem); case StyleConstants.IconElementName: return new WrapIconView(elem); } } // default to text display return new WrapLabelView(elem); } } private class WrapLabelView extends LabelView { public WrapLabelView(Element elem) { super(elem); } public float getMinimumSpan(int axis) { switch (axis) { case View.X_AXIS: return 0; case View.Y_AXIS: return super.getMinimumSpan(axis); default: throw new IllegalArgumentException("Invalid axis: " + axis); } } } private class WrapComponentView extends ComponentView { public WrapComponentView(Element elem) { super(elem); } @Override public float getMinimumSpan(int axis) { switch (axis) { case View.X_AXIS: return 0; case View.Y_AXIS: return super.getMinimumSpan(axis); default: throw new IllegalArgumentException("Invalid axis: " + axis); } } } private class WrapIconView extends IconView { public WrapIconView(Element elem) { super(elem); } @Override public float getMinimumSpan(int axis) { switch (axis) { case View.X_AXIS: return 0; case View.Y_AXIS: return super.getMinimumSpan(axis); default: throw new IllegalArgumentException("Invalid axis: " + axis); } } } }