You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
2.6 KiB
132 lines
2.6 KiB
/* |
|
DynAPI Distribution |
|
Stacker Class |
|
|
|
Created by Daniel Tiru (http://www.tiru.se) |
|
|
|
The DynAPI Distribution is distributed under the terms of the GNU LGPL license. |
|
*/ |
|
|
|
function Stacker(){ |
|
this.objects=[]; |
|
this.intSpace=5; |
|
this.alignment='v'; |
|
}; |
|
var p = Stacker.prototype; |
|
|
|
p.add=function(src){ |
|
this.objects[this.objects.length]=src; |
|
me = this; |
|
src.addEventListener({ |
|
onresize:function(e){ |
|
me.generate(); |
|
} |
|
}); |
|
this.generate(); |
|
}; |
|
|
|
p.toString=function() { |
|
return this.objects; |
|
}; |
|
|
|
p.remove=function(src){ |
|
var i; |
|
for (i = 0; i < this.objects.length; i++) { |
|
if (src == this.objects[i]) { |
|
this.objects.splice(i,1); |
|
if (this.objects.length>0) { |
|
this.firstObject=this.objects[0]; |
|
} |
|
else { |
|
this.firstObject=null; |
|
} |
|
} |
|
} |
|
}; |
|
|
|
p.setSpace = function(inint) { |
|
this.intSpace = inint; |
|
}; |
|
|
|
p.getSpace = function() { |
|
return this.intSpace; |
|
}; |
|
|
|
p.setAlignment = function(instr) { |
|
if (instr=='h') { |
|
this.alignment='h'; |
|
} |
|
else { |
|
this.alignment='v'; |
|
} |
|
}; |
|
|
|
p.setPosition = function(x,y) { |
|
if (x!=null &&y!=null) { |
|
this.x=x; |
|
this.y=y; |
|
if (!this.firstObject&&this.objects.length!=0) { |
|
this.firstObject=this.objects[0]; |
|
this.firstObject.setX(this.x); |
|
this.firstObject.setY(this.y); |
|
} |
|
} |
|
}; |
|
|
|
p.getX = function() { |
|
return this.x; |
|
}; |
|
|
|
p.getY = function() { |
|
return this.y; |
|
}; |
|
|
|
p.getFirstObject = function() { |
|
return this.firstObject; |
|
}; |
|
|
|
p.move = function(src,pos) { |
|
var i; |
|
if (src!=null&&pos!=null) { |
|
for (i = 0; i < this.objects.length; i++) { |
|
if (src == this.objects[i]) { |
|
tmpPosFrom = i; |
|
tmpPosDest = tmpPosFrom+pos; |
|
} |
|
} |
|
if (tmpPosDest!=null) { |
|
if (tmpPosDest>=0&&tmpPosDest<=this.objects.length) { |
|
this.objects[tmpPosFrom] = this.objects[tmpPosDest]; |
|
this.objects[tmpPosDest] = src; |
|
if (this.objects.length!=0&&this.y!=null&&this.x!=null) { |
|
this.firstObject=this.objects[0]; |
|
this.firstObject.setX(this.x); |
|
this.firstObject.setY(this.y); |
|
} |
|
} |
|
} |
|
} |
|
}; |
|
|
|
p.generate = function() { |
|
var i; |
|
if (!this.firstObject&&this.objects.length!=0&&this.y!=null&&this.x!=null) { |
|
this.firstObject=this.objects[0]; |
|
this.firstObject.setX(this.x); |
|
this.firstObject.setY(this.y); |
|
} |
|
if (this.alignment=='v') { |
|
for (i = 1; i < this.objects.length; i++) |
|
{ |
|
this.objects[i].setY(this.objects[i-1].getY()+this.objects[i-1].getHeight()+this.intSpace); |
|
this.objects[i].setX(this.objects[i-1].getX()); |
|
} |
|
} |
|
else { |
|
for (i = 1; i < this.objects.length; i++) |
|
{ |
|
this.objects[i].setX(this.objects[i-1].getX()+this.objects[i-1].getWidth()+this.intSpace); |
|
this.objects[i].setY(this.objects[i-1].getY()); |
|
} |
|
} |
|
}; |