mirror of
https://github.com/haiwen/seahub.git
synced 2025-08-20 07:55:06 +00:00
122 lines
2.3 KiB
JavaScript
122 lines
2.3 KiB
JavaScript
|
define([
|
||
|
'aloha/core',
|
||
|
'jquery',
|
||
|
'util/class'
|
||
|
], function (
|
||
|
Aloha,
|
||
|
$,
|
||
|
Class
|
||
|
) {
|
||
|
'use strict';
|
||
|
|
||
|
var idCounter = 0;
|
||
|
|
||
|
/**
|
||
|
* Component class and manager.
|
||
|
*
|
||
|
* This implementation constitues the base of all UI components (buttons,
|
||
|
* and labels). The `Component' constructor object, with its static
|
||
|
* properties and functions, manages all components instances.
|
||
|
*
|
||
|
* @class
|
||
|
* @base
|
||
|
*/
|
||
|
var Component = Class.extend({
|
||
|
|
||
|
id: 0,
|
||
|
|
||
|
/**
|
||
|
* Flag to indicate that this is an instance of a component and not the class object.
|
||
|
*/
|
||
|
isInstance: true,
|
||
|
|
||
|
/**
|
||
|
* The Container instance or null if this component was not
|
||
|
* adopted by a counter by calling Component.adopt().
|
||
|
*/
|
||
|
container: null,
|
||
|
|
||
|
/**
|
||
|
* Will be set in Component.define()
|
||
|
*/
|
||
|
type: null,
|
||
|
|
||
|
/**
|
||
|
* @type {boolean} Whether or not this component is visible.
|
||
|
*/
|
||
|
visible: true,
|
||
|
|
||
|
/**
|
||
|
* The type property is set in Component.define(), so components should only ever be instantiated through define.
|
||
|
* @constructor
|
||
|
*/
|
||
|
_constructor: function () {
|
||
|
this.id = idCounter++;
|
||
|
this.init();
|
||
|
},
|
||
|
|
||
|
adoptParent: function (container) {
|
||
|
this.container = container;
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Initializes this component. To be implemented in subclasses.
|
||
|
*/
|
||
|
init: function () {},
|
||
|
|
||
|
isVisible: function () {
|
||
|
return this.visible;
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Shows this component.
|
||
|
*/
|
||
|
show: function (show_opt) {
|
||
|
if (false === show_opt) {
|
||
|
this.hide();
|
||
|
return;
|
||
|
}
|
||
|
// Only call container.childVisible if we switch from hidden to visible
|
||
|
if (!this.visible) {
|
||
|
this.visible = true;
|
||
|
this.element.show();
|
||
|
if (this.container) {
|
||
|
this.container.childVisible(this, true);
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Hides this component.
|
||
|
*/
|
||
|
hide: function () {
|
||
|
// Only call container.childVisible if we switch from visible to hidden
|
||
|
if (this.visible) {
|
||
|
this.visible = false;
|
||
|
this.element.hide();
|
||
|
if (this.container) {
|
||
|
this.container.childVisible(this, false);
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
focus: function () {
|
||
|
this.element.focus();
|
||
|
if (this.container) {
|
||
|
this.container.childFocus(this);
|
||
|
}
|
||
|
},
|
||
|
|
||
|
foreground: function () {
|
||
|
if (this.container) {
|
||
|
this.container.childForeground(this);
|
||
|
}
|
||
|
},
|
||
|
|
||
|
enable: function (enable_opt) {},
|
||
|
disable: function () {}
|
||
|
});
|
||
|
|
||
|
return Component;
|
||
|
});
|