1 |
4307
|
leinfelder
|
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
|
2 |
|
|
<html>
|
3 |
|
|
<head>
|
4 |
|
|
<title>
|
5 |
|
|
<a href='http://mapbuilder.sourceforge.net'>Community Map Builder</a> 27 Apr 2008 Overview
|
6 |
|
|
</title>
|
7 |
|
|
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
|
8 |
|
|
<script>
|
9 |
|
|
function asd() {
|
10 |
|
|
|
11 |
|
|
parent.document.title="ButtonBase.js Overview";
|
12 |
|
|
|
13 |
|
|
}
|
14 |
|
|
</script>
|
15 |
|
|
</head>
|
16 |
|
|
<body bgcolor="white" onload="asd();">
|
17 |
|
|
|
18 |
|
|
<!-- ========== START OF NAVBAR ========== -->
|
19 |
|
|
<a name="navbar_top"><!-- --></a>
|
20 |
|
|
<table border="0" width="100%" cellpadding="1" cellspacing="0">
|
21 |
|
|
<tr>
|
22 |
|
|
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
|
23 |
|
|
<a name="navbar_top_firstrow"><!-- --></a>
|
24 |
|
|
<table border="0" cellpadding="0" cellspacing="3">
|
25 |
|
|
<tr align="center" valign="top">
|
26 |
|
|
|
27 |
|
|
|
28 |
|
|
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a> </td>
|
29 |
|
|
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> <font class="NavBarFont1Rev"><b>File</b></font> </td>
|
30 |
|
|
|
31 |
|
|
|
32 |
|
|
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font> </td>
|
33 |
|
|
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a> </td>
|
34 |
|
|
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a> </td>
|
35 |
|
|
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a> </td>
|
36 |
|
|
</tr>
|
37 |
|
|
</table>
|
38 |
|
|
</td>
|
39 |
|
|
<td bgcolor="#EEEEFF" align="right" valign="top">
|
40 |
|
|
<em>
|
41 |
|
|
<b><a href='http://mapbuilder.sourceforge.net'>Community Map Builder</a> 27 Apr 2008</b></em>
|
42 |
|
|
</td>
|
43 |
|
|
</tr>
|
44 |
|
|
|
45 |
|
|
<tr>
|
46 |
|
|
<td bgcolor="white" class="NavBarCell2"><font size="-2">
|
47 |
|
|
PREV
|
48 |
|
|
NEXT</font></td>
|
49 |
|
|
<td bgcolor="white" class="NavBarCell2"><font size="-2">
|
50 |
|
|
<a href="index.html" target="_top"><b>FRAMES</b></a>
|
51 |
|
|
<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
|
52 |
|
|
|
53 |
|
|
<script>
|
54 |
|
|
<!--
|
55 |
|
|
if(window==top) {
|
56 |
|
|
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
|
57 |
|
|
}
|
58 |
|
|
//-->
|
59 |
|
|
</script>
|
60 |
|
|
<noscript>
|
61 |
|
|
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
|
62 |
|
|
</noscript>
|
63 |
|
|
</font></td>
|
64 |
|
|
</tr>
|
65 |
|
|
</table>
|
66 |
|
|
<!-- =========== END OF NAVBAR =========== -->
|
67 |
|
|
|
68 |
|
|
<hr>
|
69 |
|
|
<center>
|
70 |
|
|
|
71 |
|
|
<h2>ButtonBase.js</h2>
|
72 |
|
|
|
73 |
|
|
</center>
|
74 |
|
|
|
75 |
|
|
|
76 |
|
|
|
77 |
|
|
|
78 |
|
|
<h4>Summary</h4>
|
79 |
|
|
<p>
|
80 |
|
|
|
81 |
|
|
No overview generated for 'ButtonBase.js'<BR/><BR/>
|
82 |
|
|
|
83 |
|
|
</p>
|
84 |
|
|
|
85 |
|
|
<hr>
|
86 |
|
|
|
87 |
|
|
|
88 |
|
|
<table border="1" cellpadding="3" cellspacing="0" width="100%">
|
89 |
|
|
<tr bgcolor="#CCCCFF" class="TableHeadingColor">
|
90 |
|
|
<td colspan=2><font size="+2">
|
91 |
|
|
|
92 |
|
|
<b>Class Summary</b>
|
93 |
|
|
|
94 |
|
|
</font></td>
|
95 |
|
|
</tr>
|
96 |
|
|
|
97 |
|
|
<tr bgcolor="white" class="TableRowColor">
|
98 |
|
|
<td width="15%"><b><a href="ButtonBase.html">ButtonBase</a></b></td>
|
99 |
|
|
<td> </td>
|
100 |
|
|
</tr>
|
101 |
|
|
|
102 |
|
|
</table>
|
103 |
|
|
<hr/>
|
104 |
|
|
|
105 |
|
|
|
106 |
|
|
<!-- ========== METHOD SUMMARY =========== -->
|
107 |
|
|
|
108 |
|
|
<!-- ========== END METHOD SUMMARY =========== -->
|
109 |
|
|
|
110 |
|
|
|
111 |
|
|
<pre class="sourceview"><span class="comment">/*
|
112 |
|
|
License: LGPL as per: http://www.gnu.org/copyleft/lesser.html
|
113 |
|
|
$Id: ButtonBase.js 3879 2008-02-27 14:20:29Z gjvoosten $
|
114 |
|
|
*/</span>
|
115 |
|
|
<span class="comment">
|
116 |
|
|
// Ensure this object's dependancies are loaded.</span>
|
117 |
|
|
mapbuilder.loadScript(baseDir+<span class="literal">"/util/Util.js"</span>);
|
118 |
|
|
mapbuilder.loadScript(baseDir+<span class="literal">"/widget/WidgetBase.js"</span>);
|
119 |
|
|
|
120 |
|
|
<span class="comment">/**
|
121 |
|
|
* Abstract base button object that all Buttons extend.
|
122 |
|
|
* A Button is a widget which renders an image and an optional second image
|
123 |
|
|
* for the enabled state.
|
124 |
|
|
* <span class="attrib">@constructor</span>
|
125 |
|
|
* <span class="attrib">@base</span> WidgetBase
|
126 |
|
|
* <span class="attrib">@author</span> Mike Adair mike.adairATccrs.nrcan.gc.ca
|
127 |
|
|
* <span class="attrib">@param</span> widgetNode The tool node from the Config XML file.
|
128 |
|
|
* <span class="attrib">@param</span> model The parent model object (optional).
|
129 |
|
|
*/</span>
|
130 |
|
|
<span class="reserved">function</span> ButtonBase(widgetNode, model) {
|
131 |
|
|
WidgetBase.apply(<span class="reserved">this</span>, new Array(widgetNode, model));
|
132 |
|
|
|
133 |
|
|
<span class="reserved">this</span>.htmlTagId = <span class="reserved">this</span>.getProperty(<span class="literal">"mb:buttonBar"</span>);
|
134 |
|
|
<span class="reserved">if</span> (!<span class="reserved">this</span>.htmlTagId) {
|
135 |
|
|
<span class="reserved">this</span>.htmlTagId = <span class="reserved">this</span>.getProperty(<span class="literal">"mb:htmlTagId"</span>);
|
136 |
|
|
}
|
137 |
|
|
<span class="reserved">if</span> (!<span class="reserved">this</span>.htmlTagId) {
|
138 |
|
|
alert(mbGetMessage(<span class="literal">"buttonBarRequired"</span>, widgetNode.nodeName));
|
139 |
|
|
}
|
140 |
|
|
<span class="comment"> // Set button text values as parameters</span>
|
141 |
|
|
<span class="reserved">if</span> (config.widgetText) {
|
142 |
|
|
var textNodeXpath = <span class="literal">"/mb:WidgetText/mb:widgets/mb:"</span> + widgetNode.nodeName;
|
143 |
|
|
var textParams = config.widgetText.selectNodes(textNodeXpath+<span class="literal">"/*"</span>);
|
144 |
|
|
<span class="reserved">for</span> (var j=0;j<textParams.length;j++) {
|
145 |
|
|
<span class="reserved">this</span>[textParams[j].nodeName]=getNodeValue(textParams[j]);
|
146 |
|
|
}
|
147 |
|
|
}
|
148 |
|
|
<span class="comment"> // html tag id of the div where OL places its panel code</span>
|
149 |
|
|
<span class="reserved">this</span>.panelHtmlTagId = <span class="reserved">this</span>.htmlTagId+<span class="literal">'_panel'</span>;
|
150 |
|
|
<span class="comment">
|
151 |
|
|
// load controlPanel.css for button base styles</span>
|
152 |
|
|
loadCss(<span class="literal">'controlPanel.css'</span>);
|
153 |
|
|
<span class="comment">
|
154 |
|
|
//set the button type</span>
|
155 |
|
|
<span class="reserved">this</span>.buttonType = <span class="reserved">this</span>.getProperty(<span class="literal">"mb:class"</span>)
|
156 |
|
|
<span class="reserved">this</span>.buttonType = <span class="reserved">this</span>.buttonType ? <span class="reserved">this</span>.buttonType.toUpperCase() : null;
|
157 |
|
|
<span class="reserved">if</span> (<span class="reserved">this</span>.buttonType == <span class="literal">"RADIOBUTTON"</span>) <span class="reserved">this</span>.enabled = false;
|
158 |
|
|
<span class="comment">
|
159 |
|
|
// map between MB and OL button types</span>
|
160 |
|
|
<span class="reserved">this</span>.olButtonType = {
|
161 |
|
|
<span class="literal">"RADIOBUTTON"</span> : OpenLayers.Control.TYPE_TOOL,
|
162 |
|
|
<span class="literal">"TOOL"</span> : OpenLayers.Control.TYPE_TOOL,
|
163 |
|
|
<span class="literal">"BUTTON"</span> : OpenLayers.Control.TYPE_BUTTON,
|
164 |
|
|
<span class="literal">"TOGGLE"</span> : OpenLayers.Control.TYPE_TOGGLE
|
165 |
|
|
}
|
166 |
|
|
<span class="comment">
|
167 |
|
|
//set the button action</span>
|
168 |
|
|
<span class="reserved">this</span>.action = <span class="reserved">this</span>.getProperty(<span class="literal">"mb:action"</span>);
|
169 |
|
|
<span class="comment">
|
170 |
|
|
// set the button tooltip</span>
|
171 |
|
|
var tooltip = <span class="reserved">this</span>.getProperty(<span class="literal">"mb:tooltip"</span>);
|
172 |
|
|
<span class="reserved">if</span> (tooltip) {
|
173 |
|
|
<span class="reserved">this</span>.tooltip = tooltip;
|
174 |
|
|
}
|
175 |
|
|
<span class="comment">
|
176 |
|
|
//pre-load the button bar images; add them to the config</span>
|
177 |
|
|
var disabledImage = <span class="reserved">this</span>.getProperty(<span class="literal">"mb:disabledSrc"</span>);
|
178 |
|
|
<span class="reserved">if</span> (disabledImage) {
|
179 |
|
|
<span class="reserved">this</span>.disabledImage = config.skinDir + disabledImage;
|
180 |
|
|
}
|
181 |
|
|
<span class="comment">
|
182 |
|
|
//optional second image to be displayed in the enabled state</span>
|
183 |
|
|
var enabledImage = <span class="reserved">this</span>.getProperty(<span class="literal">"mb:enabledSrc"</span>);
|
184 |
|
|
<span class="reserved">if</span> (enabledImage) {
|
185 |
|
|
<span class="reserved">this</span>.enabledImage = config.skinDir + enabledImage;
|
186 |
|
|
}
|
187 |
|
|
|
188 |
|
|
<span class="reserved">this</span>.cursor = <span class="literal">'default'</span>;
|
189 |
|
|
<span class="comment">
|
190 |
|
|
// Check for cursor override</span>
|
191 |
|
|
<span class="reserved">this</span>.cursor = <span class="reserved">this</span>.getProperty(<span class="literal">"mb:cursor"</span>);
|
192 |
|
|
<span class="comment">
|
193 |
|
|
//a button may be set as selected in the config file</span>
|
194 |
|
|
<span class="reserved">this</span>.selected = Mapbuilder.parseBoolean(<span class="reserved">this</span>.getProperty(<span class="literal">"mb:selected"</span>, false));
|
195 |
|
|
|
196 |
|
|
<span class="comment">/**
|
197 |
|
|
* Gets the css classname for this button. We use this
|
198 |
|
|
* to define the button styles.
|
199 |
|
|
* <span class="attrib">@param</span> objRef Reference to this object.
|
200 |
|
|
* <span class="attrib">@param</span> state 'Active' or 'Inactive' (case sensitive!)
|
201 |
|
|
*/</span>
|
202 |
|
|
<span class="reserved">this</span>.getButtonClass = <span class="reserved">function</span>(objRef, state) {
|
203 |
|
|
var cssName;
|
204 |
|
|
<span class="reserved">if</span> (objRef.control.displayClass) {
|
205 |
|
|
cssName = objRef.control.displayClass;
|
206 |
|
|
} <span class="reserved">else</span> {
|
207 |
|
|
cssName = objRef.control.CLASS_NAME;
|
208 |
|
|
cssName = cssName.replace(/OpenLayers/, <span class="literal">'ol'</span>).replace(/\./g, <span class="literal">''</span>);
|
209 |
|
|
}
|
210 |
|
|
cssName += <span class="literal">'Item'</span>;
|
211 |
|
|
<span class="reserved">return</span> <span class="literal">'.'</span> + cssName + state;
|
212 |
|
|
}
|
213 |
|
|
|
214 |
|
|
<span class="comment">/**
|
215 |
|
|
* OpenLayers control for this button.
|
216 |
|
|
* This will be filled with the instance of the control
|
217 |
|
|
* by the attachToOL method.
|
218 |
|
|
*/</span>
|
219 |
|
|
<span class="reserved">this</span>.control = null;
|
220 |
|
|
<span class="comment">
|
221 |
|
|
//TBD This is never called, but I think we can drop it</span>
|
222 |
|
|
<span class="comment"> // if we get rid of MB mouse handlers</span>
|
223 |
|
|
<span class="comment">/**
|
224 |
|
|
* Override this in buttons which inherit from this object to carry out the action.
|
225 |
|
|
* This is the function that will be called either when the button is selected
|
226 |
|
|
* via the select() method or on a mouseup event if there is an associated
|
227 |
|
|
* mouseHandler property in config.
|
228 |
|
|
*/</span>
|
229 |
|
|
<span class="reserved">this</span>.doAction = <span class="reserved">function</span>() {}
|
230 |
|
|
|
231 |
|
|
<span class="comment">/**
|
232 |
|
|
* Select this button. Enables and disables associated tools,
|
233 |
|
|
* then the control.trigger()/activate() methods make OL call
|
234 |
|
|
* the doSelect method defined in derived classes.
|
235 |
|
|
*/</span>
|
236 |
|
|
<span class="reserved">this</span>.select = <span class="reserved">function</span>() {
|
237 |
|
|
<span class="reserved">if</span> (<span class="reserved">this</span>.control.type == OpenLayers.Control.TYPE_BUTTON) {
|
238 |
|
|
<span class="reserved">this</span>.control.trigger();
|
239 |
|
|
} <span class="reserved">else</span> {
|
240 |
|
|
<span class="reserved">this</span>.panel.activateControl(<span class="reserved">this</span>.control);
|
241 |
|
|
}
|
242 |
|
|
}
|
243 |
|
|
|
244 |
|
|
<span class="comment">/**
|
245 |
|
|
* Method overriden by subclasses
|
246 |
|
|
* <span class="attrib">@param</span> objRef Reference to this object.
|
247 |
|
|
* <span class="attrib">@param</span> selected True when selected, false when deselected.
|
248 |
|
|
*/</span>
|
249 |
|
|
<span class="reserved">this</span>.doSelect = <span class="reserved">function</span>(objRef, selected) {
|
250 |
|
|
}
|
251 |
|
|
|
252 |
|
|
<span class="comment">/**
|
253 |
|
|
* Attaches the control for this button to OpenLayers
|
254 |
|
|
* and add it to the buttonBar. When this method is called,
|
255 |
|
|
* everything of the OL map is available.
|
256 |
|
|
* <span class="attrib">@param</span> {OpenLayers.Control} control to add.
|
257 |
|
|
* <span class="attrib">@param</span> objRef Reference to this object.
|
258 |
|
|
*/</span>
|
259 |
|
|
<span class="reserved">this</span>.attachToOL = <span class="reserved">function</span>(objRef,refreshId) {
|
260 |
|
|
<span class="reserved">if</span> (objRef.control) {
|
261 |
|
|
<span class="reserved">return</span>;
|
262 |
|
|
}
|
263 |
|
|
<span class="comment">
|
264 |
|
|
//pass in a widget ID to refresh only that widget</span>
|
265 |
|
|
<span class="reserved">if</span> (refreshId && (refreshId!=objRef.id)) <span class="reserved">return</span>;
|
266 |
|
|
<span class="comment">
|
267 |
|
|
// nothing to do here if subclass does not have a</span>
|
268 |
|
|
<span class="comment"> // createControl method</span>
|
269 |
|
|
<span class="reserved">if</span> (!objRef.createControl) <span class="reserved">return</span>;
|
270 |
|
|
<span class="comment">
|
271 |
|
|
// override the control from the subclass to add</span>
|
272 |
|
|
<span class="comment"> // MB-stuff to the activate and deactivate methods</span>
|
273 |
|
|
var SubclassControl = objRef.createControl(objRef);
|
274 |
|
|
var type = objRef.olButtonType[objRef.buttonType] ||
|
275 |
|
|
SubclassControl.<span class="reserved">prototype</span>.type;
|
276 |
|
|
|
277 |
|
|
var Control = OpenLayers.Class( SubclassControl, {
|
278 |
|
|
objRef: objRef,
|
279 |
|
|
type: type,
|
280 |
|
|
superclass: SubclassControl.<span class="reserved">prototype</span>,
|
281 |
|
|
<span class="comment"> // call objRef.doSelect after OL activate from this control</span>
|
282 |
|
|
trigger: <span class="reserved">function</span>() {
|
283 |
|
|
<span class="reserved">if</span>(<span class="reserved">this</span>.superclass.trigger) {
|
284 |
|
|
<span class="reserved">this</span>.superclass.trigger.call(<span class="reserved">this</span>);
|
285 |
|
|
}
|
286 |
|
|
objRef.doSelect(objRef, true);
|
287 |
|
|
},
|
288 |
|
|
activate: <span class="reserved">function</span>() {
|
289 |
|
|
<span class="reserved">if</span> (<span class="reserved">this</span>.superclass.activate.call(<span class="reserved">this</span>)) {
|
290 |
|
|
<span class="reserved">this</span>.panel_div.style.backgroundImage = <span class="literal">"url(\"</span><span class="literal">"+objRef.enabledImage+"</span>\<span class="literal">")"</span>;
|
291 |
|
|
<span class="reserved">this</span>.map.div.style.cursor = objRef.cursor;
|
292 |
|
|
<span class="comment"> // store the cursor with the map object; this will be applied</span>
|
293 |
|
|
<span class="comment"> // to the map div again when setting the aoi on the</span>
|
294 |
|
|
<span class="comment"> // OpenLayers moveend event</span>
|
295 |
|
|
<span class="reserved">this</span>.map.mbCursor = objRef.cursor;
|
296 |
|
|
objRef.enabled = true;
|
297 |
|
|
<span class="reserved">this</span>.active = true;
|
298 |
|
|
objRef.doSelect(objRef, true);
|
299 |
|
|
}
|
300 |
|
|
},
|
301 |
|
|
<span class="comment"> // call objRef.doSelect after OL deactivate from this control</span>
|
302 |
|
|
deactivate: <span class="reserved">function</span>() {
|
303 |
|
|
<span class="reserved">if</span> (<span class="reserved">this</span>.superclass.deactivate.call(<span class="reserved">this</span>)) {
|
304 |
|
|
<span class="reserved">this</span>.panel_div.style.backgroundImage = <span class="literal">"url(\"</span><span class="literal">"+objRef.disabledImage+"</span>\<span class="literal">")"</span>;
|
305 |
|
|
objRef.enabled = false;
|
306 |
|
|
<span class="reserved">this</span>.active = false;
|
307 |
|
|
<span class="reserved">if</span> (map.getControlsBy(<span class="literal">"active"</span>, true).length == 0) {
|
308 |
|
|
<span class="reserved">this</span>.map.div.style.cursor = <span class="literal">""</span>;
|
309 |
|
|
<span class="reserved">this</span>.map.mbCursor = <span class="literal">""</span>;
|
310 |
|
|
}
|
311 |
|
|
objRef.doSelect(objRef, false)
|
312 |
|
|
}
|
313 |
|
|
},
|
314 |
|
|
destroy: <span class="reserved">function</span>() {
|
315 |
|
|
try {
|
316 |
|
|
<span class="reserved">this</span>.superclass.destroy.apply(<span class="reserved">this</span>, arguments);
|
317 |
|
|
} catch(e) {
|
318 |
|
|
OpenLayers.Control.<span class="reserved">prototype</span>.destroy.apply(<span class="reserved">this</span>, arguments);
|
319 |
|
|
}
|
320 |
|
|
<span class="reserved">this</span>.superclass = null;
|
321 |
|
|
OpenLayers.Event.stopObservingElement(<span class="reserved">this</span>.panel_div);
|
322 |
|
|
<span class="reserved">this</span>.objRef.panel.div.removeChild(<span class="reserved">this</span>.panel_div);
|
323 |
|
|
<span class="reserved">this</span>.objRef.control = null;
|
324 |
|
|
<span class="reserved">this</span>.objRef = null;
|
325 |
|
|
<span class="reserved">this</span>.panel_div = null;
|
326 |
|
|
<span class="reserved">this</span>.div = null;
|
327 |
|
|
}
|
328 |
|
|
});
|
329 |
|
|
<span class="comment">
|
330 |
|
|
// if the subclass provides an instantiateControl() method,</span>
|
331 |
|
|
<span class="comment"> // use it for instantiation. If not, instantiate directly</span>
|
332 |
|
|
<span class="reserved">if</span> (!objRef.control) {
|
333 |
|
|
objRef.control = objRef.instantiateControl ? objRef.instantiateControl(objRef, Control) : new Control();
|
334 |
|
|
}
|
335 |
|
|
<span class="comment">
|
336 |
|
|
// get the control from the createControl method of the subclass</span>
|
337 |
|
|
<span class="comment"> //objRef.control = objRef.createControl(objRef);</span>
|
338 |
|
|
var map = objRef.targetContext.map;
|
339 |
|
|
objRef.panel = objRef.targetContext.buttonBars[objRef.htmlTagId];
|
340 |
|
|
<span class="comment"> // create a panel, if we do not have one yet for this buttonBar</span>
|
341 |
|
|
<span class="comment"> // or if the old map.panel was destroyed</span>
|
342 |
|
|
<span class="reserved">if</span> (!objRef.panel || objRef.panel.map == null) {
|
343 |
|
|
<span class="comment"> // create a dom node for OL to use as panel</span>
|
344 |
|
|
<span class="reserved">if</span> (!document.getElementById(objRef.panelHtmlTagId)) {
|
345 |
|
|
var olPanelNode = document.createElement(<span class="literal">'div'</span>);
|
346 |
|
|
olPanelNode.setAttribute(<span class="literal">'id'</span>, objRef.panelHtmlTagId);
|
347 |
|
|
olPanelNode.setAttribute(<span class="literal">'class'</span>, <span class="literal">'olControlPanel'</span>);
|
348 |
|
|
var parentNode = objRef.getNode();
|
349 |
|
|
parentNode.appendChild(olPanelNode);
|
350 |
|
|
parentNode.innerHTML += <span class="literal">" "</span>;
|
351 |
|
|
}
|
352 |
|
|
var Panel = OpenLayers.Class( OpenLayers.Control.Panel, {
|
353 |
|
|
div: document.getElementById(objRef.panelHtmlTagId),
|
354 |
|
|
defaultControl: null,
|
355 |
|
|
destroy: <span class="reserved">function</span>() {
|
356 |
|
|
parentNode.removeChild(<span class="reserved">this</span>.div);
|
357 |
|
|
OpenLayers.Control.<span class="reserved">prototype</span>.destroy.apply(<span class="reserved">this</span>, arguments);
|
358 |
|
|
<span class="reserved">this</span>.div = null;
|
359 |
|
|
objRef.panel = null;
|
360 |
|
|
}
|
361 |
|
|
});
|
362 |
|
|
objRef.panel = new Panel();
|
363 |
|
|
objRef.targetContext.buttonBars[objRef.htmlTagId] = objRef.panel;
|
364 |
|
|
map.addControl(objRef.panel);
|
365 |
|
|
}
|
366 |
|
|
<span class="comment">
|
367 |
|
|
// add the control to the panel</span>
|
368 |
|
|
<span class="reserved">if</span> (OpenLayers.Util.indexOf(objRef.control, objRef.panel.controls) == -1) {
|
369 |
|
|
<span class="comment"> // we do not want to stop event propagation. So we save the original</span>
|
370 |
|
|
<span class="comment"> // Event.stop function...</span>
|
371 |
|
|
var originalStop = OpenLayers.Event.stop;
|
372 |
|
|
<span class="comment"> // and overwrite it with a new one...</span>
|
373 |
|
|
OpenLayers.Event.stop = <span class="reserved">function</span>(){};
|
374 |
|
|
<span class="comment"> // now, thanks to boxing, this one will be assigned in addControls...</span>
|
375 |
|
|
objRef.panel.addControls(objRef.control);
|
376 |
|
|
<span class="comment"> // and we can switch back to the original one.</span>
|
377 |
|
|
OpenLayers.Event.stop = originalStop;
|
378 |
|
|
}
|
379 |
|
|
<span class="comment">
|
380 |
|
|
// set tooltip for the button</span>
|
381 |
|
|
<span class="reserved">if</span> (objRef.tooltip) {
|
382 |
|
|
objRef.control.panel_div.title=objRef.tooltip;
|
383 |
|
|
}
|
384 |
|
|
<span class="comment">
|
385 |
|
|
//set default css style properties</span>
|
386 |
|
|
objRef.control.panel_div.style.backgroundImage = <span class="literal">"url(\"</span><span class="literal">"+objRef.disabledImage+"</span>\<span class="literal">")"</span>;
|
387 |
|
|
<span class="comment">
|
388 |
|
|
// activate the control if it is defined as selected in config</span>
|
389 |
|
|
<span class="reserved">if</span>(objRef.selected == true) {
|
390 |
|
|
objRef.control.activate();
|
391 |
|
|
}
|
392 |
|
|
}
|
393 |
|
|
|
394 |
|
|
<span class="comment">/**
|
395 |
|
|
* Set the target context for the button, initialise the
|
396 |
|
|
* buttonBars array in the context document and add a
|
397 |
|
|
* listener to the target model for adding controls
|
398 |
|
|
* to the OL map as soon as the map is initialized.
|
399 |
|
|
* <span class="attrib">@param</span> objRef Reference to this object.
|
400 |
|
|
*/</span>
|
401 |
|
|
<span class="reserved">this</span>.buttonInit = <span class="reserved">function</span>(objRef) {
|
402 |
|
|
<span class="comment"> //set the target context</span>
|
403 |
|
|
var targetContext = objRef.widgetNode.selectSingleNode(<span class="literal">"mb:targetContext"</span>);
|
404 |
|
|
<span class="reserved">if</span> (targetContext) {
|
405 |
|
|
objRef.targetContext = window.config.objects[getNodeValue(targetContext)];
|
406 |
|
|
<span class="reserved">if</span> ( !objRef.targetModel ) {
|
407 |
|
|
alert(mbGetMessage(<span class="literal">"noTargetContext"</span>, getNodeValue(targetContext), objRef.id));
|
408 |
|
|
}
|
409 |
|
|
} <span class="reserved">else</span> {
|
410 |
|
|
objRef.targetContext = objRef.targetModel;
|
411 |
|
|
}
|
412 |
|
|
<span class="comment">
|
413 |
|
|
// initialize button bars for the context</span>
|
414 |
|
|
<span class="reserved">if</span> (!objRef.targetContext.buttonBars) {
|
415 |
|
|
<span class="comment"> // this array in the context will hold all</span>
|
416 |
|
|
<span class="comment"> // buttonBars used by button widgets</span>
|
417 |
|
|
objRef.targetContext.buttonBars = new Array();
|
418 |
|
|
}
|
419 |
|
|
<span class="comment">
|
420 |
|
|
// add another event listener for the loaded context,</span>
|
421 |
|
|
<span class="comment"> // because we need the map to add panel and buttons,</span>
|
422 |
|
|
<span class="comment"> // and we do not have tha map yet</span>
|
423 |
|
|
objRef.targetContext.addListener(<span class="literal">"refresh"</span>, objRef.attachToOL, objRef);
|
424 |
|
|
}
|
425 |
|
|
|
426 |
|
|
<span class="reserved">this</span>.model.addListener(<span class="literal">"init"</span>,<span class="reserved">this</span>.buttonInit,<span class="reserved">this</span>);
|
427 |
|
|
<span class="reserved">this</span>.model.removeListener(<span class="literal">"newNodel"</span>, <span class="reserved">this</span>.clearWidget, <span class="reserved">this</span>);
|
428 |
|
|
}
|
429 |
|
|
</pre>
|
430 |
|
|
<hr>
|
431 |
|
|
|
432 |
|
|
|
433 |
|
|
|
434 |
|
|
<!-- ========== START OF NAVBAR ========== -->
|
435 |
|
|
<a name="navbar_top"><!-- --></a>
|
436 |
|
|
<table border="0" width="100%" cellpadding="1" cellspacing="0">
|
437 |
|
|
<tr>
|
438 |
|
|
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
|
439 |
|
|
<a name="navbar_top_firstrow"><!-- --></a>
|
440 |
|
|
<table border="0" cellpadding="0" cellspacing="3">
|
441 |
|
|
<tr align="center" valign="top">
|
442 |
|
|
|
443 |
|
|
|
444 |
|
|
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a> </td>
|
445 |
|
|
<td bgcolor="#FFFFFF" class="NavBarCell1Rev"> <font class="NavBarFont1Rev"><b>File</b></font> </td>
|
446 |
|
|
|
447 |
|
|
|
448 |
|
|
<td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font> </td>
|
449 |
|
|
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a> </td>
|
450 |
|
|
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a> </td>
|
451 |
|
|
<td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a> </td>
|
452 |
|
|
</tr>
|
453 |
|
|
</table>
|
454 |
|
|
</td>
|
455 |
|
|
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
|
456 |
|
|
<b><a href='http://mapbuilder.sourceforge.net'>Community Map Builder</a> 27 Apr 2008</b></em>
|
457 |
|
|
</td>
|
458 |
|
|
</tr>
|
459 |
|
|
|
460 |
|
|
<tr>
|
461 |
|
|
<td bgcolor="white" class="NavBarCell2"><font size="-2">
|
462 |
|
|
PREV
|
463 |
|
|
NEXT</font></td>
|
464 |
|
|
<td bgcolor="white" class="NavBarCell2"><font size="-2">
|
465 |
|
|
<a href="index.html" target="_top"><b>FRAMES</b></a>
|
466 |
|
|
<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
|
467 |
|
|
|
468 |
|
|
<script>
|
469 |
|
|
<!--
|
470 |
|
|
if(window==top) {
|
471 |
|
|
document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
|
472 |
|
|
}
|
473 |
|
|
//-->
|
474 |
|
|
</script>
|
475 |
|
|
<noscript>
|
476 |
|
|
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
|
477 |
|
|
</noscript>
|
478 |
|
|
</font></td>
|
479 |
|
|
</tr>
|
480 |
|
|
</table>
|
481 |
|
|
<!-- =========== END OF NAVBAR =========== -->
|
482 |
|
|
|
483 |
|
|
<hr>
|
484 |
|
|
<font size="-1">
|
485 |
|
|
|
486 |
|
|
</font>
|
487 |
|
|
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Sun Apr 27 20:30:54 2008</div>
|
488 |
|
|
</body>
|
489 |
|
|
</html>
|