Project

General

Profile

1
/*
2
Author:       Mike Adair  mike.adairATccrs.nrcan.gc.ca
3
License:      LGPL as per: http://www.gnu.org/copyleft/lesser.html
4

    
5
$Id$
6
*/
7

    
8
// Ensure this object's dependancies are loaded.
9
mapbuilder.loadScript(baseDir+"/tool/ToolBase.js");
10

    
11
/**
12
 * Tool which manipulates the Layer list of a Web Map Context document.
13
 * @constructor
14
 * @base ToolBase
15
 * @param toolNode  The widget's XML object node from the configuration document.
16
 * @param model       The model object that this widget belongs to.
17
 */
18
function EditContext(toolNode, model) {
19
  ToolBase.apply(this, new Array(toolNode, model));
20

    
21
  var styleUrl = baseDir+"/tool/xsl/wmc_AddResource.xsl";   //TBD figure out a way to set this for other operations
22
  this.stylesheet = new XslProcessor(styleUrl);
23

    
24
  // Set stylesheet parameters for all the child nodes from the config file
25
  for (var j=0;j<toolNode.childNodes.length;j++) {
26
    if (toolNode.childNodes[j].firstChild && toolNode.childNodes[j].firstChild.nodeValue) {
27
      this.stylesheet.setParameter(toolNode.childNodes[j].nodeName,toolNode.childNodes[j].firstChild.nodeValue);
28
    }
29
  }
30

    
31
  /**
32
   * Adds a new layer to the end of the context document
33
   * @param featureName the name of the feature to be added
34
   */
35
  this.addNodeToModel = function(featureName) {
36
    var feature = this.model.getFeatureNode(featureName);
37
    this.stylesheet.setParameter("version", this.model.getVersion() );
38
    this.stylesheet.setParameter("serverUrl", this.model.getServerUrl("GetMap","get") );
39
    this.stylesheet.setParameter("serverTitle", this.model.getServerTitle() );
40
    this.stylesheet.setParameter("serviceName", "wms");//this.model.getServiceName() );
41
    this.stylesheet.setParameter("format", this.model.getImageFormat() );
42
    var newNode = this.stylesheet.transformNodeToObject(feature);
43
    Sarissa.setXpathNamespaces(newNode, this.targetModel.namespace);
44
    if (this.debug) alert(newNode.xml);
45
    this.targetModel.setParam('addLayer',newNode.documentElement);
46
  }
47

    
48
  /**
49
   * Adds a new layer to the end of the context document
50
   * @param featureName the name of the feature to be added
51
   */
52
  this.addLayerFromCat = function(featureName) {
53
    var feature = this.model.getFeatureNode(featureName);
54
    var newNode = this.stylesheet.transformNodeToObject(feature);
55
    Sarissa.setXpathNamespaces(newNode, this.targetModel.namespace);
56
    if (this.debug) alert(newNode.xml);
57
    this.targetModel.setParam('addLayer',newNode.documentElement);
58
  }
59

    
60
  /**
61
   * Reorders layers in the context document
62
   * @param objRef Pointer to this object.
63
   */
64
  this.moveNode = function(objRef, featureName) {
65
    //TBD
66
  }
67
  this.model.addListener("MoveNode", this.addNodeToModel, this);
68

    
69
  /**
70
   * Deletes layers from a context doc
71
   * @param objRef Pointer to this object.
72
   */
73
  this.deleteNode = function(objRef, featureName) {
74
    //TBD
75
  }
76
  this.model.addListener("DeleteNode", this.addNodeToModel, this);
77

    
78
}
(4-4/12)