@openui5/sap.ui.core
Version:
OpenUI5 Core Library sap.ui.core
188 lines (157 loc) • 5.21 kB
JavaScript
/*!
* OpenUI5
* (c) Copyright 2009-2023 SAP SE or an SAP affiliate company.
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
*/
// Provides control sap.ui.core.Message.
sap.ui.define(['./Element', './library', "sap/base/Log", "sap/ui/core/Configuration"],
function(Element, library, Log, Configuration) {
"use strict";
// shortcut
var MessageType = library.MessageType;
/**
* Constructor for a new Message.
*
* @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
* This element is used to provide messages.
*
* Rendering must be done within the control that uses this kind of element. Its default level is none.
* @extends sap.ui.core.Element
*
* @author SAP SE
* @version 1.111.5
*
* @public
* @alias sap.ui.core.Message
*/
var Message = Element.extend("sap.ui.core.Message", /** @lends sap.ui.core.Message.prototype */ { metadata : {
library : "sap.ui.core",
properties : {
/**
* Message text
*/
text : {type : "string", group : "Misc", defaultValue : null},
/**
* Message's timestamp. It is just a simple String that will be used without any transformation. So the application that uses messages needs to format the timestamp to its own needs.
*/
timestamp : {type : "string", group : "Misc", defaultValue : null},
/**
* A possible icon URI of the message
*/
icon : {type : "sap.ui.core.URI", group : "Misc", defaultValue : null},
/**
* Setting the message's level.
*/
level : {type : "sap.ui.core.MessageType", group : "Misc", defaultValue : MessageType.None},
/**
* Determines whether the message should be read only. This helps the application to handle a message a different way if the application differentiates between read-only and common messages.
* @since 1.19.0
*/
readOnly : {type : "boolean", group : "Misc", defaultValue : false}
}
}});
/**
* Returns the icon's default URI depending on given size.
*
* @param {string} [sSize="16x16"] Only the values "16x16" or "32x32" are allowed. Otherwise the default value is used.
* @return {sap.ui.core.URI} URI of the default icon.
* @public
*/
Message.prototype.getDefaultIcon = function(sSize) {
var sModulePath = sap.ui.require.toUrl("sap/ui/core/themes/" + Configuration.getTheme());
var sImagesPath = sModulePath + "/img/message/";
if (sSize && sSize == "32x32") {
sImagesPath += "32x32/";
} else {
sImagesPath += "16x16/";
}
var sUrl = "";
switch (this.getProperty("level")) {
case MessageType.Error:
sUrl = sImagesPath + "Message_Icon_Error.png";
break;
case MessageType.Information:
sUrl = sImagesPath
+ "Message_Icon_Information.png";
break;
case MessageType.Warning:
sUrl = sImagesPath + "Message_Icon_Warning.png";
break;
case MessageType.Success:
sUrl = sImagesPath + "Message_Icon_Success.png";
break;
case MessageType.None:
default:
sUrl = this.getProperty("icon");
break;
}
return sUrl;
};
/**
* Compares the given message with <code>this</code> message. The types of
* {@link sap.ui.core.MessageType} are ordered from "Error" > "Warning" > "Success" >
* "Information" > "None".
*
* See {@link sap.ui.core.Message.compareByType}
*
* @param {sap.ui.core.Message} oOther message to compare with this one
* @return {int} returns <code>0</code> if both messages are at
* the same level. <code>-1</code> if <code>this</code>
* message has a lower level. <code>1</code> if <code>this</code>
* message has a higher level.
* @public
*/
Message.prototype.compareByType = function(oOther) {
return Message.compareByType(this, oOther);
};
/**
* Compares two given messages with each other.
*
* The types of {@link sap.ui.core.MessageType} are ordered from "Error" > "Warning" > "Success" >
* "Information" > "None".
*
* @param {sap.ui.core.Message} oMessage1 first message to compare
* @param {sap.ui.core.Message} oMessage2 second message to compare
* @return {int} returns <code>0</code> if both messages are at
* the same level. <code>-1</code> if <code>this</code>
* message has a lower level. <code>1</code> if <code>this</code>
* message has a higher level.
* @static
* @public
*/
Message.compareByType = function(oMessage1, oMessage2) {
if (!oMessage1 && !oMessage2) {
return 0;
}
if (oMessage1 && !oMessage2) {
return 1;
}
if (!oMessage1 && oMessage2) {
return -1;
}
var sLvl1 = oMessage1.getLevel();
var sLvl2 = oMessage2.getLevel();
if (sLvl1 === sLvl2) {
return 0;
}
switch (sLvl1) {
case MessageType.Error:
return 1;
case MessageType.Warning:
return sLvl2 === MessageType.Error ? -1 : 1;
case MessageType.Success:
return sLvl2 === MessageType.Error || sLvl2 === MessageType.Warning ? -1 : 1;
case MessageType.Information:
return sLvl2 === MessageType.None ? 1 : -1;
case MessageType.None:
return -1;
default:
Log.error("Comparison error", this);
return 0;
}
};
return Message;
});