📄 atlasui.js
字号:
//-----------------------------------------------------------------------// Copyright (C) Microsoft Corporation. All rights reserved.//-----------------------------------------------------------------------// AtlasUI.js// Atlas UI Framework.Type.registerNamespace('Web.UI');function $(elementID){return document.getElementById(elementID);}Web.UI.visitDOM =function(node,visitorMethod,context,includeRootNode){var childNodes,currentNode,c;var nodeQueue;if (includeRootNode){nodeQueue =[node];}else {nodeQueue =[];childNodes =node.childNodes;for (c =0;c <childNodes.length;c++){currentNode =childNodes[c];if (currentNode.nodeType ==1){nodeQueue.queue(currentNode);}}}while (nodeQueue.length){currentNode =nodeQueue.dequeue();if (visitorMethod(currentNode,context)){return currentNode;}childNodes =currentNode.childNodes;for (c =0;c <childNodes.length;c++){currentNode =childNodes[c];if (currentNode.nodeType ==1){nodeQueue.queue(currentNode);}}}return null;}Web.Attributes.defineAttribute('ValueProperty');Web.UI.VisibilityMode =Web.Enum.create('Hide','Collapse');Web.UI.Control =function(associatedElement){Web.UI.Control.initializeBase(this,[true]);this.element =associatedElement;this.element.control =this;var _oldDisplayMode =this.element.style.displayMode;if (!_oldDisplayMode ||(_oldDisplayMode =='none')){_oldDisplayMode ='';}var _visibilityMode =Web.UI.VisibilityMode.Hide;var _propertyChangeHandler;var _behaviors;this.get_associatedElement =function(){if (!_propertyChangeHandler){_propertyChangeHandler =Function.createDelegate(this,this._onPropertyChange);this.element.attachEvent('onpropertychange',_propertyChangeHandler);}return this.element;}this.get_behaviors =function(){if (!_behaviors){_behaviors =Web.Component.createCollection(this);}return _behaviors;}this.get_cssClass =function(){return this.element.className;}this.set_cssClass =function(value){if (this.element.className !=value){this.element.className =value;this.raisePropertyChanged('cssClass');}}this.get_dataContext =function(){var dc =Web.UI.Control.callBaseMethod(this,'get_dataContext');if (!dc){var parent =this.getParent();if (parent){dc =parent.get_dataContext();}}return dc;}Web.UI.Control.registerBaseMethod(this,'get_dataContext');this.get_enabled =function(){return !this.element.disabled;}this.set_enabled =function(value){if (value !=this.get_enabled()){this.element.disabled =!value;this.raisePropertyChanged('enabled');}}this.get_style =function(){if (!_propertyChangeHandler){_propertyChangeHandler =Function.createDelegate(this,this._onPropertyChange);this.element.attachEvent('onpropertychange',_propertyChangeHandler);}return this.element.style;}this.get_visibilityMode =function(){return _visibilityMode;}this.set_visibilityMode =function(value){if (_visibilityMode !=value){_visibilityMode =value;if (this.get_visible()==false){if (_visibilityMode ==Web.UI.VisibilityMode.Hide){this.element.style.display =_oldDisplayMode;}else {this.element.style.display ='none';}}this.raisePropertyChanged('visibilityMode');}}this.get_visible =function(){return (this.element.style.visibility !='hidden');}this.set_visible =function(value){if (value !=this.get_visible()){this.element.style.visibility =value ?'visible':'hidden';if (value ||(_visibilityMode ==Web.UI.VisibilityMode.Hide)){this.element.style.display =_oldDisplayMode;}else {this.element.style.display ='none';}this.raisePropertyChanged('visible');}}this.validation =this.createEvent();this.addCssClass =function(className){this.set_cssClass(this.get_cssClass()+' '+className);}this.containsCssClass =function(className){var classes =this.get_cssClass().split(' ');return classes.contains(className);}this.dispose =function(){if (_propertyChangeHandler){this.element.detachEvent('onpropertychange',_propertyChangeHandler);_propertyChangeHandler =null;}if (_behaviors){_behaviors.dispose();_behaviors =null;}if (this.element){this.element.control =null;this.element =null;}Web.UI.Control.callBaseMethod(this,'dispose');}Web.UI.Control.registerBaseMethod(this,'dispose');this.findObject =function(id){var object;if (this.element.markupContext){object =this.element.markupContext.findObject(id);}if (!object){var parent =this.getParent();if (parent){object =parent.findObject(id);}else {object =Web.Application.findObject(id);}}return object;}this.focus =function(){this.element.focus();}this.getDescriptor =function(){var td =Web.UI.Control.callBaseMethod(this,'getDescriptor');td.addProperty('associatedElement',Object,true);td.addProperty('behaviors',Array,true);td.addProperty('cssClass',String);td.addProperty('enabled',Boolean);td.addProperty('style',Object,true);td.addProperty('visible',Boolean);td.addProperty('visibilityMode',Web.UI.VisibilityMode);td.addMethod('addCssClass',[Web.TypeDescriptor.createParameter('className',String)]);td.addMethod('focus');td.addMethod('scrollIntoView');td.addMethod('removeCssClass',[Web.TypeDescriptor.createParameter('className',String)]);td.addMethod('toggleCssClass',[Web.TypeDescriptor.createParameter('className',String)]);return td;}Web.UI.Control.registerBaseMethod(this,'getDescriptor');this.getParent =function(){var parentElement =this.element.parentNode;while (parentElement){if (parentElement.control){return parentElement.control;}parentElement =parentElement.parentNode;}return null;}this.removeCssClass =function(className){var currentClassName =this.get_cssClass();var index =currentClassName.indexOf(className);if (index >=0){var newClassName =currentClassName.substr(0,index)+' '+currentClassName.substring(index +className.length,currentClassName.length);this.set_cssClass(newClassName);}}this.scrollIntoView =function(){this.element.scrollIntoView();}this.toggleCssClass =function(className){if (this.containsCssClass(className)){this.removeCssClass(className);}else {this.addCssClass(className);}}this._onPropertyChange =function(){if (window.event.propertyName.startsWith('style')){this.raisePropertyChanged('style');}else {this.raisePropertyChanged('assocatedElement');}}}Type.registerClass('Web.UI.Control',Web.Component);Web.TypeDescriptor.addType('script','control',Web.UI.Control);Web.UI.Control.parseFromMarkup =function(type,node,markupContext){var targetElementID;var targetElementAttribute =node.attributes.getNamedItem('targetElement');if (targetElementAttribute){targetElementID =targetElementAttribute.nodeValue;}else {var idAttribute =node.attributes.getNamedItem('id');if (idAttribute){targetElementID =idAttribute.nodeValue;}}var targetElement;if (targetElementID){targetElement =markupContext.findObject(targetElementID,true);}if (!targetElement){return null;}if (targetElementAttribute){node.attributes.removeNamedItem('targetElement');}var dataContextHidden =false;var dataContext =markupContext.get_dataContext();if (dataContext){dataContextHidden =markupContext.hideDataContext();}var newControl =new type(targetElement);var control =Web.TypeDescriptor.initializeInstance(newControl,node,markupContext);if (targetElementAttribute){node.attributes.setNamedItem(targetElementAttribute);}if (control){var id =control.get_id();if (!id){id =targetElementID;}markupContext.addObject(id,control);if (dataContext){control.set_dataContext(dataContext);}}else {newControl.dispose();}if (dataContextHidden){markupContext.restoreDataContext();}return control;}Web.UI.Control.setLocation =function(element,position){element.style.left =position.x +"px";element.style.top =position.y +"px";}Web.UI.Control.overlaps =function(r1,r2){var xLeft =(r1.x >=r2.x &&r1.x <=(r2.x +r2.width));var xRight =((r1.x +r1.width)>=r2.x &&(r1.x +r1.width)<=r2.x +r2.width);var xComplete =((r1.x <r2.x)&&((r1.x +r1.height)>(r2.x +r2.height)));var yLeft =(r1.y >=r2.y &&r1.y <=(r2.y +r2.height));var yRight =((r1.y +r1.height)>=r2.y &&(r1.y +r1.height)<=r2.y +r2.height);var yComplete =((r1.y <r2.y)&&((r1.y +r1.height)>(r2.y +r2.height)));if ((xLeft ||xRight ||xComplete)&&(yLeft ||yRight ||yComplete)){return true;}return false;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -