--- /dev/null
+/* ***** BEGIN LICENSE BLOCK *****\r
+ * Copyright (c) 2008-2009 EADS DEFENCE AND SECURITY - All rights reserved.\r
+ * ximfmail is under the triple license MPL 1.1/GPL 2.0/LGPL 2.1.\r
+ *\r
+ *\r
+ * Redistribution and use, in source and binary forms, with or without modification,\r
+ * are permitted provided that the following conditons are met :\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ * 2. MPL 1.1/GPL 2.0/LGPL 2.1. license agreements must be attached\r
+ * in the redistribution of the source code.\r
+ * 3. Neither the names of the copyright holders nor the names of any contributors\r
+ * may be used to endorse or promote products derived from this software without specific\r
+ * prior written permission from EADS Defence and Security.\r
+ *\r
+ * Alternatively, the contents of this file may be used under the terms of\r
+ * either of the GNU General Public License Version 2 or later (the "GPL"),\r
+ * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),\r
+ * in which case the provisions of the GPL or the LGPL are applicable instead\r
+ * of those above. If you wish to allow use of your version of this file only\r
+ * under the terms of either the GPL or the LGPL, and not to allow others to\r
+ * use your version of this file under the terms of the MPL, indicate your\r
+ * decision by deleting the provisions above and replace them with the notice\r
+ * and other provisions required by the GPL or the LGPL. If you do not delete\r
+ * the provisions above, a recipient may use your version of this file under\r
+ * the terms of any one of the MPL, the GPL or the LGPL.\r
+ *\r
+ * REMINDER :\r
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND\r
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\r
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\r
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING\r
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * EADS Defence and Security - 1 Boulevard Jean Moulin -\r
+ * ZAC de la Clef Saint Pierre - 78990 Elancourt - FRANCE (IDDN.FR.001.480012.002.S.P.2008.000.10000)\r
+ *\r
+ * Contributor(s):\r
+ * Copyright(c) Airbus Defence and Space 2014 - All rights reserved\r
+ * ***** END LICENSE BLOCK ***** */\r
+var gJSLoader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].createInstance(Components.interfaces.mozIJSSubScriptLoader);\r
+var gConsole = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);\r
+var gDlgTreeXimf_maxItem_alert = "";\r
+var gDlgTreeXimf_current_selection = null;\r
+var gDlgTreeXimf_current_separator = null;\r
+var gTitleDlg = "";\r
+// RDF list\r
+var gMaxDataList = 15;\r
+var gCurposList = -1;\r
+var gIDTimeoutList = null;\r
+var gIDTimeoutListSearch = null;\r
+var gSearchText = "";\r
+var gRDFList = null;\r
+var gArgsOpener = null;\r
+$(document).ready(function(){\r
+ var gArgs = window.arguments;\r
+ if(gArgs[0].length <= 0) {\r
+ return;\r
+ }\r
+ // load event manager\r
+ $("#ximfmail_dTreeAdd").bind("command",OnPushAddSelection);\r
+ $("#iTreechildDialog").dblclick(OnPushAddSelection);\r
+ $("#ximfmail_dTreeDel").bind("command",OnPushDelSelection);\r
+ $("#ximfmail_dTreeRaz").bind("command",OnPushRazSelection);\r
+ // event for scroll\r
+ $("#ximfmailTreeDialogScroll").mousemove(OnClickScrollTreeList);\r
+ $("#ximfmailTreeDialogScroll").click(OnClickScrollTreeList);\r
+ $("#iTreechildDialog").mousemove(OnClickScrollTreeList);\r
+ $(window).resize(OnClickScrollTreeList);\r
+ document.getElementById("iTreechildDialog").addEventListener('DOMMouseScroll', OnScrollTreeList, false);\r
+ $("#ximfmail.treedialog").keypress(OnKeyPressScrollTreeList);\r
+ $("#ximfmailTreeDialogDisplaybox").keypress(OnKeyPressScrollTreeList);\r
+ // load background datas\r
+ try{\r
+ // gArgs[0] is an XimfmailTreedialogArgs object - XimfmailTreedialogArgs class description at ximfmail.js file\r
+ gArgsOpener = gArgs[0];\r
+ }catch(e){\r
+ gConsole.logStringMessage("[ximfmail - ready ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);\r
+ return;\r
+ }\r
+ // create alert message\r
+ if(parseInt(gArgsOpener.maxItemsSelected, 10) > 1){\r
+ gDlgTreeXimf_maxItem_alert = gArgsOpener.maxItemsSelected + " "+ getIlkProperties("ximfmail.dialog.editor.warning.nbrows");\r
+ }else{\r
+ if(parseInt(gArgsOpener.maxItemsSelected, 10) === 1){\r
+ gDlgTreeXimf_maxItem_alert = gArgsOpener.maxItemsSelected + " "+ getIlkProperties("ximfmail.dialog.editor.warning.nbrows.one");\r
+ }\r
+ }\r
+ try{\r
+ //set main title\r
+ var sTitle = gArgsOpener.title;\r
+ if(sTitle.indexOf(":") !== -1){\r
+ sTitle = sTitle.substring(0,sTitle.lastIndexOf(":"));\r
+ }\r
+ $("#treeDialogHeader").attr("title",sTitle);\r
+ $("#treeDialogHeader").attr("description",gDlgTreeXimf_maxItem_alert);\r
+ //set title columns\r
+ $("#iCol0").attr("label",gArgsOpener.titleColKey);\r
+ $("#iCol1").attr("label",gArgsOpener.titleColLabel);\r
+ }catch(e){\r
+ gConsole.logStringMessage("[ximfmail - AddCurrentSelection ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+ e.lineNumber);\r
+ }\r
+ LoadXmlDatas();\r
+});\r
+/*\r
+ * attach RDF Source to local tree\r
+ */\r
+function LoadXmlDatas(){\r
+ try{\r
+ //\r
+ var tree = document.getElementById("iTreechildDialog");\r
+ gRDFList = new DialogTreeRDFClass();\r
+ gRDFList.initialize(gArgsOpener.dataSource, gArgsOpener.refdataSource);\r
+ tree.database.AddDataSource(gRDFList.getDataSource());\r
+ tree.builder.rebuild();\r
+ OnClickScrollTreeList(0);\r
+ AddCurrentSelection();\r
+ }catch(e){\r
+ gConsole.logStringMessage("[ximfmail - LoadXmlDatas ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);\r
+ }\r
+}\r
+function AddCurrentSelection(){\r
+ // load current selected values\r
+ if(gArgsOpener.currentKeys.length > 0){\r
+ var list = document.getElementById("ximfmail_selection");\r
+ for (var i=0; i<gArgsOpener.currentKeys.length; i++) {\r
+ if(gArgsOpener.currentLabels[i]!==""){\r
+ var item = list.appendItem(gArgsOpener.currentKeys[i]);\r
+ if(gArgsOpener.currentKeys[i]!==""){\r
+ item.setAttribute("tooltiptext",gArgsOpener.currentLabels[i]);\r
+ }\r
+ }\r
+ }\r
+ }\r
+}\r
+function OnPushAddSelection(){\r
+ try{\r
+ var tree = document.getElementById("ximfmail.treedialog");\r
+ var list = document.getElementById("ximfmail_selection");\r
+ var start = new Object();\r
+ var end = new Object();\r
+ var numRanges = tree.view.selection.getRangeCount();\r
+ for (var t=0; t<numRanges; t++){\r
+ tree.view.selection.getRangeAt(t,start,end);\r
+ for (var v=start.value; v<=end.value; v++){\r
+ if(gArgsOpener.maxItemsSelected){\r
+ var nbItems = $("#ximfmail_selection listitem");\r
+ if(nbItems.length >= gArgsOpener.maxItemsSelected){\r
+ ximfAlert(gDlgTreeXimf_maxItem_alert);\r
+ return;\r
+ }\r
+ }\r
+ var item = list.appendItem(tree.view.getCellText(v, tree.columns.getColumnAt(0))); //list.appendItem(label,value)\r
+ item.tooltipText=tree.view.getCellText(v, tree.columns.getColumnAt(1));\r
+ }\r
+ }\r
+ }catch(e){\r
+ gConsole.logStringMessage("[ximfmail - OnPushAddSelection ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);\r
+ }\r
+}\r
+function OnPushDelSelection(){\r
+ var list = document.getElementById("ximfmail_selection");\r
+ list.removeItemAt( list.selectedIndex );\r
+}\r
+function OnPushRazSelection(){\r
+ var list = document.getElementById("ximfmail_selection");\r
+ var count = $("#ximfmail_selection listitem");\r
+ for(var i=count.length; i>0; --i){\r
+ list.removeItemAt(i-1);\r
+ }\r
+}\r
+function doOK(){\r
+ // get current selection\r
+ var list = $("#ximfmail_selection listitem");\r
+ for(var idx_list = 0; idx_list < list.length;++idx_list){\r
+ var currentItem = list[idx_list].getAttribute("label");\r
+ var currentTooltip = list[idx_list].getAttribute("tooltiptext");\r
+ if(currentItem !== ""){\r
+ gArgsOpener.retKeys.push(currentItem);\r
+ gArgsOpener.retLabels.push(currentTooltip);\r
+ }\r
+ }\r
+ return true;\r
+}\r
+/*\r
+ *\r
+ */\r
+function doCancel()\r
+{\r
+ gArgsOpener.retIsCancel=true;\r
+}\r
+function getTreeSelection(){\r
+ var list="";\r
+ var tree = document.getElementById("ximfmail.treedialog");\r
+ var start = new Object();\r
+ var end = new Object();\r
+ var numRanges = tree.view.selection.getRangeCount();\r
+ for (var t=0; t<numRanges; t++){\r
+ tree.view.selection.getRangeAt(t,start,end);\r
+ for (var v=start.value; v<=end.value; v++){\r
+ if (list!=="") {\r
+ list+=",";\r
+ }\r
+ list += tree.view.getCellText(v, tree.columns.getColumnAt(0));\r
+ }\r
+ }\r
+ return list;\r
+}\r
+function OnSelectTreeData(evt){\r
+ var elt = evt.currentTarget;\r
+ if(elt.view){\r
+ // on select\r
+ var cellIndex = 0;\r
+ var cellText = elt.view.getCellText(elt.currentIndex, elt.columns.getColumnAt(cellIndex));\r
+ }\r
+ var row = new Object();\r
+ var col = new Object();\r
+ var child = new Object();\r
+ elt.treeBoxObject.getCellAt(evt.clientX, evt.clientY, row, col, child);\r
+ var idMatch;\r
+ try {\r
+ idMatch = col.value.element.getAttribute('id');\r
+ } catch (error) {\r
+ idMatch = col.value;\r
+ }\r
+}\r
+function OnClickTreeData(evt){\r
+ var elt = evt.currentTarget;\r
+ var row = new Object();\r
+ var col = new Object();\r
+ var child = new Object();\r
+ elt.treeBoxObject.getCellAt(evt.clientX, evt.clientY, row, col, child);\r
+ var idMatch;\r
+ try {\r
+ idMatch = col.value.element.getAttribute('id');\r
+ } catch (error) {\r
+ idMatch = col.value;\r
+ }\r
+}\r
+/* for to scroll */\r
+function OnClickScrollTreeList(evt)\r
+{\r
+ try {\r
+ if (parseInt($("#ximfmailTreeDialogScroll").attr("maxpos"), 10) <=0) {\r
+ return;\r
+ }\r
+ var treeResult = document.getElementById("ximfmail.treedialog");\r
+ $("#iTreechildDialog").attr("hidevscroll","true");\r
+ var curpos = 0;\r
+ curpos = parseInt($("#ximfmailTreeDialogScroll").attr("curpos"), 10);\r
+ var pageLength = gMaxDataList;\r
+ try{\r
+ pageLength = treeResult.boxObject.getPageLength();\r
+ if (0 === pageLength) {\r
+ pageLength = gMaxDataList;\r
+ }\r
+ }catch(e){\r
+ pageLength = gMaxDataList;\r
+ }\r
+ if(gCurposList !== curpos || gMaxDataList !== pageLength || gMaxDataList !== gRDFList.getEntriesCount() || evt === 0) {\r
+ window.setCursor("wait");\r
+ gMaxDataList = pageLength;\r
+ var maxEntry = parseInt(gRDFList.getMaxEntry(), 10);\r
+ gRDFList.updateDisplay(curpos,gMaxDataList-1);\r
+ var maxpos = gMaxDataList;\r
+ if(maxEntry - gMaxDataList >= 0) {\r
+ maxpos = maxEntry - gMaxDataList;\r
+ } else {\r
+ maxpos = -1;\r
+ }\r
+ if (maxEntry < gMaxDataList) {\r
+ gMaxDataList = maxEntry;\r
+ }\r
+ $("#ximfmailTreeDialogScroll").attr("maxpos",maxpos);\r
+ gCurposList = curpos;\r
+ if(maxEntry === 0 || maxpos <= 0) {\r
+ $("#ximfmailTreeDialogScroll").attr("hidden","true");\r
+ gMaxDataList = maxEntry;\r
+ } else {\r
+ $("#ximfmailTreeDialogScroll").removeAttr("hidden");\r
+ }\r
+ if(treeResult.database !== null) {\r
+ treeResult.database.AddDataSource(gRDFList.getDataSource());\r
+ treeResult.builder.rebuild();\r
+ clearTimeout(gIDTimeoutList);\r
+ gIDTimeoutList = setTimeout(OnClickScrollTreeList,100,1);\r
+ }\r
+ }\r
+ }catch(e){\r
+ gConsole.logStringMessage("[ximfmail - OnClickScrollTreeList ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);\r
+ }\r
+ window.setCursor("auto");\r
+}\r
+function OnScrollTreeList(event)\r
+{\r
+ window.setCursor("wait");\r
+ try {\r
+ var curpos = parseInt($("#ximfmailTreeDialogScroll").attr("curpos"), 10);\r
+ var addPos = 0;\r
+ if(event.detail === -3) {\r
+ addPos = -3;\r
+ } else if (event.detail === 3) {\r
+ addPos = 3;\r
+ }\r
+ curpos += addPos;\r
+ var maxpos = parseInt(gRDFList.getMaxEntry(), 10) - gMaxDataList;\r
+ if (curpos<0) {\r
+ curpos = 0;\r
+ }\r
+ if (curpos>maxpos) {\r
+ curpos = maxpos;\r
+ }\r
+ $("#ximfmailTreeDialogScroll").attr("curpos", curpos);\r
+ OnClickScrollTreeList(0);\r
+ }\r
+ catch(e)\r
+ {\r
+ gConsole.logStringMessage("[ximfmail - OnScrollTreeList ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);\r
+ }\r
+ window.setCursor("auto");\r
+}\r
+function OnKeyPressScrollTreeList(event)\r
+{\r
+ window.setCursor("wait");\r
+ gConsole.logStringMessage("[ximfmail - OnKeyPressScrollTreeList ] enter");\r
+ try\r
+ {\r
+ var curpos = parseInt($("#ximfmailTreeDialogScroll").attr("curpos"), 10);\r
+ var addPos = 0;\r
+ var maxEntry = parseInt(gRDFList.getMaxEntry(), 10);\r
+ var maxpos = maxEntry - gMaxDataList;\r
+ var textToFind = "";\r
+ switch(event.keyCode)\r
+ {\r
+ case 33:\r
+ // page up\r
+ addPos = 1-gMaxDataList;\r
+ break;\r
+ case 34:\r
+ // page down\r
+ addPos = gMaxDataList-1;\r
+ break;\r
+ case 35:\r
+ // end\r
+ addPos = 0;\r
+ curpos = maxpos;\r
+ break;\r
+ case 36:\r
+ // beggin\r
+ addPos = 0;\r
+ curpos = 0;\r
+ break;\r
+ case 38:\r
+ // up\r
+ addPos = -1;\r
+ break;\r
+ case 40:\r
+ // down\r
+ addPos = 1;\r
+ break;\r
+ default:\r
+ if(event.charCode === 0)\r
+ {\r
+ window.setCursor("auto");\r
+ return;\r
+ }\r
+ else {\r
+ textToFind = String.fromCharCode(event.charCode);\r
+ }\r
+ }\r
+ if("" === textToFind)\r
+ {\r
+ curpos += addPos;\r
+ if(curpos<0) {\r
+ curpos = 0;\r
+ }\r
+ if(curpos>maxpos) {\r
+ curpos = maxpos;\r
+ }\r
+ $("#ximfmailTreeDialogScroll").attr("curpos", curpos);\r
+ OnClickScrollTreeList(0);\r
+ }\r
+ else\r
+ {\r
+ clearTimeout(gIDTimeoutListSearch);\r
+ gSearchText += textToFind;\r
+ var curposAfter = gRDFList.updateDisplayByText(gSearchText,gMaxDataList,curpos);\r
+ if(curposAfter === -1)\r
+ {\r
+ gSearchText = "";\r
+ window.setCursor("auto");\r
+ return;\r
+ }\r
+ else\r
+ {\r
+ var maxpos = gMaxDataList;\r
+ if(maxEntry - gMaxDataList >= 0){\r
+ maxpos = maxEntry - gMaxDataList;\r
+ } else {\r
+ maxpos = -1;\r
+ }\r
+\r
+ if(maxEntry < gMaxDataList) {\r
+ gMaxDataList = maxEntry;\r
+ }\r
+ $("#ximfmailTreeDialogScroll").attr("maxpos",maxpos);\r
+ $("#ximfmailTreeDialogScroll").attr("curpos", curposAfter);\r
+ OnClickScrollTreeList(0);\r
+\r
+ gIDTimeoutListSearch = setTimeout(resetSearchText,2000);\r
+ }\r
+ }\r
+ }\r
+ catch(e)\r
+ {\r
+ gConsole.logStringMessage("[ximfmail - OnKeyPressScrollTreeList ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);\r
+ }\r
+ window.setCursor("auto");\r
+}\r
+function resetSearchText()\r
+{\r
+ gSearchText = "";\r
+ gIDTimeoutListSearch = null;\r
+}\r