1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.impl.wsdl.panels.request.components.editor.views;
14
15 import java.beans.PropertyChangeEvent;
16 import java.beans.PropertyChangeListener;
17 import java.beans.PropertyChangeSupport;
18 import java.util.HashSet;
19 import java.util.Set;
20
21 import com.eviware.soapui.impl.wsdl.panels.request.components.editor.XmlDocument;
22 import com.eviware.soapui.impl.wsdl.panels.request.components.editor.XmlEditor;
23 import com.eviware.soapui.impl.wsdl.panels.request.components.editor.XmlEditorView;
24 import com.eviware.soapui.impl.wsdl.panels.request.components.editor.XmlLocation;
25 import com.eviware.soapui.impl.wsdl.panels.request.components.editor.XmlLocationListener;
26
27 /***
28 * Abstract base-class to be extended by XmlViews
29 *
30 * @author ole.matzura
31 */
32
33 public abstract class AbstractEditorView implements XmlEditorView, PropertyChangeListener
34 {
35 private String title;
36 private boolean isActive;
37 private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport( this );
38 private XmlDocument xmlDocument;
39 private boolean xmlChanged;
40 private Set<XmlLocationListener> listeners = new HashSet<XmlLocationListener>();
41 private XmlEditor editor;
42
43 public AbstractEditorView(String title, XmlEditor xmlEditor)
44 {
45 super();
46 this.title = title;
47 editor = xmlEditor;
48 xmlChanged = false;
49 }
50
51 protected PropertyChangeSupport getPropertyChangeSupport()
52 {
53 return propertyChangeSupport;
54 }
55
56 public boolean activate(XmlLocation location)
57 {
58 isActive = true;
59 update();
60
61 return true;
62 }
63
64 public void update()
65 {
66 if( xmlChanged )
67 {
68 setXml( xmlDocument == null ? null : xmlDocument.getXml() );
69 xmlChanged = false;
70 }
71 }
72
73 public boolean isXmlChanged()
74 {
75 return xmlChanged;
76 }
77
78 public boolean deactivate()
79 {
80 isActive = false;
81 xmlChanged = false;
82
83 return true;
84 }
85
86 public boolean isActive()
87 {
88 return isActive;
89 }
90
91 public String getTitle()
92 {
93 return title;
94 }
95
96 public void setTitle( String title )
97 {
98 String oldTitle = this.title;
99 this.title = title;
100
101 propertyChangeSupport.firePropertyChange( TITLE_PROPERTY, oldTitle, title );
102 }
103
104 public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
105 {
106 propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
107 }
108
109 public void addPropertyChangeListener(PropertyChangeListener listener)
110 {
111 propertyChangeSupport.addPropertyChangeListener( listener );
112 }
113
114 public void removePropertyChangeListener(PropertyChangeListener listener)
115 {
116 propertyChangeSupport.removePropertyChangeListener( listener );
117 }
118
119 public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
120 {
121 propertyChangeSupport.removePropertyChangeListener( propertyName, listener );
122 }
123
124 public XmlDocument getXmlDocument()
125 {
126 return xmlDocument;
127 }
128
129 public void setXmlDocument(XmlDocument xmlDocument)
130 {
131 if( this.xmlDocument != null )
132 {
133 this.xmlDocument.removePropertyChangeListener( XmlDocument.XML_PROPERTY, this );
134 }
135
136 this.xmlDocument = xmlDocument;
137
138 if( xmlDocument != null )
139 {
140 this.xmlDocument.addPropertyChangeListener( XmlDocument.XML_PROPERTY, this );
141 setXml( xmlDocument.getXml() );
142 }
143 else
144 {
145 setXml( null );
146 }
147
148 xmlChanged = false;
149 }
150
151 public void propertyChange(PropertyChangeEvent evt)
152 {
153 if( isActive() )
154 setXml( (String) evt.getNewValue() );
155 else
156 xmlChanged = true;
157 }
158
159 public abstract void setXml( String xml );
160
161 public void release()
162 {
163 if( this.xmlDocument != null )
164 {
165 this.xmlDocument.removePropertyChangeListener( XmlDocument.XML_PROPERTY, this );
166 this.xmlDocument = null;
167 }
168 }
169
170 public void addLocationListener(XmlLocationListener listener)
171 {
172 listeners.add( listener );
173 }
174
175 public void removeLocationListener(XmlLocationListener listener)
176 {
177 listeners.remove( listener );
178 }
179
180 public void fireLocationChanged( XmlLocation location )
181 {
182 for( XmlLocationListener listener : listeners )
183 listener.locationChanged( location );
184 }
185
186 public XmlLocation getLocation()
187 {
188 return null;
189 }
190
191 public void setLocation(XmlLocation location)
192 {
193 }
194
195 public void locationChanged(XmlLocation location)
196 {
197 }
198
199 public void syncUpdates()
200 {
201 if( !isActive() && xmlChanged )
202 {
203 setXml( xmlDocument == null ? null : xmlDocument.getXml() );
204 xmlChanged = false;
205 }
206 }
207
208 public XmlEditor getEditor()
209 {
210 return editor;
211 }
212
213 public void requestFocus()
214 {
215 }
216 }