add node drawing + dragging & highlight selected way using stylesheet
[potlatch2.git] / net / systemeD / halcyon / connection / Way.as
1 package net.systemeD.halcyon.connection {
2
3     public class Way extends Entity {
4         private var nodes:Array;
5                 public static var entity_type:String = 'way';
6
7         public function Way(id:Number, version:uint, tags:Object, nodes:Array) {
8             super(id, version, tags);
9             this.nodes = nodes;
10             for each(var node:Node in nodes)
11                 node.registerAddedToWay(this);
12         }
13
14         public function get length():uint {
15             return nodes.length;
16         }
17         
18         public function getNode(index:uint):Node {
19             return nodes[index];
20         }
21
22         public function insertNode(index:uint, node:Node):void {
23             nodes.splice(index, 0, node);
24             node.registerAddedToWay(this);
25         }
26
27         public function appendNode(node:Node):uint {
28             nodes.push(node);
29             node.registerAddedToWay(this);
30             return nodes.length;
31         }
32
33         public function removeNode(index:uint):void {
34             var splicedNodes:Array = nodes.splice(index, 1);
35             splicedNodes[0].registerRemovedFromWay(this);
36         }
37
38         public override function toString():String {
39             return "Way("+id+"@"+version+"): "+getTagList()+
40                      " "+nodes.map(function(item:Node,index:int, arr:Array):String {return item.id.toString();}).join(",");
41         }
42
43                 public function isArea():Boolean {
44                         return (nodes[0].id==nodes[nodes.length-1].id && nodes.length>2);
45                 }
46
47                 public override function getType():String {
48                         return 'way';
49                 }
50     }
51
52 }