@qooxdoo/framework
Version:
The JS Framework for Coders
212 lines (173 loc) • 5.03 kB
JavaScript
/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
2004-2009 1&1 Internet AG, Germany, http://www.1und1.de
License:
MIT: https://opensource.org/licenses/MIT
See the LICENSE file in the project's top-level directory for details.
Authors:
* Fabian Jakobs (fjakobs)
************************************************************************ */
/**
* EXPERIMENTAL!
*
* Abstract base class for the {@link Row} and {@link Column} layers.
*/
qx.Class.define("qx.ui.virtual.layer.AbstractBackground",
{
extend : qx.ui.virtual.layer.Abstract,
/*
*****************************************************************************
CONSTRUCTOR
*****************************************************************************
*/
/**
* @param colorEven {Color?null} color for even indexes
* @param colorOdd {Color?null} color for odd indexes
*/
construct : function(colorEven, colorOdd)
{
this.base(arguments);
if (colorEven) {
this.setColorEven(colorEven);
}
if (colorOdd) {
this.setColorOdd(colorOdd);
}
this.__customColors = {};
this.__decorators = {};
},
/*
*****************************************************************************
PROPERTIES
*****************************************************************************
*/
properties :
{
/** color for event indexes */
colorEven :
{
nullable : true,
check : "Color",
apply : "_applyColorEven",
themeable : true
},
/** color for odd indexes */
colorOdd :
{
nullable : true,
check : "Color",
apply : "_applyColorOdd",
themeable : true
}
},
/*
*****************************************************************************
MEMBERS
*****************************************************************************
*/
members :
{
__colorEven : null,
__colorOdd : null,
__customColors : null,
__decorators : null,
/*
---------------------------------------------------------------------------
COLOR HANDLING
---------------------------------------------------------------------------
*/
/**
* Sets the color for the given index
*
* @param index {Integer} Index to set the color for
* @param color {Color|null} the color to set. A value of <code>null</code>
* will reset the color.
*/
setColor : function(index, color)
{
if (color) {
this.__customColors[index] = qx.theme.manager.Color.getInstance().resolve(color);
} else {
delete(this.__customColors[index]);
}
},
/**
* Clear all colors set using {@link #setColor}.
*/
clearCustomColors : function()
{
this.__customColors = {};
this.updateLayerData();
},
/**
* Get the color at the given index
*
* @param index {Integer} The index to get the color for.
* @return {Color} The color at the given index
*/
getColor : function(index)
{
var customColor = this.__customColors[index];
if (customColor) {
return customColor;
} else {
return index % 2 == 0 ? this.__colorEven : this.__colorOdd;
}
},
// property apply
_applyColorEven : function(value, old)
{
if (value) {
this.__colorEven = qx.theme.manager.Color.getInstance().resolve(value);
} else {
this.__colorEven = null;
}
this.updateLayerData();
},
// property apply
_applyColorOdd : function(value, old)
{
if (value) {
this.__colorOdd = qx.theme.manager.Color.getInstance().resolve(value);
} else {
this.__colorOdd = null;
}
this.updateLayerData();
},
/**
* Sets the decorator for the given index
*
* @param index {Integer} Index to set the color for
* @param decorator {qx.ui.decoration.IDecorator|null} the decorator to set. A value of
* <code>null</code> will reset the decorator.
*/
setBackground : function(index, decorator)
{
if (decorator) {
this.__decorators[index] = qx.theme.manager.Decoration.getInstance().resolve(decorator);
} else {
delete(this.__decorators[index]);
}
this.updateLayerData();
},
/**
* Get the decorator at the given index
*
* @param index {Integer} The index to get the decorator for.
* @return {qx.ui.decoration.IDecorator} The decorator at the given index
*/
getBackground : function(index) {
return this.__decorators[index];
}
},
/*
*****************************************************************************
DESTRUCT
*****************************************************************************
*/
destruct : function() {
this.__customColors = this.__decorators = null;
}
});