/*!
* UI development toolkit for HTML5 (OpenUI5)
* (c) Copyright 2009-2018 SAP SE or an SAP affiliate company.
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
*/
// Provides control sap.m.SegmentedButtonItem.
sap.ui.define(['./library', 'sap/ui/core/Item', 'sap/m/Button', 'sap/ui/core/CustomStyleClassSupport'],
function(library, Item, Button, CustomStyleClassSupport) {
"use strict";
/**
* Constructor for a new SegmentedButtonItem
.
*
* @param {string} [sId] ID for the new control, generated automatically if no ID is given
* @param {object} [mSettings] Initial settings for the new control
*
* @class
* Used for creating buttons for the {@link sap.m.SegmentedButton}.
* It is derived from the {@link sap.ui.core.Item}.
* @extends sap.ui.core.Item
*
* @author SAP SE
* @version 1.60.23
*
* @constructor
* @public
* @since 1.28
* @alias sap.m.SegmentedButtonItem
* @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel
*/
var SegmentedButtonItem = Item.extend("sap.m.SegmentedButtonItem", /** @lends sap.m.SegmentedButtonItem.prototype */ { metadata : {
library : "sap.m",
properties : {
/**
* The icon, which belongs to the button.
* This can be a URI to an image or an icon font URI.
*/
icon : {type : "string", group : "Appearance", defaultValue : null},
/**
* Whether the button should be visible on the screen. If set to false, a placeholder is rendered instead of the real button.
*/
visible : {type: "boolean", group : "Appearance", defaultValue: true},
/**
* Sets the width of the buttons.
*/
width : {type : "sap.ui.core.CSSSize", group : "Dimension", defaultValue : null}
},
events: {
/**
* Fires when the user clicks on an individual button.
*/
press : {}
}
}});
// Add custom style class support
CustomStyleClassSupport.apply(SegmentedButtonItem.prototype);
/**
* Called once during the element's initialization
* @override
* @protected
*/
SegmentedButtonItem.prototype.init = function () {
// Create internal button with a stable ID
var oButton = new Button(this.getId() + "-button");
// Create objects first so they can be referenced in the button
this.aCustomStyleClasses;
this.mCustomStyleClassMap;
// Reference's between button and item objects related to customStyleClasses so they will be in sync
oButton.aCustomStyleClasses = this.aCustomStyleClasses;
oButton.mCustomStyleClassMap = this.mCustomStyleClassMap;
// Attach CustomData and LayoutData function copy's with bound context to the button
oButton.getCustomData = this.getCustomData.bind(this);
oButton.getLayoutData = this.getLayoutData.bind(this);
// Hook on firePress method of the button so we can fire local press event also
oButton.firePress = function () {
this.firePress();
Button.prototype.firePress.call(oButton);
}.bind(this);
// We return DOM reference from the button so for example CustomData.setKey method checks
// for parent DOM reference and does a live update only of the attribute.
this.getDomRef = oButton.getDomRef.bind(oButton);
// Keep in mind that we are using property instead of private aggregation because
// we need to add this button to the SegmentedButton buttons aggregation
this.oButton = oButton;
};
/**
* Cleanup
* @override
* @protected
*/
SegmentedButtonItem.prototype.exit = function () {
if (this.oButton) {
this.oButton.destroy();
this.oButton = null;
}
};
SegmentedButtonItem.prototype.setText = function (sValue) {
this.setProperty("text", sValue, true);
if (this.oButton) {
this.oButton.setText(this.getText());
}
return this;
};
SegmentedButtonItem.prototype.setIcon = function (sValue) {
this.setProperty("icon", sValue, true);
if (this.oButton) {
this.oButton.setIcon(this.getIcon());
}
return this;
};
SegmentedButtonItem.prototype.setEnabled = function (bValue) {
this.setProperty("enabled", bValue, true);
if (this.oButton) {
this.oButton.setEnabled(this.getEnabled());
}
return this;
};
SegmentedButtonItem.prototype.setTextDirection = function (sValue) {
this.setProperty("textDirection", sValue, true);
if (this.oButton) {
this.oButton.setTextDirection(this.getTextDirection());
}
return this;
};
SegmentedButtonItem.prototype.setVisible = function (bVisible) {
this.setProperty("visible", bVisible, true);
if (this.oButton) {
this.oButton.setVisible(bVisible);
}
return this;
};
SegmentedButtonItem.prototype.setWidth = function (sValue) {
this.setProperty("width", sValue, true);
if (this.oButton) {
this.oButton.setWidth(this.getWidth());
}
return this;
};
SegmentedButtonItem.prototype.setTooltip = function (sValue) {
this.setAggregation("tooltip", sValue, true);
if (this.oButton) {
this.oButton.setTooltip(sValue);
}
return this;
};
return SegmentedButtonItem;
});