ginebra2/chrome/bedrockchrome/toolbar.snippet/toolbar.js
changeset 0 1450b09d0cfd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ginebra2/chrome/bedrockchrome/toolbar.snippet/toolbar.js	Tue May 04 12:39:35 2010 +0300
@@ -0,0 +1,428 @@
+/* create all functions with toolbar */
+
+//
+// INIT the webView Toolbar
+//
+
+function ToolbarSnippet()
+{
+  this.setContainerWidth = function(leftid, rightid, id) {
+      var lcbWidth = document.getElementById(leftid).offsetWidth;
+      var rcbWidth = document.getElementById(rightid).offsetWidth;
+      var totalW =   window.chrome.displaySize.width;
+      
+      var fcWidth = totalW - lcbWidth - rcbWidth;
+      var fcWidthPercent = (fcWidth/totalW) * 100 ;
+      fcWidthPercent = fcWidthPercent.toFixed(2);
+      
+      el =  document.getElementById(id);
+      el.style.width = fcWidthPercent +"%";
+  }
+
+  /*
+  ** Main View Buttons
+  */
+  function LeftCornerButton() {
+      this.writeButton = function() {
+          document.write('<img  class="webToolbarBtn"id="backButton" src="toolbar.snippet/icons/icon_back.png">');       
+      }
+  }
+  function RightCornerButton() { 
+      this.writeButton = function() {
+          document.write('<img  class="webToolbarBtn"id="mvButton">');  
+
+		  new ToggleButton("mvButton", "MostVisitedViewId",
+                         "toolbar.snippet/icons/icon_mostvisited.png",
+                         "toolbar.snippet/icons/icon_mostvisited_pressed.png",
+                         "toolbar.snippet/icons/icon_mostvisited_disabled.png",
+                         _activateMostVisited);                                       
+      }
+      function _activateMostVisited() {
+          window.snippets.ZoomBarId.hide(); // hide Zoom Bar while showing most visited
+		  window.snippets.MostVisitedViewId.toggleVisibility();
+      }      
+  }
+
+  function WinButton() {
+    this.writeButton = function() {
+        document.write('<img class="webToolbarBtn" id="winButton">');        
+        new SimpleButton("winButton",
+                         "toolbar.snippet/icons/icon_windows1.png",
+                         "toolbar.snippet/icons/icon_windows1_pressed.png",
+                         "toolbar.snippet/icons/icon_windows1.png",
+                         _activateWindows);
+    }
+    this.changeWindowIcon = function() {
+        var index = window.pageController.pageCount();
+        var base = "toolbar.snippet/icons/icon_windows" + index;
+        
+        //window.app.debug("BASE "+ base);
+        document.getElementById('winButton').button.updateImages(base + ".png",
+                                                                 base + "_pressed.png",
+                                                                 base + ".png");
+    }
+
+    function _activateWindows() {
+	  window.snippets.ZoomBarId.hide(); // hide Zoom Bar while showing windows view
+	  window.snippets.MostVisitedViewId.hide();
+      window.app.debug("_activateWindows");
+      if(window.views.current().objectName == "WebView") {
+        window.ViewStack.switchView("WindowView", "WebView");
+      }
+      else {
+        window.ViewStack.switchView("WebView", "WindowView");
+      }   
+    }
+  }
+
+  function MenuButton() {
+    this.writeButton = function() {
+        document.write('<img class="webToolbarBtn" id="contextMenuButton">');
+        new ToggleButton("contextMenuButton", "ContextMenuId",
+                         "toolbar.snippet/icons/icon_menu.png",
+                         "toolbar.snippet/icons/icon_menu_pressed.png",
+                         "toolbar.snippet/icons/icon_menu_disabled.png",
+                         _contextMenuF);
+   }
+
+   function _contextMenuF () {
+       window.app.debug("_contextMenuF");
+       if(window.snippets.ContextMenuId.dontShow)
+       {
+           window.snippets.ContextMenuId.dontShow = false;
+           return;
+       }
+       
+       window.snippets.ZoomBarId.hide(); // Don't show Zoom Bar while showing Context Menu
+       window.snippets.MostVisitedViewId.hide();
+       window.snippets.ContextMenuId.repaint();
+       window.snippets.ContextMenuId.zValue = 10;
+       window.snippets.ContextMenuId.show();
+   }
+  }
+  
+  /*!
+    Class to handle displaying the zoom button. The zoom button provides access
+    to the zoom bar.
+  */
+  function ZoomButton() {
+      this.writeButton = function() {
+          document.write('<img class="webToolbarBtn" id="zoomBarButton">');
+          
+          // create simple button to access zoom bar
+          this.theButton = new ToggleButton("zoomBarButton", "ZoomBarId",
+                       "toolbar.snippet/icons/icon_zoom.png",
+                       "toolbar.snippet/icons/icon_zoom_pressed.png",
+                       "toolbar.snippet/icons/icon_zoom_disabled.png",
+                       _zoomBarF);
+    }
+    
+    //! Handles zoom button presses.
+    function _zoomBarF()
+    {
+        window.snippets.MostVisitedViewId.hide();
+        // toggle visibility of zoom bar
+        window.snippets.ZoomBarId.toggleVisibility();
+    }
+    
+    //! Set enabled state of zoom button.
+    /*!
+      \param enabled new enabled state of button
+    */
+    this.setEnabled = function(enabled)
+    {
+      this.theButton.setEnabled(enabled);
+    }
+  } //end of class ZoomButton
+
+  /*
+  ** Windows View Toolbar Buttons
+  */
+  function WinBackButton() {
+      this.writeButton = function() {
+          window.app.debug("WinBackButton:writeButton");
+          document.write('<img class="webToolbarBtn" id="goBacktoWebViewWin">');
+          new SimpleButton("goBacktoWebViewWin",
+                           "toolbar.snippet/icons/icon_back.png",
+                           "toolbar.snippet/icons/icon_back_pressed.png",
+                           "toolbar.snippet/icons/icon_back.png",
+                           _goBackFromWindowView);
+      }
+      _goBackFromWindowView = function() {
+          window.ViewStack.switchView("WebView", "WindowView");
+      }
+  }
+  function WinAddButton() {
+      this.writeButton = function() {
+          document.write('<img class="webToolbarBtn" id="addWindow" src="toolbar.snippet/icons/icon_windowsadd.png">');
+      }
+  }
+  
+  /*
+  ** Bookmarks Toolbar Buttons
+  */
+  function BMBackButton() {
+      this.writeButton = function() {
+          document.write('<img  class="webToolbarBtn" id="goBacktoWebViewBM">');
+          new SimpleButton("goBacktoWebViewBM",
+                           "toolbar.snippet/icons/icon_back.png",
+                           "toolbar.snippet/icons/icon_back_pressed.png",
+                           "toolbar.snippet/icons/icon_back.png",
+                           _goBackFromBookmarkView);
+      }
+      _goBackFromBookmarkView = function() {
+          window.views.WebView.showNormalPage();		
+          window.ViewStack.switchView( "WebView","BookmarkTreeView");
+          views.WebView.gesturesEnabled = true;
+      }
+  }
+  function BMAddButton() { 
+      this.writeButton = function() {
+          document.write('<img  class="webToolbarBtn"id="addToBookMark">');
+          new SimpleButton("addToBookMark",
+			               "toolbar.snippet/icons/icon_addbookmark.png",
+			               "toolbar.snippet/icons/icon_addbookmark_pressed.png",
+			               "toolbar.snippet/icons/icon_addbookmark_disabled.png",
+			               _showBookmarkAddDialog);
+      }
+      _showBookmarkAddDialog = function() {
+          launchBookmarkAddDialog();
+      }
+  }
+
+  /*
+  ** Recent URLs Toolbar Buttons
+  */
+  function RecentURLBackButton() {
+      this.writeButton = function() {
+          document.write('<img  class="webToolbarBtn" id="goBacktoWebViewRecent">');
+          new SimpleButton("goBacktoWebViewRecent",
+                           "toolbar.snippet/icons/icon_back.png",
+                           "toolbar.snippet/icons/icon_back_pressed.png",
+                           "toolbar.snippet/icons/icon_back.png",
+                           _goBackFromRecentUrlView);
+      }			                          
+	  _goBackFromRecentUrlView = function() {
+          window.views.WebView.showNormalPage();
+          window.ViewStack.switchView("WebView", "BookmarkHistoryView");
+      }
+  }
+  function RecentURLClearallButton() {
+      this.writeButton = function() {
+          document.write('<img  class="webToolbarBtn"id="clearHistory">');
+          new SimpleButton("clearHistory",
+                           "toolbar.snippet/icons/icon_clearall.png",
+                           "toolbar.snippet/icons/icon_clearall_pressed.png",
+                           "toolbar.snippet/icons/icon_clearall_disabled.png",
+                           _clearHistory);
+	  }
+      _clearHistory = function() {
+    	  if(confirm("Are you sure you want to permanently delete your history?"))
+          {
+              window.bookmarksManager.clearHistory();
+              window.views.WebView.reload();
+          }
+      }
+  }
+
+	
+
+  /*
+  ** Settings Toolbar Buttons
+  */
+  function SettingsBackButton() {
+    this.writeButton = function() {
+        document.write('<img  class="webToolbarBtn" id="goBacktoWebViewSettings">');
+        new SimpleButton("goBacktoWebViewSettings",
+                         "toolbar.snippet/icons/icon_back.png",
+                         "toolbar.snippet/icons/icon_back_pressed.png",
+                         "toolbar.snippet/icons/icon_back.png",
+                         _goBackFromSettingsView);
+    }			
+    
+      
+                              
+    _goBackFromSettingsView = function() {
+        window.views.WebView.showNormalPage();
+        window.ViewStack.switchView("WebView", "SettingsView");
+        //window.snippets.UrlSearchChromeId.show(false);  
+        
+    }
+  }
+  function SettingsSaveButton() {
+    this.writeButton = function() {
+        document.write('<img  class="webToolbarBtn" id="SaveSettings">');
+        new SimpleButton("SaveSettings",
+                         "toolbar.snippet/icons/icon_clearall.png",
+                         "toolbar.snippet/icons/icon_clearall_pressed.png",
+                         "toolbar.snippet/icons/icon_clearall_disabled.png",
+                         _SaveSet); 
+    }
+    _SaveSet = function() {
+        window.views.WebView.showNormalPage();
+        window.ViewStack.switchView("WebView", "SettingsView");	
+        //window.snippets.UrlSearchChromeId.show(false);    
+    }
+  }
+
+  /*
+  ** Utility functions
+  */
+  function _chromeLoadComplete() {
+    _setActions();
+    winbutton.changeWindowIcon();
+    window.pageController.pageChanged.connect(winbutton.changeWindowIcon);
+  }
+
+  function _chromeAspectChanged() {
+    var lcbWidth = document.getElementById("LCToolbarChromeId").offsetWidth;
+    var rcbWidth = document.getElementById("RCToolbarChromeId").offsetWidth;
+    var totalW =   window.chrome.displaySize.width;
+
+    var fcWidth = totalW - lcbWidth - rcbWidth;
+    var fcWidthPercent = (fcWidth/totalW) * 100 ;
+    fcWidthPercent = fcWidthPercent.toFixed(2);
+
+    // Clear popups if aspect ratio changes
+    window.snippets.ContextMenuId.hide();
+    window.snippets.ZoomBarId.hide();
+    
+    el =  document.getElementById("ButtonContainer");
+    el.style.width = fcWidthPercent +"%";
+
+  }
+
+  function _setActions() {
+      new ActionButton("backButton",
+                       "toolbar.snippet/icons/icon_back.png",
+                       "toolbar.snippet/icons/icon_back_pressed.png",
+                       "toolbar.snippet/icons/icon_back_disabled.png",
+                       window.pageController.actions.back);
+      
+      /* Add 'addWindow' action */
+      new ActionButton("addWindow",
+                       "toolbar.snippet/icons/icon_windowsadd.png",
+                       "toolbar.snippet/icons/icon_windowsadd_pressed.png",
+                       "toolbar.snippet/icons/icon_windowsadd_disabled.png",
+                       window.views.WindowView.actions.addWindow);
+  }
+ 	
+  function _pageLoadComplete(ok) {
+      if(ok) {
+          window.bookmarksManager.addHistory(window.pageController.currentDocUrl,window.pageController.currentDocTitle);
+    }
+  }
+
+  function _pageLoadStarted() {
+	  window.snippets.MostVisitedViewId.hide();	
+      //snippets.ButtonContainer.show();
+  }
+  
+  // Main toolbar button instances
+  var lc = new LeftCornerButton();
+  var rc = new RightCornerButton();
+  var menubutton = new MenuButton();
+  var zoombutton = new ZoomButton();
+  var winbutton = new WinButton();
+  
+  // Windows View toolbar instances
+  var winBackButton = new WinBackButton();
+  var winAddButton = new WinAddButton();
+
+  // Bookmarks View toolbar instances
+  var bmBackButton = new BMBackButton();
+  var bmAddButton = new BMAddButton();
+
+  // Recent URL View toolbar instances
+  var recentBackButton = new RecentURLBackButton();
+  var recentClearallButton = new RecentURLClearallButton();
+
+  // Settings View toolbar instances
+  var settingsBackButton = new SettingsBackButton();
+  var settingsSaveButton = new SettingsSaveButton();
+
+  // Toolbar button write accessor methods
+  this.writeLeftCornerButton = function() { lc.writeButton(); }
+  this.writeRightCornerButton = function() { rc.writeButton(); }
+  this.writeMenuButton = function() { menubutton.writeButton(); } 
+  this.writeWinButton = function() { winbutton.writeButton(); }
+  this.writeZoomButton = function() { zoombutton.writeButton(); }  
+  this.writeWinBackButton = function() { winBackButton.writeButton(); }
+  this.writeWinAddButton = function() { winAddButton.writeButton(); }
+  this.writeBMBackButton = function() { bmBackButton.writeButton(); }
+  this.writeBMAddButton = function() { bmAddButton.writeButton(); }
+  this.writeRecentBackButton = function() { recentBackButton.writeButton(); }
+  this.writeRecentClearallButton = function() { recentClearallButton.writeButton(); }
+  this.writeSettingsBackButton = function() { settingsBackButton.writeButton(); }
+  this.writeSettingsSaveButton = function() { settingsSaveButton.writeButton(); }
+
+  //! Set enabled state of zoom button.
+  /*!
+    \param enabled new enabled state of button
+  */
+  this.setZoomEnabled = function(enabled)
+  {
+    zoombutton.setEnabled(enabled);
+  }
+ 
+  window.chrome.chromeComplete.connect(_chromeLoadComplete);
+  window.chrome.prepareForGeometryChange.connect(_chromeAspectChanged);
+  window.pageController.loadFinished.connect(_pageLoadComplete);
+  window.pageController.loadStarted.connect(_pageLoadStarted);
+
+
+  window.ViewStack.activateWebView.connect(_activateWebView);
+  window.ViewStack.deActivateWebView.connect(_deActivateWebView);
+  window.ViewStack.activateWindowView.connect(_activateWindowView);
+  window.ViewStack.deActivateWindowView.connect(_deActivateWindowView);
+  window.ViewStack.activateBookmark.connect(_activateBookmarkView);
+  window.ViewStack.deActivateBookmark.connect(_deActivateBookmarkView);
+  window.ViewStack.activateBookMarkHistory.connect(_activateRecentUrlView);
+  window.ViewStack.deActivateBookMarkHistory.connect(_deActivateRecentUrlView);
+  window.ViewStack.activateSettingsView.connect(_activateSettingsView);
+  window.ViewStack.deActivateSettingsView.connect(_deActivateSettingsView);
+    
+  function _activateWebView () {
+      window.snippets.WebViewToolbarId.show(false);
+  }
+
+  function _deActivateWebView () {
+      window.snippets.WebViewToolbarId.hide(false);
+  }
+
+  function _activateWindowView () {
+      window.snippets.WindowViewToolbarId.show();
+  }
+
+  function _deActivateWindowView () {
+      window.snippets.WindowViewToolbarId.hide();
+      /* Set the windows icon based on the number of windows */
+      winbutton.changeWindowIcon();
+  }
+  
+  function _activateSettingsView () {
+      window.snippets.SettingsViewToolbarId.show();
+  }
+
+  function _deActivateSettingsView () {
+      window.snippets.SettingsViewToolbarId.hide();
+  }
+
+  function _activateBookmarkView () {
+      window.snippets.BookmarkViewToolbarId.show();
+  }
+
+  function _deActivateBookmarkView () {
+      window.snippets.BookmarkViewToolbarId.hide();
+  }
+
+  function _activateRecentUrlView () {
+      window.snippets.RecentUrlViewToolbarId.show();
+  }
+
+  function _deActivateRecentUrlView () {
+      window.snippets.RecentUrlViewToolbarId.hide();
+  }
+
+} //end of class WebToolbar
+