1 /* 2 * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 package javax.swing.text; 26 27 28 /** 29 * Interface for <code>View</code>s that have size dependent upon tabs. 30 * 31 * @author Timothy Prinzing 32 * @author Scott Violet 33 * @see TabExpander 34 * @see LabelView 35 * @see ParagraphView 36 */ 37 public interface TabableView { 38 39 /** 40 * Determines the desired span when using the given 41 * tab expansion implementation. If a container 42 * calls this method, it will do so prior to the 43 * normal layout which would call getPreferredSpan. 44 * A view implementing this should give the same 45 * result in any subsequent calls to getPreferredSpan 46 * along the axis of tab expansion. 47 * 48 * @param x the position the view would be located 49 * at for the purpose of tab expansion >= 0. 50 * @param e how to expand the tabs when encountered. 51 * @return the desired span >= 0 52 */ getTabbedSpan(float x, TabExpander e)53 float getTabbedSpan(float x, TabExpander e); 54 55 /** 56 * Determines the span along the same axis as tab 57 * expansion for a portion of the view. This is 58 * intended for use by the TabExpander for cases 59 * where the tab expansion involves aligning the 60 * portion of text that doesn't have whitespace 61 * relative to the tab stop. There is therefore 62 * an assumption that the range given does not 63 * contain tabs. 64 * 65 * @param p0 the starting location in the text document >= 0 66 * @param p1 the ending location in the text document >= p0 67 * @return the span >= 0 68 */ getPartialSpan(int p0, int p1)69 float getPartialSpan(int p0, int p1); 70 } 71