Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
blob: bc6779be04efd3398a96f4e508e85ebfa7702047 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/*******************************************************************************
 * Copyright (c) 2001, 2004 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *     Jens Lukowski/Innoopract - initial renaming/restructuring
 *     
 *******************************************************************************/
package org.eclipse.wst.xml.core.internal.document;



import org.w3c.dom.Attr;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

/**
 * 
 * XMLModelNotifier manages the notification process. Clients should not use
 * extend or reference.
 * 
 * ISSUE: should be internalized.
 */

public interface XMLModelNotifier {

	/**
	 * attrReplaced method
	 * 
	 * @param element
	 *            org.w3c.dom.Element
	 * @param newAttr
	 *            org.w3c.dom.Attr
	 * @param oldAttr
	 *            org.w3c.dom.Attr
	 */
	void attrReplaced(Element element, Attr newAttr, Attr oldAttr);

	/**
	 * Signal that changing is starting.
	 * 
	 */
	void beginChanging();

	/**
	 * Signal that changing is starting with a brand new model.
	 * 
	 */
	void beginChanging(boolean newModel);

	/**
	 * Cancel pending notifications. This is called in the context of
	 * "reinitialization" so is assumed ALL notifications can be safely
	 * canceled, assuming that once factories and adapters are re-initialized
	 * they will be re-notified as text is set in model, if still appropriate.
	 */
	void cancelPending();

	/**
	 * childReplaced method
	 * 
	 * @param parentNode
	 *            org.w3c.dom.Node
	 * @param newChild
	 *            org.w3c.dom.Node
	 * @param oldChild
	 *            org.w3c.dom.Node
	 */
	void childReplaced(Node parentNode, Node newChild, Node oldChild);

	/**
	 * Editable state changed for node.
	 * 
	 */
	void editableChanged(Node node);

	/**
	 * Signal changing is finished.
	 * 
	 */
	void endChanging();

	/**
	 * Signal end tag changed.
	 * 
	 * @param element
	 * 
	 */
	void endTagChanged(Element element);

	/**
	 * Used to reflect state of model.
	 * 
	 * @return true if model had changed.
	 * 
	 */
	boolean hasChanged();

	/**
	 * Used to reflect state of parsing process.
	 * 
	 * @return true if model is currently changing.
	 */
	boolean isChanging();

	/**
	 * signal property changed
	 * 
	 * @param node
	 */
	void propertyChanged(Node node);

	/**
	 * signal start tag changed
	 * 
	 * @param element
	 */
	void startTagChanged(Element element);

	/**
	 * signal structured changed.
	 * 
	 * @param node
	 */
	void structureChanged(Node node);

	/**
	 * valueChanged method
	 * 
	 * @param node
	 *            org.w3c.dom.Node
	 */
	void valueChanged(Node node);

}

Back to the top