01: /*
02: * TokenizerPropertyListener.java: tokenizer property change event handler.
03: *
04: * Copyright (C) 2002 Heiko Blau
05: *
06: * This file belongs to the JTopas Library.
07: * JTopas is free software; you can redistribute it and/or modify it
08: * under the terms of the GNU Lesser General Public License as published by the
09: * Free Software Foundation; either version 2.1 of the License, or (at your
10: * option) any later version.
11: *
12: * This software is distributed in the hope that it will be useful, but WITHOUT
13: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14: * FITNESS FOR A PARTICULAR PURPOSE.
15: * See the GNU Lesser General Public License for more details.
16: *
17: * You should have received a copy of the GNU Lesser General Public License along
18: * with JTopas. If not, write to the
19: *
20: * Free Software Foundation, Inc.
21: * 59 Temple Place, Suite 330,
22: * Boston, MA 02111-1307
23: * USA
24: *
25: * or check the Internet: http://www.fsf.org
26: *
27: * Contact:
28: * email: heiko@susebox.de
29: */
30:
31: package de.susebox.jtopas;
32:
33: //-----------------------------------------------------------------------------
34: // Imports
35: //
36:
37: //-----------------------------------------------------------------------------
38: // Interface TokenizerPropertyListener
39: //
40:
41: /**<p>
42: * The interface <code>TokenizerPropertyListener</code> is implemented by classes
43: * that are interested in changes in {@link TokenizerProperties} objects. Such
44: * changes are adding, removing and modifying of properties like keywords, special
45: * sequences etc. or parse flags.
46: *</p><p>
47: * Usually, a {@link Tokenizer} implementation will also implement this interface.
48: * An example is {@link StandardTokenizer}. With the listener design pattern,
49: * a tokenizer can cache information for fast access that is originally held in
50: * its associated <code>TokenizerProperties</code> object, without the danger of
51: * using out-of-date data.
52: *</p><p>
53: * The method {@link TokenizerProperties#addTokenizerPropertyListener} is used to
54: * register a listener. De-registering is done via
55: * {@link TokenizerProperties#removeTokenizerPropertyListener}. The whole mechanism
56: * is therefore the same as the event listener schemes used in the AWT or the
57: * Swing packages of the JDK.
58: *</p>
59: *
60: * @see TokenizerProperties
61: * @see Tokenizer
62: * @see TokenizerPropertyEvent
63: * @author Heiko Blau
64: */
65: public interface TokenizerPropertyListener {
66:
67: /**
68: * Event handler method. The given {@link TokenizerPropertyEvent} parameter
69: * contains the nessecary information about the property change. We choose
70: * one single method in favour of various more specialized methods since the
71: * reactions on adding, removing and modifying tokenizer properties are often
72: * the same (flushing cash, rereading information etc.) or not very different.
73: *<br>
74: * A {@link TokenizerProperties} object calling its listeners should do this in
75: * the order the listeners were registered with the
76: * {@link TokenizerProperties#addTokenizerPropertyListener} method.
77: *
78: * @param event the {@link TokenizerPropertyEvent} that describes the change
79: */
80: public void propertyChanged(TokenizerPropertyEvent event);
81: }
|