git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.DevExpressVCL@21 05c56307-c608-d34a-929d-697000501d7a
145 lines
5.4 KiB
JavaScript
145 lines
5.4 KiB
JavaScript
/*
|
|
ExpressWeb Framework by Developer Express
|
|
ExpressWebPageModule
|
|
|
|
Copyright (c) 2000-2004 Developer Express Inc.
|
|
ALL RIGHTS RESERVED
|
|
|
|
The entire contents of this file is protected by U.S. and
|
|
International Copyright Laws. Unauthorized reproduction,
|
|
reverse-engineering, and distribution of all or any portion of
|
|
the code contained in this file is strictly prohibited and may
|
|
result in severe civil and criminal penalties and will be
|
|
prosecuted to the maximum extent possible under the law.
|
|
*/
|
|
|
|
// globals
|
|
var dxModule = [];
|
|
dxModule["Inf"] = new dx_Info();
|
|
dxModule["Utl"] = new dx_Utils();
|
|
dxModule["Page"] = new dx_Page();
|
|
dxModule["Obj"] = dxModule.Utl.CreateObjHelper();
|
|
dxModule["Pos"] = dxModule.Utl.CreatePosHelper();
|
|
dxModule["Evt"] = new dx_EventManager();
|
|
|
|
// Class TabItem
|
|
function dx_TabItem(AName, ATabIndex, ATabStop)
|
|
{
|
|
this.Name = AName;
|
|
this.TabIndex = ATabIndex;
|
|
this.TabStop = ATabStop;
|
|
}
|
|
|
|
// Class dx_Page
|
|
function dx_Page()
|
|
{
|
|
this.Name = "";
|
|
this.ScrollLeft = 0;
|
|
this.ScrollTop = 0;
|
|
this.ActiveControlName = "";
|
|
this.GetPageForm = function() {
|
|
return eval("document." + this.Name);
|
|
}
|
|
this.FirstFocusedElementName = "";
|
|
this.LastFocusedElementName = "";
|
|
this.FocusedElementName = "";
|
|
this.LockTabbing = false;
|
|
this.UnableTabbing = true;
|
|
|
|
this.tabitems = [];
|
|
this.AddTabbingElement = function(AName, ATabIndex, ATabStop) {
|
|
this.tabitems[this.tabitems.length] = new dx_TabItem(AName, ATabIndex, ATabStop);
|
|
}
|
|
this.GetTabStop = function(name) {
|
|
for(var i = 0; i < this.tabitems.length; i ++) {
|
|
if (this.tabitems[i].Name == name) return this.tabitems[i].TabStop;
|
|
}
|
|
return true;
|
|
}
|
|
this.GetTabIndex = function(name) {
|
|
for(var i = 0; i < this.tabitems.length; i ++) {
|
|
if (this.tabitems[i].Name == name) return this.tabitems[i].TabIndex;
|
|
}
|
|
return -1;
|
|
}
|
|
this.GetElementNameByTabIndex = function(tabIndex) {
|
|
for(var i = 0; i < this.tabitems.length; i ++) {
|
|
if (this.tabitems[i].TabIndex == tabIndex) return this.tabitems[i].Name;
|
|
}
|
|
return "";
|
|
}
|
|
this.FocusElement = function(name) {
|
|
if(!Exists(name)) return;
|
|
element = dxModule.Obj.GetElementById(name);
|
|
if(Exists(element)) {
|
|
element.focus();
|
|
if(element.tagName == "INPUT" || element.tagName == "TEXTAREA") element.select();
|
|
this.FocusedElementName = name;
|
|
}
|
|
}
|
|
this.FocusNext = function(evt) {
|
|
element = dxModule.Inf.GetSrcElement(evt);
|
|
if(!Exists(element)) return;
|
|
var nextTabIndex = eval(this.GetTabIndex(element.name) + 1);
|
|
focusElementName = this.GetElementNameByTabIndex(nextTabIndex);
|
|
if(Exists(focusElementName)) this.FocusElement(focusElementName);
|
|
else this.FocusElement(this.FirstFocusedElementName);
|
|
}
|
|
this.FocusPrev = function(evt) {
|
|
element = dxModule.Inf.GetSrcElement(evt);
|
|
if(!Exists(element)) return;
|
|
var nextTabIndex = eval(this.GetTabIndex(element.name) - 1);
|
|
focusElementName = this.GetElementNameByTabIndex(nextTabIndex);
|
|
if(Exists(focusElementName)) this.FocusElement(focusElementName);
|
|
else this.FocusElement(this.LastFocusedElementName);
|
|
}
|
|
this.OnFocus = function(evt) {
|
|
if(this.LockTabbing || this.UnableTabbing) return;
|
|
element = dxModule.Inf.GetSrcElement(evt);
|
|
if(!Exists(element)) return;
|
|
if(!this.GetTabStop(element.name)) {
|
|
if(dxModule.Inf.GetShiftState(evt)) this.FocusPrev(evt);
|
|
else this.FocusNext(evt);
|
|
}
|
|
}
|
|
this.OnMouseDown = function(evt) {
|
|
this.LockTabbing = true;
|
|
}
|
|
this.OnMouseUp = function(evt) {
|
|
this.LockTabbing = false;
|
|
}
|
|
this.Initialize = function() {
|
|
var newScrollPos = dxModule.Pos.GetWindowScroll();
|
|
if(this.ScrollLeft != 0) newScrollPos.x = this.ScrollLeft;
|
|
if(this.ScrollTop != 0) newScrollPos.y = this.ScrollTop;
|
|
dxModule.Pos.SetWindowScroll(newScrollPos.x, newScrollPos.y);
|
|
this.FocusElement(this.ActiveControlName);
|
|
for(var i = 0; i < this.tabitems.length; i ++) {
|
|
this.UnableTabbing = this.UnableTabbing && !this.tabitems[i].TabStop;
|
|
}
|
|
if(!dxModule.Inf.ie) this.UnableTabbing = true; //TODO
|
|
if(!this.UnableTabbing) {
|
|
this.FirstFocusedElementName = this.GetElementNameByTabIndex(1);
|
|
var lastTabIndex = 0;
|
|
for(var i = 0; i < this.tabitems.length; i ++) {
|
|
if (this.tabitems[i].TabIndex > lastTabIndex) lastTabIndex = this.tabitems[i].TabIndex;
|
|
}
|
|
this.LastFocusedElementName = this.GetElementNameByTabIndex(lastTabIndex);
|
|
|
|
dxModule.Evt.Attach("window.document.onmousedown", function(e) { dxModule.Page.OnMouseDown(e); } );
|
|
window.document.onmousedown = function(e) { dxModule.Evt.Exec("window.document.onmousedown", e); }
|
|
dxModule.Evt.Attach("window.document.onmouseup", function(e) { dxModule.Page.OnMouseUp(e); } );
|
|
window.document.onmouseup = function(e) { dxModule.Evt.Exec("window.document.onmouseup", e); }
|
|
}
|
|
}
|
|
this.Finalize = function() {
|
|
AllowPostBack = true;
|
|
}
|
|
}
|
|
|
|
dxModule.Evt.Attach("window.onload", function() { dxModule.Page.Initialize(); } );
|
|
window.onload = function() { dxModule.Evt.Exec("window.onload"); }
|
|
|
|
dxModule.Evt.Attach("window.onunload", function() { dxModule.Page.Finalize(); } );
|
|
window.onunload = function() { dxModule.Evt.Exec("window.onunload"); }
|