UNPKG

kekule

Version:

Open source JavaScript toolkit for chemoinformatics

128 lines (116 loc) 3.59 kB
/** * @fileoverview * A special message panel group to display system exception informations. * @author Partridge Jiang */ /* * requires /lan/classes.js * requires /common/kekule.exceptions.js * requires /utils/kekule.utils.js * requires /utils/kekule.domUtils.js * requires /xbrowsers/kekule.x.js * requires /widgets/kekule.widget.base.js * requires /widgets/commonCtrls/kekulw.widget.msgPanels.js */ (function(){ "use strict"; var EU = Kekule.HtmlElementUtils; var CNS = Kekule.Widget.HtmlClassNames; /** @ignore */ Kekule.Widget.HtmlClassNames = Object.extend(Kekule.Widget.HtmlClassNames, { SYSMSGGROUP: 'K-SysMsgGroup' }); /** * An message group to display special system message (mainly Kekule exceptions). * @class * @augments Kekule.Widget.MsgGroup */ Kekule.Widget.SysMsgGroup = Class.create(Kekule.Widget.MsgGroup, /** @lends Kekule.Widget.SysMsgGroup# */ { /** @private */ CLASS_NAME: 'Kekule.Widget.SysMsgGroup', /** @constructs */ initialize: function(/*$super, */parentOrElementOrDocument) { this.tryApplySuper('initialize', [parentOrElementOrDocument]) /* $super(parentOrElementOrDocument) */; }, /** @ignore */ initPropValues: function(/*$super*/) { this.tryApplySuper('initPropValues') /* $super() */; // default values this.setMaxMsgCount(6); }, /** @ignore */ doGetWidgetClassName: function(/*$super*/) { return this.tryApplySuper('doGetWidgetClassName') /* $super() */ + ' ' + CNS.SYSMSGGROUP; } }); /** * Exception handler that can report exceptions and messages by widget system. * @class * @augments Kekule.ExceptionHandler */ Kekule.Widget.ExceptionHandler = Class.create(Kekule.ExceptionHandler, /** @lends Kekule.Widget.ExceptionHandler# */ { /** @private */ CLASS_NAME: 'Kekule.Widget.ExceptionHandler', /** @private */ initProperties: function() { this.defineProp('document', {'dataType': DataType.OBJECT, 'serializable': false, 'getter': function() { return this.getPropStoreFieldValue('document') || document; } }); this.defineProp('sysMsgGroup', {'dataType': 'Kekule.Widget.SysMsgGroup', 'serializable': false, 'setter': null, 'getter': function() { var result = this.getPropStoreFieldValue('sysMsgGroup'); if (!result) { result = new Kekule.Widget.SysMsgGroup(this.getDocument()); //result.appendToElem(this.getDocument().body); var GM = result.getGlobalManager(); result.appendToElem(GM.getDefaultContextRootElem()); this.setPropStoreFieldValue('sysMsgGroup', result); } return result; } }); }, /** @ignore */ throwException: function(/*$super, */e, exceptionLevel) { var EL = Kekule.ExceptionLevel; var MT = Kekule.Widget.MsgType; if (!exceptionLevel) exceptionLevel = EL.ERROR; var msg; if (typeof(e) === 'string') msg = e; else msg = e.message; if (msg) { var msgType = (exceptionLevel === EL.ERROR || exceptionLevel === EL.NOT_FATAL_ERROR) || !exceptionLevel? MT.ERROR: (exceptionLevel === EL.WARNING)? MT.WARNING: (exceptionLevel === EL.NOTE)? MT.INFO: MT.NORMAL; this.getSysMsgGroup().addMessage(msg, msgType); } return this.tryApplySuper('throwException', [e, exceptionLevel]) /* $super(e, exceptionLevel) */; } }); Kekule.ClassUtils.makeSingleton(Kekule.Widget.ExceptionHandler); // register exception handler Kekule.X.domReady(function() { Kekule.exceptionHandler = Kekule.Widget.ExceptionHandler.getInstance(); }); })();