|
Struts example source code file (selection.js)
The Struts selection.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.require("dojo.html.common"); dojo.provide("dojo.html.selection"); dojo.require("dojo.dom"); dojo.require("dojo.lang.common"); dojo.html.selectionType = {NONE:0, TEXT:1, CONTROL:2}; dojo.html.clearSelection = function () { var _window = dojo.global(); var _document = dojo.doc(); try { if (_window["getSelection"]) { if (dojo.render.html.safari) { _window.getSelection().collapse(); } else { _window.getSelection().removeAllRanges(); } } else { if (_document.selection) { if (_document.selection.empty) { _document.selection.empty(); } else { if (_document.selection.clear) { _document.selection.clear(); } } } } return true; } catch (e) { dojo.debug(e); return false; } }; dojo.html.disableSelection = function (element) { element = dojo.byId(element) || dojo.body(); var h = dojo.render.html; if (h.mozilla) { element.style.MozUserSelect = "none"; } else { if (h.safari) { element.style.KhtmlUserSelect = "none"; } else { if (h.ie) { element.unselectable = "on"; } else { return false; } } } return true; }; dojo.html.enableSelection = function (element) { element = dojo.byId(element) || dojo.body(); var h = dojo.render.html; if (h.mozilla) { element.style.MozUserSelect = ""; } else { if (h.safari) { element.style.KhtmlUserSelect = ""; } else { if (h.ie) { element.unselectable = "off"; } else { return false; } } } return true; }; dojo.html.selectElement = function (element) { dojo.deprecated("dojo.html.selectElement", "replaced by dojo.html.selection.selectElementChildren", 0.5); }; dojo.html.selectInputText = function (element) { var _window = dojo.global(); var _document = dojo.doc(); element = dojo.byId(element); if (_document["selection"] && dojo.body()["createTextRange"]) { var range = element.createTextRange(); range.moveStart("character", 0); range.moveEnd("character", element.value.length); range.select(); } else { if (_window["getSelection"]) { var selection = _window.getSelection(); element.setSelectionRange(0, element.value.length); } } element.focus(); }; dojo.html.isSelectionCollapsed = function () { dojo.deprecated("dojo.html.isSelectionCollapsed", "replaced by dojo.html.selection.isCollapsed", 0.5); return dojo.html.selection.isCollapsed(); }; dojo.lang.mixin(dojo.html.selection, {getType:function () { if (dojo.doc()["selection"]) { return dojo.html.selectionType[dojo.doc().selection.type.toUpperCase()]; } else { var stype = dojo.html.selectionType.TEXT; var oSel; try { oSel = dojo.global().getSelection(); } catch (e) { } if (oSel && oSel.rangeCount == 1) { var oRange = oSel.getRangeAt(0); if (oRange.startContainer == oRange.endContainer && (oRange.endOffset - oRange.startOffset) == 1 && oRange.startContainer.nodeType != dojo.dom.TEXT_NODE) { stype = dojo.html.selectionType.CONTROL; } } return stype; } }, isCollapsed:function () { var _window = dojo.global(); var _document = dojo.doc(); if (_document["selection"]) { return _document.selection.createRange().text == ""; } else { if (_window["getSelection"]) { var selection = _window.getSelection(); if (dojo.lang.isString(selection)) { return selection == ""; } else { return selection.isCollapsed || selection.toString() == ""; } } } }, getSelectedElement:function () { if (dojo.html.selection.getType() == dojo.html.selectionType.CONTROL) { if (dojo.doc()["selection"]) { var range = dojo.doc().selection.createRange(); if (range && range.item) { return dojo.doc().selection.createRange().item(0); } } else { var selection = dojo.global().getSelection(); return selection.anchorNode.childNodes[selection.anchorOffset]; } } }, getParentElement:function () { if (dojo.html.selection.getType() == dojo.html.selectionType.CONTROL) { var p = dojo.html.selection.getSelectedElement(); if (p) { return p.parentNode; } } else { if (dojo.doc()["selection"]) { return dojo.doc().selection.createRange().parentElement(); } else { var selection = dojo.global().getSelection(); if (selection) { var node = selection.anchorNode; while (node && node.nodeType != dojo.dom.ELEMENT_NODE) { node = node.parentNode; } return node; } } } }, getSelectedText:function () { if (dojo.doc()["selection"]) { if (dojo.html.selection.getType() == dojo.html.selectionType.CONTROL) { return null; } return dojo.doc().selection.createRange().text; } else { var selection = dojo.global().getSelection(); if (selection) { return selection.toString(); } } }, getSelectedHtml:function () { if (dojo.doc()["selection"]) { if (dojo.html.selection.getType() == dojo.html.selectionType.CONTROL) { return null; } return dojo.doc().selection.createRange().htmlText; } else { var selection = dojo.global().getSelection(); if (selection && selection.rangeCount) { var frag = selection.getRangeAt(0).cloneContents(); var div = document.createElement("div"); div.appendChild(frag); return div.innerHTML; } return null; } }, hasAncestorElement:function (tagName) { return (dojo.html.selection.getAncestorElement.apply(this, arguments) != null); }, getAncestorElement:function (tagName) { var node = dojo.html.selection.getSelectedElement() || dojo.html.selection.getParentElement(); while (node) { if (dojo.html.selection.isTag(node, arguments).length > 0) { return node; } node = node.parentNode; } return null; }, isTag:function (node, tags) { if (node && node.tagName) { for (var i = 0; i < tags.length; i++) { if (node.tagName.toLowerCase() == String(tags[i]).toLowerCase()) { return String(tags[i]).toLowerCase(); } } } return ""; }, selectElement:function (element) { var _window = dojo.global(); var _document = dojo.doc(); element = dojo.byId(element); if (_document.selection && dojo.body().createTextRange) { try { var range = dojo.body().createControlRange(); range.addElement(element); range.select(); } catch (e) { dojo.html.selection.selectElementChildren(element); } } else { if (_window["getSelection"]) { var selection = _window.getSelection(); if (selection["removeAllRanges"]) { var range = _document.createRange(); range.selectNode(element); selection.removeAllRanges(); selection.addRange(range); } } } }, selectElementChildren:function (element) { var _window = dojo.global(); var _document = dojo.doc(); element = dojo.byId(element); if (_document.selection && dojo.body().createTextRange) { var range = dojo.body().createTextRange(); range.moveToElementText(element); range.select(); } else { if (_window["getSelection"]) { var selection = _window.getSelection(); if (selection["setBaseAndExtent"]) { selection.setBaseAndExtent(element, 0, element, element.innerText.length - 1); } else { if (selection["selectAllChildren"]) { selection.selectAllChildren(element); } } } } }, getBookmark:function () { var bookmark; var _document = dojo.doc(); if (_document["selection"]) { var range = _document.selection.createRange(); bookmark = range.getBookmark(); } else { var selection; try { selection = dojo.global().getSelection(); } catch (e) { } if (selection) { var range = selection.getRangeAt(0); bookmark = range.cloneRange(); } else { dojo.debug("No idea how to store the current selection for this browser!"); } } return bookmark; }, moveToBookmark:function (bookmark) { var _document = dojo.doc(); if (_document["selection"]) { var range = _document.selection.createRange(); range.moveToBookmark(bookmark); range.select(); } else { var selection; try { selection = dojo.global().getSelection(); } catch (e) { } if (selection && selection["removeAllRanges"]) { selection.removeAllRanges(); selection.addRange(bookmark); } else { dojo.debug("No idea how to restore selection for this browser!"); } } }, collapse:function (beginning) { if (dojo.global()["getSelection"]) { var selection = dojo.global().getSelection(); if (selection.removeAllRanges) { if (beginning) { selection.collapseToStart(); } else { selection.collapseToEnd(); } } else { dojo.global().getSelection().collapse(beginning); } } else { if (dojo.doc().selection) { var range = dojo.doc().selection.createRange(); range.collapse(beginning); range.select(); } } }, remove:function () { if (dojo.doc().selection) { var selection = dojo.doc().selection; if (selection.type.toUpperCase() != "NONE") { selection.clear(); } return selection; } else { var selection = dojo.global().getSelection(); for (var i = 0; i < selection.rangeCount; i++) { selection.getRangeAt(i).deleteContents(); } return selection; } }}); Other Struts examples (source code examples)Here is a short list of links related to this Struts selection.js source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
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.