home *** CD-ROM | disk | FTP | other *** search
/ Revista do CD-ROM 97 / CD-ROM 97 / CD-ROM 97.iso / internet / ghostzilla / ghsetup.exe / chrome / comm.jar / content / communicator / pref / pref-applications.js < prev    next >
Encoding:
JavaScript  |  2002-04-10  |  6.0 KB  |  163 lines

  1. /* -*- Mode: Java; tab-width: 2; c-basic-offset: 2; -*-
  2.  * 
  3.  * The contents of this file are subject to the Netscape Public License
  4.  * Version 1.0 (the "NPL"); you may not use this file except in
  5.  * compliance with the NPL.  You may obtain a copy of the NPL at
  6.  * http://www.mozilla.org/NPL/
  7.  *
  8.  * Software distributed under the NPL is distributed on an "AS IS" basis,
  9.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
  10.  * for the specific language governing rights and limitations under the
  11.  * NPL.
  12.  *
  13.  * The Initial Developer of this code under the NPL is Netscape
  14.  * Communications Corporation.  Portions created by Netscape are
  15.  * Copyright (C) 1998 Netscape Communications Corporation.  All Rights
  16.  * Reserved.
  17.  *
  18.  * Contributor(s):
  19.  */
  20.  
  21. var gNewTypeRV    = null;
  22. var gUpdateTypeRV = null;
  23. var gList   = null;
  24. var gDS     = null;
  25. var gPrefApplicationsBundle = null;
  26.  
  27. var gExtensionField = null;
  28. var gMIMETypeField  = null;
  29. var gHandlerField   = null;
  30. var gNewTypeButton  = null;
  31. var gEditButton     = null;
  32. var gRemoveButton   = null;
  33.  
  34. function newType()
  35. {
  36.   window.openDialog("chrome://communicator/content/pref/pref-applications-new.xul", "appEdit", "chrome,modal=yes,resizable=no");
  37.   if (gNewTypeRV) {
  38.     //gList.builder.rebuild();
  39.     gList.setAttribute("ref", "urn:mimetypes");
  40.     gNewTypeRV = null;
  41.   }
  42. }
  43.  
  44. function removeType()
  45. {
  46.   var titleMsg = gPrefApplicationsBundle.getString("removeHandlerTitle");
  47.   var dialogMsg = gPrefApplicationsBundle.getString("removeHandler");
  48.   dialogMsg = dialogMsg.replace(/%n/g, "\n");
  49.   var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(Components.interfaces.nsIPromptService);
  50.   var remove = promptService.confirm(window, titleMsg, dialogMsg);
  51.   if (remove) {
  52.     var uri = gList.selectedItems[0].id;
  53.     var handlerOverride = new HandlerOverride(uri);
  54.     removeOverride(handlerOverride.mimeType);
  55.     gList.setAttribute("ref", "urn:mimetypes");
  56.   }
  57. }
  58.  
  59. function editType()
  60. {
  61.   if (gList.selectedItems && gList.selectedItems[0]) {
  62.     var uri = gList.selectedItems[0].id;
  63.     var handlerOverride = new HandlerOverride(uri);
  64.     window.openDialog("chrome://communicator/content/pref/pref-applications-edit.xul", "appEdit", "chrome,modal=yes,resizable=no", handlerOverride);
  65.     selectApplication();
  66.   }
  67. }
  68.  
  69. function Startup()
  70. {
  71.   // set up the string bundle
  72.   gPrefApplicationsBundle = document.getElementById("bundle_prefApplications");
  73.  
  74.   // set up the elements
  75.   gList = document.getElementById("appList"); 
  76.   gExtensionField = document.getElementById("extension");        
  77.   gMIMETypeField  = document.getElementById("mimeType");
  78.   gHandlerField   = document.getElementById("handler");
  79.   gNewTypeButton  = document.getElementById("newTypeButton");
  80.   gEditButton     = document.getElementById("editButton");
  81.   gRemoveButton   = document.getElementById("removeButton");
  82.  
  83.   // Disable the Edit & Remove buttons until we click on something
  84.   updateLockedButtonState(false);
  85.  
  86.   const mimeTypes = "UMimTyp";
  87.   var fileLocator = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties);
  88.   
  89.   var file = fileLocator.get(mimeTypes, Components.interfaces.nsIFile);
  90.  
  91.   var ioService = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
  92.   dump("spec is " + ioService.getURLSpecFromFile(file));
  93.   gDS = gRDF.GetDataSource(ioService.getURLSpecFromFile(file));
  94.  
  95.   // intialize the listbox
  96.   gList.database.AddDataSource(gDS);
  97.   gList.setAttribute("ref", "urn:mimetypes");
  98. }
  99.  
  100. function selectApplication()
  101. {
  102.   if (gList.selectedItems && gList.selectedItems.length && gList.selectedItems[0]) {
  103.     var uri = gList.selectedItems[0].id;
  104.     var handlerOverride = new HandlerOverride(uri);
  105.     gExtensionField.setAttribute("value", handlerOverride.extensions);
  106.     gMIMETypeField.setAttribute("value", handlerOverride.mimeType);
  107.     
  108.     // figure out how this type is handled
  109.     if (handlerOverride.handleInternal == "true")
  110.       gHandlerField.setAttribute("value",
  111.                                  gPrefApplicationsBundle.getString("handleInternally"));
  112.     else if (handlerOverride.saveToDisk == "true")
  113.       gHandlerField.setAttribute("value",
  114.                                  gPrefApplicationsBundle.getString("saveToDisk"));
  115.     else 
  116.       gHandlerField.setAttribute("value", handlerOverride.appDisplayName);
  117.     var ext;
  118.     var posOfFirstSpace = handlerOverride.extensions.indexOf(" ");
  119.     if (posOfFirstSpace > -1)
  120.       ext = handlerOverride.extensions.substr(0, posOfFirstSpace);
  121.     else
  122.       ext = handlerOverride.extensions;
  123.     var imageString = "moz-icon://" + "dummy." + ext.toLowerCase() + "?size=32&contentType=" + handlerOverride.mimeType;
  124.     document.getElementById("contentTypeImage").setAttribute("src", imageString);
  125.     updateLockedButtonState(handlerOverride.isEditable == "true");
  126.     delete handlerOverride;
  127.   } else {
  128.     updateLockedButtonState(false)
  129.     gHandlerField.removeAttribute("value");
  130.     document.getElementById("contentTypeImage").removeAttribute("src");
  131.     gExtensionField.removeAttribute("value");
  132.     gMIMETypeField.removeAttribute("value");
  133.   }
  134.  
  135. // disable locked buttons
  136. function updateLockedButtonState(handlerEditable)
  137. {
  138.   gNewTypeButton.disabled = parent.hPrefWindow.getPrefIsLocked(gNewTypeButton.getAttribute("prefstring") );
  139.   if (!handlerEditable ||
  140.       parent.hPrefWindow.getPrefIsLocked(gEditButton.getAttribute("prefstring"))) {
  141.     gEditButton.disabled = true;
  142.   } else {
  143.     gEditButton.disabled = false;
  144.   }
  145.       
  146.   if (!handlerEditable ||
  147.       parent.hPrefWindow.getPrefIsLocked(gRemoveButton.getAttribute("prefstring"))) {
  148.     gRemoveButton.disabled = true;
  149.   } else {
  150.     gRemoveButton.disabled = false;
  151.   }
  152. }
  153.  
  154. function clearRememberedSettings()
  155. {
  156.   var prefBranch = Components.classes["@mozilla.org/preferences;1"].getService(Components.interfaces.nsIPrefBranch);
  157.   if (prefBranch) {
  158.     prefBranch.setCharPref("browser.helperApps.neverAsk.saveToDisk", "");
  159.     prefBranch.setCharPref("browser.helperApps.neverAsk.openFile", "");
  160.   }
  161. }
  162.