mirror of
https://github.com/haiwen/seahub.git
synced 2025-08-18 15:08:22 +00:00
* textcolor: fixed plugin bugs, added translation for zh * image: fixed default.jpg src bug * added 'ru' support for seaf edit * rm aloha-0.22.3 and ununsed files in aloha-0.22.7
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;
|
|
});
|