/**
|
|
A control designed to display a group of stacked items, typically used in
|
|
lists. Items are displayed with small guide lines between them; by default,
|
|
they are highlighted when tapped. Set *tapHighlight* to false to prevent the
|
|
highlighting.
|
|
|
|
{kind: "onyx.Item", tapHighlight: false}
|
|
*/
|
|
enyo.kind({
|
|
name: "onyx.Item",
|
|
classes: "onyx-item",
|
|
tapHighlight: true,
|
|
handlers: {
|
|
onhold: "hold",
|
|
onrelease: "release"
|
|
},
|
|
//* @public
|
|
hold: function(inSender, inEvent) {
|
|
if (this.tapHighlight) {
|
|
onyx.Item.addFlyweightClass(this.controlParent || this, "onyx-highlight", inEvent);
|
|
}
|
|
},
|
|
//* @public
|
|
release: function(inSender, inEvent) {
|
|
if (this.tapHighlight) {
|
|
onyx.Item.removeFlyweightClass(this.controlParent || this, "onyx-highlight", inEvent);
|
|
}
|
|
},
|
|
//* @protected
|
|
statics: {
|
|
addFlyweightClass: function(inControl, inClass, inEvent, inIndex) {
|
|
var flyweight = inEvent.flyweight;
|
|
if (flyweight) {
|
|
var index = inIndex != undefined ? inIndex : inEvent.index;
|
|
flyweight.performOnRow(index, function() {
|
|
if (!inControl.hasClass(inClass)) {
|
|
inControl.addClass(inClass);
|
|
} else {
|
|
inControl.setClassAttribute(inControl.getClassAttribute());
|
|
}
|
|
});
|
|
inControl.removeClass(inClass);
|
|
}
|
|
},
|
|
// FIXME: dry
|
|
removeFlyweightClass: function(inControl, inClass, inEvent, inIndex) {
|
|
var flyweight = inEvent.flyweight;
|
|
if (flyweight) {
|
|
var index = inIndex != undefined ? inIndex : inEvent.index;
|
|
flyweight.performOnRow(index, function() {
|
|
if (!inControl.hasClass(inClass)) {
|
|
inControl.setClassAttribute(inControl.getClassAttribute());
|
|
} else {
|
|
inControl.removeClass(inClass);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
});
|