Project

General

Profile

1
<!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>&nbsp;</td>
29
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
30
  
31

    
32
  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
33
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
34
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
35
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</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
&nbsp;PREV&nbsp;
48
&nbsp;NEXT</font></td>
49
<td bgcolor="white" class="NavBarCell2"><font size="-2">
50
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
51
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
52
&nbsp;&nbsp;
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>&nbsp;</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&lt;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 &amp;&amp; (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>&nbsp;</td>
445
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
446
  
447

    
448
  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
449
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
450
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
451
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</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
&nbsp;PREV&nbsp;
463
&nbsp;NEXT</font></td>
464
<td bgcolor="white" class="NavBarCell2"><font size="-2">
465
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
466
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
467
&nbsp;&nbsp;
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>
(219-219/316)