001: /*
002: * Copyright (c) 2000, Jacob Smullyan.
003: *
004: * This is part of SkunkDAV, a WebDAV client. See http://skunkdav.sourceforge.net/
005: * for the latest version.
006: *
007: * SkunkDAV is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License as published
009: * by the Free Software Foundation; either version 2, or (at your option)
010: * any later version.
011: *
012: * SkunkDAV is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * General Public License for more details.
016: *
017: * You should have received a copy of the GNU General Public License
018: * along with SkunkDAV; see the file COPYING. If not, write to the Free
019: * Software Foundation, 59 Temple Place - Suite 330, Boston, MA
020: * 02111-1307, USA.
021: */
022:
023: package org.skunk.swing.text;
024:
025: import java.awt.Component;
026: import java.awt.Dimension;
027: import javax.swing.plaf.ComponentUI;
028: import javax.swing.JTextPane;
029: import javax.swing.text.StyledDocument;
030:
031: /**
032: * trivial subclass of JTextPane that supports turning off word wrap.
033: * It will be extended to support other functionality when syntax
034: * highlighting is added.
035: */
036: public class TextEditorPane extends JTextPane {
037: private boolean wrap = false;
038:
039: /**
040: * constructs a TextEditorPane with a default document.
041: */
042: public TextEditorPane() {
043: super ();
044: }
045:
046: /**
047: * constructs a TextEditorPane with the specified document.
048: * @param doc the document
049: */
050: public TextEditorPane(StyledDocument doc) {
051: super (doc);
052: }
053:
054: /**
055: * sets word wrap on or off.
056: * @param wrap whether the text editor pane should wrap or not
057: */
058: public void setWordWrap(boolean wrap) {
059: this .wrap = wrap;
060: }
061:
062: /**
063: * returns whether the editor wraps text.
064: * @return the value of the word wrap property
065: */
066: public boolean getWordWrap() {
067: return this .wrap;
068: }
069:
070: public boolean getScrollableTracksViewportWidth() {
071: if (!wrap) {
072: Component parent = this .getParent();
073: ComponentUI ui = this .getUI();
074: int uiWidth = ui.getPreferredSize(this ).width;
075: int parentWidth = parent.getSize().width;
076: boolean bool = (parent != null) ? (ui
077: .getPreferredSize(this ).width < parent.getSize().width)
078: : true;
079:
080: return bool;
081: } else
082: return super .getScrollableTracksViewportWidth();
083: }
084:
085: public void setBounds(int x, int y, int width, int height) {
086: if (wrap)
087: super .setBounds(x, y, width, height);
088: else {
089: Dimension size = this .getPreferredSize();
090: super .setBounds(x, y, Math.max(size.width, width), Math
091: .max(size.height, height));
092: }
093: }
094: }
095:
096: /* $Log: TextEditorPane.java,v $
097: /* Revision 1.4 2001/01/04 06:02:49 smulloni
098: /* added more javadoc documentation.
099: /*
100: /* Revision 1.3 2000/12/27 22:05:09 smulloni
101: /* work on syntax highlighting.
102: /* */
|