123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327 |
- // Licensed Materials - Property of IBM
- //
- // IBM Cognos Products: cpscrn
- //
- // (C) Copyright IBM Corp. 2005, 2011
- //
- // US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- //
- //
- // Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
- // Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // Toolbar Button hilites
- function caption(fragmentID, layoutID) {
- this.fragmentID = fragmentID;
- this.captionID = fragmentID + "caption";
- this.layoutID = layoutID;
- this.containerTag = null;
- this.nextTag = null;
- this.windowState = fragments[this.fragmentID].windowState;
- this.currentViewWindowState = null;
-
- var frag = fragments[this.fragmentID];
- frag.addEventListener("fragment.title.change", _F_Document.associate(null, this, "processEvent"), false);
- frag.addEventListener("fragment.windowstate.change", _F_Document.associate(null, this, "processEvent"), false);
- frag.addEventListener("fragment.mode.change", _F_Document.associate(null, this, "processEvent"), false);
-
- if (xIE4Up) {
- var handler = _F_Document.associate(null, this, "fixIEScrollBar");
- frag.addEventListener("fragment.load", handler, true);
- frag.addEventListener("fragment.visibility.change", handler, true);
- _F_Document.addEventListener(window, "resize", handler, true);
- }
-
- if ($(this.captionID + "_refresh")) {
- frag.addEventListener("fragment.retrieve.before", _F_Document.associate(null, this, "processBusyIndicator"), false);
- frag.addEventListener("fragment.retrieve.after", _F_Document.associate(null, this, "processBusyIndicator"), false);
- }
- var listenerList = ["help","refresh","reset","edit","view","minimize","restore","maximize"];
- for (var i=0; i < listenerList.length; i++) {
- var listener = listenerList[i];
- var elem = $(this.captionID + "_" + listener);
- if (elem) {
- xAddEventListener(elem, "click", _F_Document.associate(listener, this, "doclick"));
- xAddEventListener(elem, "keypress", _F_Document.associate(listener, this, "dokeypress"));
- }
-
- }
- }
- caption.prototype = {
- action: function (action) {
- var frag = fragments[this.fragmentID];
- if (frag) {
- switch (action) {
- case "refresh":
- /*
- * raise a fragment.refresh event
- */
- frag.raiseEvent("fragment.refresh", "", "", false, true);
- break;
- case "edit":
- this.currentViewWindowState = frag.windowState;
- frag.setMode("edit");
- break;
- case "view":
- frag.setMode("view");
- break;
- case "help":
- ui_fragment_help(frag);
- break;
- case "reset":
- if (!window.confirm(PFM.JS.IDS_JS_PROMPT_REVERT)) {
- return;
- }
- frag.raiseEvent("fragment.reset", null, "", false, false);
- frag.setMode("view", "internal");
- frag.performAction("frag-action=reset");
- break;
- case "restore":
- this.mouseOut($(this.captionID + "_" + action));
- frag.setWindowState("normal");
- break;
- case "minimize":
- this.mouseOut($(this.captionID + "_" + action));
- frag.setWindowState("minimized");
- break;
- case "maximize":
- this.mouseOut($(this.captionID + "_" + action));
- frag.setWindowState("maximized");
- break;
- }
- } else {
- window.alert("DEBUG: unknown fragment id: '"+this.fragmentID+"'");
- }
- },
-
- mouseOver: function (e) {
- e.className = "cogstyle-portlet-action-hover";
- },
-
- mouseOut: function (e) {
- e.className = "cogstyle-portlet-action";
- },
- doclick: function (e, tag) {
- this.action(tag);
- },
- dokeypress: function (e, tag) {
- if (e.keyCode==9) {return true;}
- this.action(tag);
- },
- showHideButtons: function (show, hide) {
- var hideTag = $(this.captionID + "_" + hide);
- var showTag = $(this.captionID + "_" + show);
- if (hideTag != null) {
- hideTag.style.display = "none";
- }
- if (showTag != null) {
- showTag.style.display = "";
- }
- },
-
- changeWindowState: function (newWinState) {
- var frag = fragments[this.fragmentID];
- switch (this.windowState) {
- case "normal":
- default:
- switch (newWinState) {
- case "minimized":
- this.showHideButtons("restore", "minimize");
- $(frag.div).style.display = "none";
- this.windowState = newWinState;
- break;
- case "maximized":
- this.maximize(true);
- this.showHideButtons("restore", "maximize");
- this.windowState = newWinState;
- break;
- }
- break;
-
- case "minimized":
- switch (newWinState) {
- case "normal":
- this.showHideButtons("minimize", "restore");
- $(frag.div).style.display = "block";
- this.windowState = newWinState;
- break;
- case "maximized":
- $(frag.div).style.display = "block";
- this.maximize(true);
- this.showHideButtons("minimize", "maximize");
- this.windowState = newWinState;
- break;
- }
- break;
-
- case "maximized":
- switch (newWinState) {
- case "minimized":
- this.maximize(false);
- $(frag.div).style.display = "none";
- this.showHideButtons("maximize", "minimize");
- this.windowState = newWinState;
- break;
- case "normal":
- this.maximize(false);
- this.showHideButtons("maximize", "restore");
- this.windowState = newWinState;
- break;
- }
- break;
- }
- },
- changeMode: function (newMode) {
- switch (newMode) {
- case "edit":
- fragments[this.fragmentID].setWindowState("normal","internal");
- this.changeWindowState("maximized");
- this.showHideButtons("view", "edit");
- this.showHideButtons("reset", null);
- this.showHideButtons(null, "maximize");
- this.showHideButtons(null, "minimize");
- this.showHideButtons(null, "restore");
- break;
- case "view":
- fragments[this.fragmentID].setWindowState("normal","internal");
- this.changeWindowState("normal");
- this.showHideButtons("edit", "view");
- this.showHideButtons(null, "reset");
- this.showHideButtons(null, "restore");
- this.showHideButtons("maximize", null);
- this.showHideButtons("minimize", null);
- break;
- }
- },
-
- maximize: function (maximized) {
- var frag = fragments[this.fragmentID];
- var divNorm = $(this.layoutID + "normal");
- var divMax = $(this.layoutID + "maximized");
- var markup = $(frag.id + "frame");
- var banner = $( (frag.getPageFragment() ? frag.getPageFragment().id : "") + "bannerframe");
- if (maximized) {
- divMax.style.display = "block";
- if (banner != null) {
- this.bannerContainerTag = banner.parentNode;
- this.bannerNextTag = banner.nextSibling;
- divMax.appendChild(banner);
- }
- this.containerTag = markup.parentNode;
- this.nextTag = markup.nextSibling;
- divMax.appendChild(markup);
- _F_resetIFrames(markup);
- //divNorm.style.display = "none"; // We use the line below to fix 584962
- setTimeout("$("+this.layoutID+"normal).style.display = \"none\";",0);
-
- this.fixIEScrollBar();
- } else {
- divNorm.style.display = "block";
- if (banner != null) {
- this.bannerContainerTag.insertBefore(banner, this.bannerNextTag);
- }
- this.containerTag.insertBefore(markup, this.nextTag);
- _F_resetIFrames(markup);
- this.containerTag = null;
- this.nextTag = null;
- divMax.style.display = "none";
- this.fixIEScrollBar();
- }
- },
-
- updateTitle: function (title) {
- var capTag = $(this.captionID);
- // make sure that a blank title is always displayed
- if (capTag != null) {
- var frag = fragments[this.fragmentID];
- if (frag.mode == "edit") {
- capTag.innerHTML = _F_Strings.htmlEncode(PFM.formatString(PFM.JS.IDS_JS_LAYOUT_EDITMODE_TITLE, "title", frag.info.title)||"") + "<br>";
- } else {
- capTag.innerHTML = _F_Strings.htmlEncode(title||"") + "<br>";
- }
- }
- },
-
- processEvent: function (evt) {
- if (evt.source.id == this.fragmentID) {
- evt.stopPropagation();
- switch(evt.name) {
- case "fragment.windowstate.change":
- this.changeWindowState(evt.payload.newWindowState);
- break;
- case "fragment.mode.change":
- this.changeMode(evt.payload.newMode);
- break;
- case "fragment.title.change":
- this.updateTitle(evt.payload.newTitle);
- break;
- }
- }
- },
- showBusyIndicator: function (bShow) {
- var refreshTD = $(this.captionID + "_refresh");
- if (refreshTD) {
- var img = refreshTD.getElementsByTagName('IMG').item(0);
- if (img) {
- if (bShow) {
- img.src = _F_Config.webContent + "/fragments/portlet/images/portlet_action_refresh_ani.gif";
- } else {
- img.src = _F_Config.webContent + "/fragments/portlet/images/portlet_action_refresh.gif";
- }
- }
- }
- },
- processBusyIndicator: function (evt) {
- switch(evt.name) {
- case "fragment.retrieve.before":
- this.showBusyIndicator(true);
- break;
- case "fragment.retrieve.after":
- this.showBusyIndicator(false);
- break;
- }
- },
- fixIEScrollBar: function () {
- var fragment = fragments[this.fragmentID];
- if (xIE4Up && fragment.parent && fragment.parent.page) {
- var container = $(fragment.div);
- if (container && container.style.display != "none") {
- // IE shows the horizontal scrollbar inside the content area, this will cause a vertical scrollbar to showup.
- // To remove, we increase the bottom padding.
- var fixScrollbar = function () {
- if (container.scrollHeight > container.clientHeight ) {
- if (!container.ieScrollFix) {
- container.style.paddingBottom = "20px";
- container.ieScrollFix = true;
- }
- } else if (container.ieScrollFix) {
- container.style.paddingBottom = "";
- container.ieScrollFix = false;
- }
- };
- window.setTimeout(fixScrollbar, 1);
- }
- }
- }
- };
- function _F_resetIFrames(markup) {
- var iframes = markup.getElementsByTagName("iframe");
- if (iframes) {
- for (i=0; i < iframes.length; i++) {
- iframes[i].setAttribute("src", iframes[i].getAttribute("src"));
- }
- }
- }
|