wisemapping-open-source/mindplot/src/main/javascript/BoardEntry.js

141 lines
4.3 KiB
JavaScript
Raw Normal View History

/*
2011-07-27 13:25:10 +02:00
* Copyright [2011] [wisemapping]
*
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
* It is basically the Apache License, Version 2.0 (the "License") plus the
* "powered by wisemapping" text requirement on every single page;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the license at
*
* http://www.wisemapping.org/license
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
mindplot.BoardEntry = new Class({
initialize:function(lowerLimit, upperLimit, order) {
if ($defined(lowerLimit) && $defined(upperLimit)) {
$assert(lowerLimit < upperLimit, 'lowerLimit can not be greater that upperLimit');
2011-07-27 13:25:10 +02:00
}
this._upperLimit = upperLimit;
this._lowerLimit = lowerLimit;
this._order = order;
this._topic = null;
this._xPos = null;
},
getUpperLimit : function() {
return this._upperLimit;
},
setXPosition : function(xPosition) {
this._xPos = xPosition;
},
workoutEntryYCenter : function() {
return this._lowerLimit + ((this._upperLimit - this._lowerLimit) / 2);
},
setUpperLimit : function(value) {
2011-07-27 19:53:32 +02:00
$assert(value, "upper limit can not be null");
$assert(!isNaN(value), "illegal value");
2011-07-27 13:25:10 +02:00
this._upperLimit = value;
},
isCoordinateIn : function(coord) {
return this._lowerLimit <= coord && coord < this._upperLimit;
},
getLowerLimit : function() {
return this._lowerLimit;
},
setLowerLimit : function(value) {
2011-07-27 19:53:32 +02:00
$assert(value, "upper limit can not be null");
$assert(!isNaN(value), "illegal value");
2011-07-27 13:25:10 +02:00
this._lowerLimit = value;
},
setOrder : function(value) {
this._order = value;
},
getWidth : function() {
return Math.abs(this._upperLimit - this._lowerLimit);
},
2009-06-07 20:59:43 +02:00
2011-07-27 13:25:10 +02:00
getTopic : function() {
return this._topic;
},
removeTopic : function() {
$assert(!this.isAvailable(), "Entry doesn't have a topic.");
2011-07-27 13:25:10 +02:00
var topic = this.getTopic();
this.setTopic(null);
topic.setOrder(null);
},
update : function() {
var topic = this.getTopic();
this.setTopic(topic);
},
setTopic : function(topic, updatePosition) {
if (!$defined(updatePosition) || ($defined(updatePosition) && !updatePosition)) {
2011-07-27 13:25:10 +02:00
updatePosition = true;
2009-06-07 20:59:43 +02:00
}
2011-07-27 13:25:10 +02:00
this._topic = topic;
if ($defined(topic)) {
2011-07-27 13:25:10 +02:00
// Fixed positioning. Only for main topic ...
var position = null;
var topicPosition = topic.getPosition();
// Must update position base on the border limits?
if ($defined(this._xPos)) {
2011-07-27 13:25:10 +02:00
position = new core.Point();
// Update x position ...
var topicSize = topic.getSize();
var halfTopicWidh = parseInt(topicSize.width / 2);
halfTopicWidh = (this._xPos > 0) ? halfTopicWidh : -halfTopicWidh;
position.x = this._xPos + halfTopicWidh;
position.y = this.workoutEntryYCenter();
} else {
// Central topic
this._height = topic.getSize().height;
var xPos = topicPosition.x;
var yPos = this.workoutEntryYCenter();
position = new core.Point(xPos, yPos);
}
// @todo: No esta de mas...
topic.setPosition(position);
topic.setOrder(this._order);
}
else {
this._height = this._defaultWidth;
}
},
isAvailable : function() {
return !$defined(this._topic);
2011-07-27 13:25:10 +02:00
},
getOrder : function() {
return this._order;
},
inspect : function() {
return '(order: ' + this._order + ', lowerLimit:' + this._lowerLimit + ', upperLimit: ' + this._upperLimit + ', available:' + this.isAvailable() + ')';
2009-06-07 20:59:43 +02:00
}
2011-07-27 13:25:10 +02:00
});