01: /*
02: * Copyright (C) 2002 Christian Sell
03: * csell@users.sourceforge.net
04: *
05: * This library is free software; you can redistribute it and/or
06: * modify it under the terms of the GNU Lesser General Public
07: * License as published by the Free Software Foundation; either
08: * version 2.1 of the License, or (at your option) any later version.
09: *
10: * This library is distributed in the hope that it will be useful,
11: * but WITHOUT ANY WARRANTY; without even the implied warranty of
12: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13: * Lesser General Public License for more details.
14: *
15: * You should have received a copy of the GNU Lesser General Public
16: * License along with this library; if not, write to the Free Software
17: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18: *
19: * created by cse, 24.09.2002 11:20:31
20: *
21: * @version $Id: Completion.java,v 1.1 2004/04/04 10:36:31 colbell Exp $
22: */
23: package net.sourceforge.squirrel_sql.client.session.parser.kernel;
24:
25: /**
26: * requirements of a completion item
27: */
28: public interface Completion {
29: /**
30: * Find a completion item for the given text position. This method can be overridden by
31: * subclasses to implement the composite pattern. If the object is not a composite, it
32: * should return itself. Otherwise, it can delegate the lookup to its children.
33: * @param position the caret position at which the completion is requested
34: * @return an appropriate completion object, or <em>null</em> of none available
35: */
36: Completion getCompletion(int position);
37:
38: /**
39: * return completion text if the completion is fully defined
40: * @param position the caret position at which the text should be inserted
41: * @return return the completion text to be inserted into the underlying document
42: */
43: String getText(int position);
44:
45: /**
46: * return completion text which is defined from this object and the derived option
47: * @param position the caret position at which the text should be inserted
48: * @param option an option string, which was earlier derived from this object
49: * @return return the completion text to be inserted into the underlying document
50: */
51: String getText(int position, String option);
52:
53: /**
54: * @return whether this completion is assigned to a specific position within the
55: * underlying document
56: */
57: boolean hasTextPosition();
58:
59: /**
60: * @return whether this completion can be used to generate lists of items, e.g. columns
61: * in a SQL select clause
62: */
63: boolean isRepeatable();
64:
65: /**
66: * @return the length of the text currently occupied by this completion
67: */
68: int getLength();
69:
70: /**
71: * @return the starting text position
72: */
73: int getStart();
74:
75: /**
76: * @param position the position at which the status should be determined
77: * @return whether the text between the start position and <em>position</em> must be replaced
78: */
79: boolean mustReplace(int position);
80: }
|