History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/javax/swing/text/NavigationFilter.java (1 of 18352 files). Show all

Unified · Split

java/pkg/javax/swing/text/NavigationFilter.java+147−0
@@ -0,0 +1,147 @@
1/*
2 * Copyright (c) 2000, 2006, 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 */
25package javax.swing.text;
26
27import java.awt.Shape;
28
29/**
30 * <code>NavigationFilter</code> can be used to restrict where the cursor can
31 * be positioned. When the default cursor positioning actions attempt to
32 * reposition the cursor they will call into the
33 * <code>NavigationFilter</code>, assuming
34 * the <code>JTextComponent</code> has a non-null
35 * <code>NavigationFilter</code> set. In this manner
36 * the <code>NavigationFilter</code> can effectively restrict where the
37 * cursor can be positioned. Similarly <code>DefaultCaret</code> will call
38 * into the <code>NavigationFilter</code> when the user is changing the
39 * selection to further restrict where the cursor can be positioned.
40 * <p>
41 * Subclasses can conditionally call into supers implementation to restrict
42 * where the cursor can be placed, or call directly into the
43 * <code>FilterBypass</code>.
44 *
45 * @see javax.swing.text.Caret
46 * @see javax.swing.text.DefaultCaret
47 * @see javax.swing.text.View
48 *
49 * @since 1.4
50 */
51public class NavigationFilter {
52 /**
53 * Invoked prior to the Caret setting the dot. The default implementation
54 * calls directly into the <code>FilterBypass</code> with the passed
55 * in arguments. Subclasses may wish to conditionally
56 * call super with a different location, or invoke the necessary method
57 * on the <code>FilterBypass</code>
58 *
59 * @param fb FilterBypass that can be used to mutate caret position
60 * @param dot the position >= 0
61 * @param bias Bias to place the dot at
62 */
63 public void setDot(FilterBypass fb, int dot, Position.Bias bias) {
64 fb.setDot(dot, bias);
65 }
66
67 /**
68 * Invoked prior to the Caret moving the dot. The default implementation
69 * calls directly into the <code>FilterBypass</code> with the passed
70 * in arguments. Subclasses may wish to conditionally
71 * call super with a different location, or invoke the necessary
72 * methods on the <code>FilterBypass</code>.
73 *
74 * @param fb FilterBypass that can be used to mutate caret position
75 * @param dot the position >= 0
76 * @param bias Bias for new location
77 */
78 public void moveDot(FilterBypass fb, int dot, Position.Bias bias) {
79 fb.moveDot(dot, bias);
80 }
81
82 /**
83 * Returns the next visual position to place the caret at from an
84 * existing position. The default implementation simply forwards the
85 * method to the root View. Subclasses may wish to further restrict the
86 * location based on additional criteria.
87 *
88 * @param text JTextComponent containing text
89 * @param pos Position used in determining next position
90 * @param bias Bias used in determining next position
91 * @param direction the direction from the current position that can
92 * be thought of as the arrow keys typically found on a keyboard.
93 * This will be one of the following values:
94 * <ul>
95 * <li>SwingConstants.WEST
96 * <li>SwingConstants.EAST
97 * <li>SwingConstants.NORTH
98 * <li>SwingConstants.SOUTH
99 * </ul>
100 * @param biasRet Used to return resulting Bias of next position
101 * @return the location within the model that best represents the next
102 * location visual position
103 * @exception BadLocationException
104 * @exception IllegalArgumentException if <code>direction</code>
105 * doesn't have one of the legal values above
106 */
107 public int getNextVisualPositionFrom(JTextComponent text, int pos,
108 Position.Bias bias, int direction,
109 Position.Bias[] biasRet)
110 throws BadLocationException {
111 return text.getUI().getNextVisualPositionFrom(text, pos, bias,
112 direction, biasRet);
113 }
114
115
116 /**
117 * Used as a way to circumvent calling back into the caret to
118 * position the cursor. Caret implementations that wish to support
119 * a NavigationFilter must provide an implementation that will
120 * not callback into the NavigationFilter.
121 * @since 1.4
122 */
123 public static abstract class FilterBypass {
124 /**
125 * Returns the Caret that is changing.
126 *
127 * @return Caret that is changing
128 */
129 public abstract Caret getCaret();
130
131 /**
132 * Sets the caret location, bypassing the NavigationFilter.
133 *
134 * @param dot the position >= 0
135 * @param bias Bias to place the dot at
136 */
137 public abstract void setDot(int dot, Position.Bias bias);
138
139 /**
140 * Moves the caret location, bypassing the NavigationFilter.
141 *
142 * @param dot the position >= 0
143 * @param bias Bias for new location
144 */
145 public abstract void moveDot(int dot, Position.Bias bias);
146 }
147}