1 |
/* StateEditable.java -- |
/* StateEditable.java -- Interface for collaborating with StateEdit. |
2 |
Copyright (C) 2002, 2003 Free Software Foundation, Inc. |
Copyright (C) 2002, 2003 Free Software Foundation, Inc. |
3 |
|
|
4 |
This file is part of GNU Classpath. |
This file is part of GNU Classpath. |
37 |
|
|
38 |
package javax.swing.undo; |
package javax.swing.undo; |
39 |
|
|
|
// Imports |
|
40 |
import java.util.Hashtable; |
import java.util.Hashtable; |
41 |
|
|
42 |
|
|
43 |
/** |
/** |
44 |
* StateEditable public interface |
* The interface for objects whose state can be undone or redone by a |
45 |
* @author Andrew Selkirk |
* {@link StateEdit} action. |
46 |
|
* |
47 |
|
* <p>The following example shows how to write a class that implements |
48 |
|
* this interface. |
49 |
|
* |
50 |
|
* <pre> class Foo |
51 |
|
* implements StateEditable |
52 |
|
* { |
53 |
|
* private String name; |
54 |
|
* |
55 |
|
* public void setName(String n) { name = n; } |
56 |
|
* |
57 |
|
* public void restoreState(Hashtable h) |
58 |
|
* { |
59 |
|
* if (h.containsKey("name")) |
60 |
|
* setName((String) h.get("name")); |
61 |
|
* } |
62 |
|
* |
63 |
|
* public void storeState(Hashtable s) |
64 |
|
* { |
65 |
|
* s.put("name", name); |
66 |
|
* } |
67 |
|
* }</pre> |
68 |
|
* |
69 |
|
* @see StateEdit |
70 |
|
* |
71 |
|
* @author Andrew Selkirk (aselkirk@sympatico.ca) |
72 |
|
* @author Sascha Brawer (brawer@dandelis.ch) |
73 |
*/ |
*/ |
74 |
public interface StateEditable |
public interface StateEditable |
75 |
{ |
{ |
76 |
/** |
/** |
77 |
* Restore State |
* The ID of the Java source file in Sun’s Revision Control |
78 |
* @param state State |
* System (RCS). This certainly should not be part of the API |
79 |
|
* specification. But in order to be API-compatible with |
80 |
|
* Sun’s reference implementation, GNU Classpath also has to |
81 |
|
* provide this field. However, we do not try to match its value. |
82 |
*/ |
*/ |
83 |
void restoreState(Hashtable state); |
static final String RCSID = ""; |
84 |
|
|
85 |
|
|
86 |
/** |
/** |
87 |
* Store State |
* Performs an edit action, taking any editable state information |
88 |
* @param state State |
* from the specified hash table. |
89 |
|
* |
90 |
|
* <p><b>Note to implementors of this interface:</b> To increase |
91 |
|
* efficiency, the <code>StateEdit</code> class {@linkplan |
92 |
|
* StateEdit#removeRedundantState() removes redundant state |
93 |
|
* information}. Therefore, implementations of this interface must be |
94 |
|
* prepared for the case where certain keys were stored into the |
95 |
|
* table by {@link #storeState}, but are not present anymore |
96 |
|
* when the <code>restoreState</code> method gets called. |
97 |
|
* |
98 |
|
* @param state a hash table containing the relevant state |
99 |
|
* information. |
100 |
*/ |
*/ |
101 |
void storeState(Hashtable state); |
void restoreState(Hashtable state); |
102 |
|
|
103 |
|
|
104 |
/** |
/** |
105 |
* For some reason, Sun made the RCS IDs visible. |
* Stores any editable state information into the specified hash |
106 |
|
* table. |
107 |
|
* |
108 |
|
* @param state a hash table for storing relevant state |
109 |
|
* information. |
110 |
*/ |
*/ |
111 |
String RCSID = "We aren't compatible"; |
void storeState(Hashtable state); |
112 |
} // StateEditable |
} |