Path: blob/master/webroot/rsrc/js/phuix/PHUIXButtonView.js
12241 views
/**1* @provides phuix-button-view2* @requires javelin-install3* javelin-dom4*/5JX.install('PHUIXButtonView', {67statics: {8BUTTONTYPE_DEFAULT: 'buttontype.default',9BUTTONTYPE_SIMPLE: 'buttontype.simple'10},1112members: {13_node: null,14_textNode: null,15_auralNode: null,1617_iconView: null,18_color: null,19_selected: null,20_buttonType: null,2122setIcon: function(icon) {23this.getIconView().setIcon(icon);24return this;25},2627getIconView: function() {28if (!this._iconView) {29this._iconView = new JX.PHUIXIconView();30this._redraw();31}32return this._iconView;33},3435setColor: function(color) {36var node = this.getNode();3738if (this._color) {39JX.DOM.alterClass(node, 'button-' + this._color, false);40}41this._color = color;42JX.DOM.alterClass(node, 'button-' + this._color, true);4344return this;45},4647setSelected: function(selected) {48var node = this.getNode();49this._selected = selected;50JX.DOM.alterClass(node, 'selected', this._selected);51return this;52},5354setButtonType: function(button_type) {55var self = JX.PHUIXButtonView;5657this._buttonType = button_type;58var node = this.getNode();5960var is_simple = (this._buttonType == self.BUTTONTYPE_SIMPLE);61JX.DOM.alterClass(node, 'phui-button-simple', is_simple);6263return this;64},6566setText: function(text) {67JX.DOM.setContent(this._getTextNode(), text);68this._redraw();69return this;70},7172setAuralLabel: function(label) {73JX.DOM.setContent(this._getAuralNode(), label);74this._redraw();75return this;76},7778getNode: function() {79if (!this._node) {80var attrs = {81className: 'button'82};8384this._node = JX.$N('button', attrs);8586this._redraw();87}8889return this._node;90},9192_getTextNode: function() {93if (!this._textNode) {94var attrs = {95className: 'phui-button-text'96};9798this._textNode = JX.$N('div', attrs);99}100101return this._textNode;102},103104_getAuralNode: function() {105if (!this._auralNode) {106var attrs = {107className: 'aural-only'108};109110this._auralNode = JX.$N('span', attrs);111}112113return this._auralNode;114},115116_redraw: function() {117var node = this.getNode();118119var aural = this._auralNode;120var icon = this._iconView;121var text = this._textNode;122123var content = [];124125if (aural) {126content.push(aural);127}128129if (icon) {130content.push(icon.getNode());131}132133if (text) {134content.push(text);135}136137JX.DOM.alterClass(node, 'has-icon', !!icon);138JX.DOM.alterClass(node, 'has-text', !!text);139JX.DOM.setContent(node, content);140}141}142143});144145146