alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Struts example source code file (browser.js)

This example Struts source code file (browser.js) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Struts tags/keywords

checkboxstatechange, dommenuiteminactive, key_escape:27, key_f4:115, key_insert:45, key_left_arrow:37, key_numpad_6:102, key_numpad_divide:111, key_numpad_enter:108, key_numpad_minus:109, key_numpad_multiply:106, key_page_up:33, key_shift:16, radiostatechange

The Struts browser.js source code

/*
	Copyright (c) 2004-2006, The Dojo Foundation
	All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/



dojo.provide("dojo.event.browser");
dojo.require("dojo.event.common");
dojo._ie_clobber = new function () {
	this.clobberNodes = [];
	function nukeProp(node, prop) {
		try {
			node[prop] = null;
		}
		catch (e) {
		}
		try {
			delete node[prop];
		}
		catch (e) {
		}
		try {
			node.removeAttribute(prop);
		}
		catch (e) {
		}
	}
	this.clobber = function (nodeRef) {
		var na;
		var tna;
		if (nodeRef) {
			tna = nodeRef.all || nodeRef.getElementsByTagName("*");
			na = [nodeRef];
			for (var x = 0; x < tna.length; x++) {
				if (tna[x]["__doClobber__"]) {
					na.push(tna[x]);
				}
			}
		} else {
			try {
				window.onload = null;
			}
			catch (e) {
			}
			na = (this.clobberNodes.length) ? this.clobberNodes : document.all;
		}
		tna = null;
		var basis = {};
		for (var i = na.length - 1; i >= 0; i = i - 1) {
			var el = na[i];
			try {
				if (el && el["__clobberAttrs__"]) {
					for (var j = 0; j < el.__clobberAttrs__.length; j++) {
						nukeProp(el, el.__clobberAttrs__[j]);
					}
					nukeProp(el, "__clobberAttrs__");
					nukeProp(el, "__doClobber__");
				}
			}
			catch (e) {
			}
		}
		na = null;
	};
};
if (dojo.render.html.ie) {
	dojo.addOnUnload(function () {
		dojo._ie_clobber.clobber();
		try {
			if ((dojo["widget"]) && (dojo.widget["manager"])) {
				dojo.widget.manager.destroyAll();
			}
		}
		catch (e) {
		}
		if (dojo.widget) {
			for (var name in dojo.widget._templateCache) {
				if (dojo.widget._templateCache[name].node) {
					dojo.dom.destroyNode(dojo.widget._templateCache[name].node);
					dojo.widget._templateCache[name].node = null;
					delete dojo.widget._templateCache[name].node;
				}
			}
		}
		try {
			window.onload = null;
		}
		catch (e) {
		}
		try {
			window.onunload = null;
		}
		catch (e) {
		}
		dojo._ie_clobber.clobberNodes = [];
	});
}
dojo.event.browser = new function () {
	var clobberIdx = 0;
	this.normalizedEventName = function (eventName) {
		switch (eventName) {
		  case "CheckboxStateChange":
		  case "DOMAttrModified":
		  case "DOMMenuItemActive":
		  case "DOMMenuItemInactive":
		  case "DOMMouseScroll":
		  case "DOMNodeInserted":
		  case "DOMNodeRemoved":
		  case "RadioStateChange":
			return eventName;
			break;
		  default:
			var lcn = eventName.toLowerCase();
			return (lcn.indexOf("on") == 0) ? lcn.substr(2) : lcn;
			break;
		}
	};
	this.clean = function (node) {
		if (dojo.render.html.ie) {
			dojo._ie_clobber.clobber(node);
		}
	};
	this.addClobberNode = function (node) {
		if (!dojo.render.html.ie) {
			return;
		}
		if (!node["__doClobber__"]) {
			node.__doClobber__ = true;
			dojo._ie_clobber.clobberNodes.push(node);
			node.__clobberAttrs__ = [];
		}
	};
	this.addClobberNodeAttrs = function (node, props) {
		if (!dojo.render.html.ie) {
			return;
		}
		this.addClobberNode(node);
		for (var x = 0; x < props.length; x++) {
			node.__clobberAttrs__.push(props[x]);
		}
	};
	this.removeListener = function (node, evtName, fp, capture) {
		if (!capture) {
			var capture = false;
		}
		evtName = dojo.event.browser.normalizedEventName(evtName);
		if (evtName == "key") {
			if (dojo.render.html.ie) {
				this.removeListener(node, "onkeydown", fp, capture);
			}
			evtName = "keypress";
		}
		if (node.removeEventListener) {
			node.removeEventListener(evtName, fp, capture);
		}
	};
	this.addListener = function (node, evtName, fp, capture, dontFix) {
		if (!node) {
			return;
		}
		if (!capture) {
			var capture = false;
		}
		evtName = dojo.event.browser.normalizedEventName(evtName);
		if (evtName == "key") {
			if (dojo.render.html.ie) {
				this.addListener(node, "onkeydown", fp, capture, dontFix);
			}
			evtName = "keypress";
		}
		if (!dontFix) {
			var newfp = function (evt) {
				if (!evt) {
					evt = window.event;
				}
				var ret = fp(dojo.event.browser.fixEvent(evt, this));
				if (capture) {
					dojo.event.browser.stopEvent(evt);
				}
				return ret;
			};
		} else {
			newfp = fp;
		}
		if (node.addEventListener) {
			node.addEventListener(evtName, newfp, capture);
			return newfp;
		} else {
			evtName = "on" + evtName;
			if (typeof node[evtName] == "function") {
				var oldEvt = node[evtName];
				node[evtName] = function (e) {
					oldEvt(e);
					return newfp(e);
				};
			} else {
				node[evtName] = newfp;
			}
			if (dojo.render.html.ie) {
				this.addClobberNodeAttrs(node, [evtName]);
			}
			return newfp;
		}
	};
	this.isEvent = function (obj) {
		return (typeof obj != "undefined") && (obj) && (typeof Event != "undefined") && (obj.eventPhase);
	};
	this.currentEvent = null;
	this.callListener = function (listener, curTarget) {
		if (typeof listener != "function") {
			dojo.raise("listener not a function: " + listener);
		}
		dojo.event.browser.currentEvent.currentTarget = curTarget;
		return listener.call(curTarget, dojo.event.browser.currentEvent);
	};
	this._stopPropagation = function () {
		dojo.event.browser.currentEvent.cancelBubble = true;
	};
	this._preventDefault = function () {
		dojo.event.browser.currentEvent.returnValue = false;
	};
	this.keys = {KEY_BACKSPACE:8, KEY_TAB:9, KEY_CLEAR:12, KEY_ENTER:13, KEY_SHIFT:16, KEY_CTRL:17, KEY_ALT:18, KEY_PAUSE:19, KEY_CAPS_LOCK:20, KEY_ESCAPE:27, KEY_SPACE:32, KEY_PAGE_UP:33, KEY_PAGE_DOWN:34, KEY_END:35, KEY_HOME:36, KEY_LEFT_ARROW:37, KEY_UP_ARROW:38, KEY_RIGHT_ARROW:39, KEY_DOWN_ARROW:40, KEY_INSERT:45, KEY_DELETE:46, KEY_HELP:47, KEY_LEFT_WINDOW:91, KEY_RIGHT_WINDOW:92, KEY_SELECT:93, KEY_NUMPAD_0:96, KEY_NUMPAD_1:97, KEY_NUMPAD_2:98, KEY_NUMPAD_3:99, KEY_NUMPAD_4:100, KEY_NUMPAD_5:101, KEY_NUMPAD_6:102, KEY_NUMPAD_7:103, KEY_NUMPAD_8:104, KEY_NUMPAD_9:105, KEY_NUMPAD_MULTIPLY:106, KEY_NUMPAD_PLUS:107, KEY_NUMPAD_ENTER:108, KEY_NUMPAD_MINUS:109, KEY_NUMPAD_PERIOD:110, KEY_NUMPAD_DIVIDE:111, KEY_F1:112, KEY_F2:113, KEY_F3:114, KEY_F4:115, KEY_F5:116, KEY_F6:117, KEY_F7:118, KEY_F8:119, KEY_F9:120, KEY_F10:121, KEY_F11:122, KEY_F12:123, KEY_F13:124, KEY_F14:125, KEY_F15:126, KEY_NUM_LOCK:144, KEY_SCROLL_LOCK:145};
	this.revKeys = [];
	for (var key in this.keys) {
		this.revKeys[this.keys[key]] = key;
	}
	this.fixEvent = function (evt, sender) {
		if (!evt) {
			if (window["event"]) {
				evt = window.event;
			}
		}
		if ((evt["type"]) && (evt["type"].indexOf("key") == 0)) {
			evt.keys = this.revKeys;
			for (var key in this.keys) {
				evt[key] = this.keys[key];
			}
			if (evt["type"] == "keydown" && dojo.render.html.ie) {
				switch (evt.keyCode) {
				  case evt.KEY_SHIFT:
				  case evt.KEY_CTRL:
				  case evt.KEY_ALT:
				  case evt.KEY_CAPS_LOCK:
				  case evt.KEY_LEFT_WINDOW:
				  case evt.KEY_RIGHT_WINDOW:
				  case evt.KEY_SELECT:
				  case evt.KEY_NUM_LOCK:
				  case evt.KEY_SCROLL_LOCK:
				  case evt.KEY_NUMPAD_0:
				  case evt.KEY_NUMPAD_1:
				  case evt.KEY_NUMPAD_2:
				  case evt.KEY_NUMPAD_3:
				  case evt.KEY_NUMPAD_4:
				  case evt.KEY_NUMPAD_5:
				  case evt.KEY_NUMPAD_6:
				  case evt.KEY_NUMPAD_7:
				  case evt.KEY_NUMPAD_8:
				  case evt.KEY_NUMPAD_9:
				  case evt.KEY_NUMPAD_PERIOD:
					break;
				  case evt.KEY_NUMPAD_MULTIPLY:
				  case evt.KEY_NUMPAD_PLUS:
				  case evt.KEY_NUMPAD_ENTER:
				  case evt.KEY_NUMPAD_MINUS:
				  case evt.KEY_NUMPAD_DIVIDE:
					break;
				  case evt.KEY_PAUSE:
				  case evt.KEY_TAB:
				  case evt.KEY_BACKSPACE:
				  case evt.KEY_ENTER:
				  case evt.KEY_ESCAPE:
				  case evt.KEY_PAGE_UP:
				  case evt.KEY_PAGE_DOWN:
				  case evt.KEY_END:
				  case evt.KEY_HOME:
				  case evt.KEY_LEFT_ARROW:
				  case evt.KEY_UP_ARROW:
				  case evt.KEY_RIGHT_ARROW:
				  case evt.KEY_DOWN_ARROW:
				  case evt.KEY_INSERT:
				  case evt.KEY_DELETE:
				  case evt.KEY_F1:
				  case evt.KEY_F2:
				  case evt.KEY_F3:
				  case evt.KEY_F4:
				  case evt.KEY_F5:
				  case evt.KEY_F6:
				  case evt.KEY_F7:
				  case evt.KEY_F8:
				  case evt.KEY_F9:
				  case evt.KEY_F10:
				  case evt.KEY_F11:
				  case evt.KEY_F12:
				  case evt.KEY_F12:
				  case evt.KEY_F13:
				  case evt.KEY_F14:
				  case evt.KEY_F15:
				  case evt.KEY_CLEAR:
				  case evt.KEY_HELP:
					evt.key = evt.keyCode;
					break;
				  default:
					if (evt.ctrlKey || evt.altKey) {
						var unifiedCharCode = evt.keyCode;
						if (unifiedCharCode >= 65 && unifiedCharCode <= 90 && evt.shiftKey == false) {
							unifiedCharCode += 32;
						}
						if (unifiedCharCode >= 1 && unifiedCharCode <= 26 && evt.ctrlKey) {
							unifiedCharCode += 96;
						}
						evt.key = String.fromCharCode(unifiedCharCode);
					}
				}
			} else {
				if (evt["type"] == "keypress") {
					if (dojo.render.html.opera) {
						if (evt.which == 0) {
							evt.key = evt.keyCode;
						} else {
							if (evt.which > 0) {
								switch (evt.which) {
								  case evt.KEY_SHIFT:
								  case evt.KEY_CTRL:
								  case evt.KEY_ALT:
								  case evt.KEY_CAPS_LOCK:
								  case evt.KEY_NUM_LOCK:
								  case evt.KEY_SCROLL_LOCK:
									break;
								  case evt.KEY_PAUSE:
								  case evt.KEY_TAB:
								  case evt.KEY_BACKSPACE:
								  case evt.KEY_ENTER:
								  case evt.KEY_ESCAPE:
									evt.key = evt.which;
									break;
								  default:
									var unifiedCharCode = evt.which;
									if ((evt.ctrlKey || evt.altKey || evt.metaKey) && (evt.which >= 65 && evt.which <= 90 && evt.shiftKey == false)) {
										unifiedCharCode += 32;
									}
									evt.key = String.fromCharCode(unifiedCharCode);
								}
							}
						}
					} else {
						if (dojo.render.html.ie) {
							if (!evt.ctrlKey && !evt.altKey && evt.keyCode >= evt.KEY_SPACE) {
								evt.key = String.fromCharCode(evt.keyCode);
							}
						} else {
							if (dojo.render.html.safari) {
								switch (evt.keyCode) {
								  case 25:
									evt.key = evt.KEY_TAB;
									evt.shift = true;
									break;
								  case 63232:
									evt.key = evt.KEY_UP_ARROW;
									break;
								  case 63233:
									evt.key = evt.KEY_DOWN_ARROW;
									break;
								  case 63234:
									evt.key = evt.KEY_LEFT_ARROW;
									break;
								  case 63235:
									evt.key = evt.KEY_RIGHT_ARROW;
									break;
								  case 63236:
									evt.key = evt.KEY_F1;
									break;
								  case 63237:
									evt.key = evt.KEY_F2;
									break;
								  case 63238:
									evt.key = evt.KEY_F3;
									break;
								  case 63239:
									evt.key = evt.KEY_F4;
									break;
								  case 63240:
									evt.key = evt.KEY_F5;
									break;
								  case 63241:
									evt.key = evt.KEY_F6;
									break;
								  case 63242:
									evt.key = evt.KEY_F7;
									break;
								  case 63243:
									evt.key = evt.KEY_F8;
									break;
								  case 63244:
									evt.key = evt.KEY_F9;
									break;
								  case 63245:
									evt.key = evt.KEY_F10;
									break;
								  case 63246:
									evt.key = evt.KEY_F11;
									break;
								  case 63247:
									evt.key = evt.KEY_F12;
									break;
								  case 63250:
									evt.key = evt.KEY_PAUSE;
									break;
								  case 63272:
									evt.key = evt.KEY_DELETE;
									break;
								  case 63273:
									evt.key = evt.KEY_HOME;
									break;
								  case 63275:
									evt.key = evt.KEY_END;
									break;
								  case 63276:
									evt.key = evt.KEY_PAGE_UP;
									break;
								  case 63277:
									evt.key = evt.KEY_PAGE_DOWN;
									break;
								  case 63302:
									evt.key = evt.KEY_INSERT;
									break;
								  case 63248:
								  case 63249:
								  case 63289:
									break;
								  default:
									evt.key = evt.charCode >= evt.KEY_SPACE ? String.fromCharCode(evt.charCode) : evt.keyCode;
								}
							} else {
								evt.key = evt.charCode > 0 ? String.fromCharCode(evt.charCode) : evt.keyCode;
							}
						}
					}
				}
			}
		}
		if (dojo.render.html.ie) {
			if (!evt.target) {
				evt.target = evt.srcElement;
			}
			if (!evt.currentTarget) {
				evt.currentTarget = (sender ? sender : evt.srcElement);
			}
			if (!evt.layerX) {
				evt.layerX = evt.offsetX;
			}
			if (!evt.layerY) {
				evt.layerY = evt.offsetY;
			}
			var doc = (evt.srcElement && evt.srcElement.ownerDocument) ? evt.srcElement.ownerDocument : document;
			var docBody = ((dojo.render.html.ie55) || (doc["compatMode"] == "BackCompat")) ? doc.body : doc.documentElement;
			if (!evt.pageX) {
				evt.pageX = evt.clientX + (docBody.scrollLeft || 0);
			}
			if (!evt.pageY) {
				evt.pageY = evt.clientY + (docBody.scrollTop || 0);
			}
			if (evt.type == "mouseover") {
				evt.relatedTarget = evt.fromElement;
			}
			if (evt.type == "mouseout") {
				evt.relatedTarget = evt.toElement;
			}
			this.currentEvent = evt;
			evt.callListener = this.callListener;
			evt.stopPropagation = this._stopPropagation;
			evt.preventDefault = this._preventDefault;
		}
		return evt;
	};
	this.stopEvent = function (evt) {
		if (window.event) {
			evt.cancelBubble = true;
			evt.returnValue = false;
		} else {
			evt.preventDefault();
			evt.stopPropagation();
		}
	};
};

Other Struts examples (source code examples)

Here is a short list of links related to this Struts browser.js source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.