ginebra/chrome/bedrockchrome/urlsearch.snippet/urlsearch.js
changeset 3 0954f5dd2cd0
parent 1 b0dd75e285d2
child 4 d5cdb6bc139d
--- a/ginebra/chrome/bedrockchrome/urlsearch.snippet/urlsearch.js	Fri May 14 15:40:36 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,567 +0,0 @@
-/*!
-  \file urlsearch.js This module contains the UrlSearch class.
-*/
-
-var enumObj = new Object();
-enumObj.state = {Loading:0, Editing:1, Reloadable:2}
-
-/* The following "classes" are psudo classes since javascript doesn't have 
-   true classes. The prototype object is a property of all JavaScript
-   objects and can be used to impart properties to each instance of a
-   class - these properties become public and can't access private class 
-   members. Another way to create a public method is to add code like the
-   following inside of the class constructor.
-   
-   // create a public method named clearPBar
-   this.clearPBar = function()
-   {
-   }
-   
-   Methods created this way can access private members. Syntax-wise, 
-   private member variables and methods are created in the usual fasion but 
-   within the class constructor. Semantically they are simulated in JavaScript 
-   using closures.
-*/
-
-/*!
-  Class to handle displaying and updating the URL search bar. Only 1 search 
-  bar should be created for the browser. This class is not designed to be code
-  space efficient for creating multiple URL search bar objects.
-*/
-function UrlSearch(lastUrl)
-{   
-    /*!
-      Class to handle displaying and updating the URL text box.
-    */
-    function UrlTextBox()
-    {
-    }
-    
-    //! UrlTextBox Public Methods
-    
-    UrlTextBox.prototype.getTextBoxValue = function()
-    {
-        return document.gotoUrlForm.textBox.value;
-    }
-    
-    UrlTextBox.prototype.setTextBoxValue = function(text)
-    {
-        //window.chrome.alert("setTextBoxValue" + text);
-        document.gotoUrlForm.textBox.value = text;
-    }
-    
-    // Unused Method
-    UrlTextBox.prototype.textBoxFocus = function()
-    {
-        document.gotoUrlForm.textBox.focus();
-    }
-    
-    UrlTextBox.prototype.hasFocus = function()
-    {
-        return document.getElementById("urlBox").hasFocus;
-    }
-    
-    UrlTextBox.prototype.setFocus = function(hasFocus)
-    {
-        document.getElementById("urlBox").hasFocus = hasFocus;
-    }
-    
-    /*!
-      Class to handle displaying and updating the URL tri-state button.
-    */
-    function UrlTriStateButton()
-    {
-    }
-    
-    //! UrlTriStateButton Public Methods
-    UrlTriStateButton.prototype.setButton = function()
-    {
-        //window.chrome.alert("setButton " + window.pageController.loadState);
-        btnDom = document.getElementById("tristateBtn").button;
-        switch (window.pageController.loadState) {
-        case enumObj.state.Loading:
-            btnDom.updateImages("urlsearch.snippet/icons/stop.png",
-                                "urlsearch.snippet/icons/stop_pushed.png",
-                                "urlsearch.snippet/icons/stop.png");
-            break;
-        case enumObj.state.Editing:
-            btnDom.updateImages("urlsearch.snippet/icons/goto.png",
-                                "urlsearch.snippet/icons/goto_pushed.png",
-                                "urlsearch.snippet/icons/goto.png");
-            break;
-        case enumObj.state.Reloadable:
-            btnDom.updateImages("urlsearch.snippet/icons/reload.png",
-                                "urlsearch.snippet/icons/reload_pushed.png",
-                                "urlsearch.snippet/icons/reload.png");
-            break;
-        default:
-            window.chrome.alert("Incorrect state");
-            break;
-        }
-        
-        document.getElementById("tristateBtn").button.updateButton();
-    }
-
-    // Unused Method
-    UrlTriStateButton.prototype.changeTriState = function(a)
-    {
-       if (this.getValue() != a) {
-            this.setValue(a);
-            /* Shouln't have to do this check. This function should be 
-             * called only after chrome has completed loading which 
-             * means that all snippets have also been created.
-             */
-            if (window.snippets.UrlSearchChromeId) {
-                window.snippets.UrlSearchChromeId.repaint();
-            } 
-       }
-    }
-    
-    /*!
-      Class to handle displaying and updating the URL progress bar.
-    */
-    function UrlProgressBar()
-    {
-        this.oldpercent = 0;
-    }
-    
-    //! UrlProgressBar Public Methods
-    
-    UrlProgressBar.prototype.setProgress = function(widthStr)
-    {
-        document.getElementById("PBar").style.width = widthStr;
-    }
-    
-    UrlProgressBar.prototype.handlePageLoadProgress = function(percent)
-    {
-        //window.chrome.alert("Load prog "+percent);
-        if ((window.viewManager.currentView.type == "webView")  &&
-            (this.oldpercent != percent)) {
-            this.oldpercent = percent;
-            //window.chrome.alert("Load prog "+percent);
-            var parentWidth = document.getElementById("PWrap").offsetWidth;
-            this.setProgress((parentWidth * percent)/100 + "px");
-        }
-    }
-    
-    UrlProgressBar.prototype.updateProgress = function(percent)
-    {
-        if (percent != 100) {
-            //window.chrome.alert("Load prog "+percent);
-            var parentWidth = document.getElementById("PWrap").offsetWidth;
-            this.setProgress((parentWidth * percent)/100 + "px");
-        } else {
-            //clearProgressBar();
-            this.setProgress("0%");
-            oldpercent = 0;
-        }
-    }
-    
-    // UrlSearch Private Member Variables
-    var animator;
-    var animating = false;
-    var defaultPos;
-    var defaultHeight;
-    var animateDuration = 500;
-    var __blockDeselect = false;
-    var urlBarTextBox = new UrlTextBox();
-    var urlBarButton = new UrlTriStateButton();
-    var urlBarProgressBar = new UrlProgressBar();
-    var searchSuggestEngine = new SearchSuggest();
-    // UrlSearch Private Methods
-    
-    function _urlsearch_write(lastUrl) {
-          var html = ''+
-            '<form name = "gotoUrlForm">' +
-              '<table id="UrlSearchTable">' +
-              '<tr>' +
-                '<td id="faviconCell"><img id = "favicon" src="urlsearch.snippet/icons/defaultFavicon.png"></td>'+
-                '<td>' +
-                  '<div id="PWrap">' +
-                  '<input type ="text" id = "urlBox" name = "textBox" value="' + lastUrl + '" '  +
-                  'maxlength="256" '+
-                  'OnFocus="urlsearch.focusElement(this,event)" '+
-                  'OnMouseUp="return urlsearch.mouseUpElement(this,event)" '+
-                  'OnMouseDown="urlsearch.mouseDownElement(this,event)" '+
-                  'OnKeyUp="urlsearch.resetTriState();urlsearch.querySuggests();"/>' +
-                  '<div id="PBar"></div>' +
-                  '</div>' +
-                '</td>' +
-                '<td id="tristateBtnCell"' +
-                  '<img id="tristateBtn">' +
-                '</td>' +
-              '</tr>' +
-              '</table>' +
-            '</form>';
-
-        document.write(html);
-    }
-    
-    function loadToMainWindow(gotourl){
-        // use a single call to guess url and goto url
-        // (could do as separate calls, but we try to eliminate lag with a single call)
-
-        //var correctedUrl = window.chrome.guessAndGotoUrl(gotourl);
-        //urlBarTextBox.setTextBoxValue(correctedUrl);
-
-        var gotourl = window.chrome.guessUrlFromString(gotourl);
-        window.pageController.currentLoad(gotourl);
-        urlBarTextBox.setTextBoxValue(gotourl);
-        window.pageController.urlTextChanged(gotourl);
-    }
-    
-    function loadSearchUrl(gotourl){
-        var gotourl = window.chrome.searchUrl(gotourl);
-        window.pageController.currentLoad(gotourl);
-        urlBarTextBox.setTextBoxValue(gotourl);
-        window.pageController.urlTextChanged(gotourl);
-    }
-
-    function chromeAlert(){
-        window.chrome.alert("chrome Alert!");
-    }
-
-    function canSeeUrl()
-    {
-        return (!window.snippets.UrlSearchChromeId.isHiding && window.snippets.UrlSearchChromeId.isVisible());
-    }
-
-    function showUrlBar()
-    {
-        if (!canSeeUrl()) {
-            //window.chrome.alert("showUrlbar");
-            window.snippets.UrlSearchChromeId.zValue =  window.snippets.StatusBarChromeId.zValue - 1;
-            window.snippets.UrlSearchChromeId.setPosition(0,defaultPos);
-            window.snippets.UrlSearchChromeId.show(false);
-            window.chrome.updateViewPort();
-        }
-    }
-
-    function hideUrlBar()
-    {
-        //window.chrome.alert("hideUrlbar");
-        if (canSeeUrl()) {
-            window.snippets.UrlSearchChromeId.hide(false);
-        }
-    }
-
-    function slideUrlOut() {
-        //window.chrome.alert("slideUrlOut");
-        if (canSeeUrl()) {
-            window.snippets.UrlSearchChromeId.zValue =  window.snippets.StatusBarChromeId.zValue - 1;
-            animating = true;
-            //window.snippets.UrlSearchChromeId.isHiding = true;
-            animator = window.snippets.UrlSearchChromeId.animate(animateDuration).translateBy(0, -1 * defaultHeight).start();
-            animator.updated.connect(animationUpdated);
-            animator.finished.connect(hideAnimationFinished);
-        }
-    }
-
-    function slideUrlIn()
-    {
-        /* show it at right position and zorder first */
-        window.snippets.UrlSearchChromeId.zValue =  window.snippets.StatusBarChromeId.zValue - 1;
-        window.snippets.UrlSearchChromeId.setPosition(0, defaultPos-defaultHeight);
-        window.snippets.UrlSearchChromeId.show(false);
-        //window.snippets.UrlSearchChromeId.isHiding = false;
-
-        animating = true;
-        animator = window.snippets.UrlSearchChromeId.animate(animateDuration).translateBy(0, defaultHeight).start();
-        animator.updated.connect(animationUpdated);
-        animator.finished.connect(showAnimationFinished);
-    }
-    
-    function setUrlSearchValues()
-    {
-        //window.chrome.alert("setUrlSearchValues " + window.pageController.loadText);
-        urlBarTextBox.setTextBoxValue(window.pageController.loadText);
-        urlBarButton.setButton();
-
-        //window.chrome.alert("setProgress " + "New: " +  window.pageController.loadProgressValue +  " Old Value: " + oldpercent );
-        var percent = window.pageController.loadProgressValue;
-        
-        urlBarProgressBar.updateProgress(percent);
-        if (percent == 100) {
-            __blockDeselect = false;
-            urlBarTextBox.setFocus(false);
-        }
-        window.snippets.UrlSearchChromeId.repaint();
-    }
-
-    function animationUpdated(value)
-    {
-        window.chrome.updateViewPort();
-    }
-
-    function hideAnimationFinished()
-    {
-        //window.chrome.alert("hideAnimationFinished");
-        animating = false;
-        window.snippets.UrlSearchChromeId.isHiding = true;
-    }
-
-    function showAnimationFinished()
-    {
-        //window.chrome.alert("showAnimationFinished");
-        animating = false;
-        window.snippets.UrlSearchChromeId.isHiding = false;
-    }
-    
-    // Public Methods
-    this.focusElement = function(el, event)
-    {
-        el.select();
-        __blockDeselect = true;
-        document.getElementById("urlBox").scrollLeft = 1000;
-        urlBarTextBox.setFocus(true);
-    }
-
-    this.mouseDownElement = function(el, event)
-    {
-        // Clear __justSelected in case the element gained focus through some non-mouse event
-        // and still has focus.
-        __blockDeselect = false;
-    }
-
-    this.mouseUpElement = function(el, event)
-    {
-        // Return false to prevent Qt from deselecting the text if we've just selected it
-        // in focusElement(), return true otherwise.
-
-        var result = !__blockDeselect;
-        __blockDeselect = false;
-        return result;
-    }
-
-    this.clearPBar = function()
-    {
-        urlBarProgressBar.setProgress("0%");
-    }
-
-    this.pushTriState = function()
-    {
-        //window.chrome.alert("pushTriState " + window.pageController.loadState);
-        switch (window.pageController.loadState) {
-        case enumObj.state.Loading:
-            //window.chrome.alert("In loading state, stop loading");
-            window.pageController.currentStop();
-            setTimeout("urlsearch.clearPBar()", 50);
-            break;
-        case enumObj.state.Editing:
-            //window.chrome.alert("In editing state, start loading");
-            loadToMainWindow(urlBarTextBox.getTextBoxValue());
-            break;
-        case enumObj.state.Reloadable:
-            //window.chrome.alert("In reloadable state, start reloading");
-            window.pageController.currentReload();
-            break;
-        default:
-            window.chrome.alert("Incorrect state");
-            break;
-        }
-        urlBarButton.setButton();
-
-    }
-
-    this.resetTriState = function()
-    {
-        if(window.pageController.loadState == enumObj.state.Reloadable) {
-            urlBarTextBox.setFocus(true);
-            //window.chrome.alert("Change to editing");
-            window.pageController.setLoadState(enumObj.state.Editing);
-            urlBarButton.setButton();
-        }
-    }
-
-    this.querySuggests = function()
-    {
-        /* Disable suggests
-        var text = urlBarTextBox.getTextBoxValue();
-        //window.chrome.alert("call searchSuggest " + text);
-        searchSuggests.removeAllItems();
-        searchSuggests.hideSuggests();
-        searchSuggestEngine.searchSuggest(text, this.updateSuggests);
-        */
-    }
-
-    this.updateSuggests = function(result)
-    {
-        var curText = urlBarTextBox.getTextBoxValue();
-        searchSuggests.removeAllItems();
-        if (result.length > 1 && curText == result[0]){
-            for(var i = 1; i < result.length; i++) {
-                //window.chrome.alert(result[i]);
-                searchSuggests.addItem(result[i]);
-            }
-        searchSuggests.showSuggests();
-        }
-        
-        
-            
-    }
-
-    // UrlSearch Constructor
-    
-    // do setup
-    _urlsearch_write(lastUrl);
-
-
-    // Init the button
-    new SimpleButton("tristateBtn",
-                     "urlsearch.snippet/icons/goto.png",
-                     "urlsearch.snippet/icons/goto_pushed.png",
-                     "urlsearch.snippet/icons/goto.png",
-                     this.pushTriState);
-    urlBarButton.setButton();
-    
-    // Note that in the slots below the "this" object is never used directly.
-    // This is because they don't have access to "this" as they are called
-    // externaly.
-    
-    // Connect Chrome load complete signal to slot.
-    window.chrome.loadComplete.connect(
-        function () {
-            defaultPos = window.snippets.UrlSearchChromeId.anchorOffset;
-            defaultHeight = UrlSearchChromeId.offsetHeight;
-        }
-        );
-
-    // Connect various Page Controller signals to slots.
-    window.pageController.pageUrlChanged.connect(
-        function(url) {
-            //window.chrome.alert(url);
-            //url is coming from loadContoller. So need not set it back
-            urlBarTextBox.setTextBoxValue(url);
-        }
-        );
-
-    window.pageController.pageLoadStarted.connect(
-        function() {
-            //window.chrome.alert("Load start");
-            urlBarProgressBar.setProgress("5%");
-            urlBarButton.setButton();
-            
-            /* show url bar if it's hiding in contentView */
-            if (window.viewManager.currentView.type == "webView") {
-                if (window.snippets.UrlSearchChromeId) {
-                    showUrlBar();
-                }
-            }
-        }
-        );
-
-    window.pageController.pageLoadProgress.connect(
-        function(percent) {
-            urlBarProgressBar.handlePageLoadProgress(percent);
-        }
-        );
-
-    window.pageController.pageLoadFinished.connect(
-        function(ok) {
-            //window.chrome.alert("pageLoadFinished: ");
-            // If the load was finished normally and not due to user stopping it,
-            // simulate progress completion 
-            if(!window.pageController.loadCanceled) {
-                urlBarProgressBar.setProgress("99%");
-            }
-            setTimeout("urlsearch.clearPBar()", 500);
-            __blockDeselect = false;
-            urlBarTextBox.setFocus(false);
-            urlBarButton.setButton();
-
-            /* start hide animation if contentYpos is not zero */
-            if (window.viewManager.currentView.type == "webView") {
-               if (window.snippets.UrlSearchChromeId && window.pageController.contentsYPos > 0) {
-                   slideUrlOut();
-                }
-            }
-        }
-        );
-
-    window.pageController.pageIconChanged.connect(
-        function() {
-            window.chrome.alert("FAVICON changed");
-        }
-        );
-
-    window.pageController.pageCreated.connect(
-        function() {
-            //window.chrome.alert("add new window");
-            showUrlBar();
-        }
-        );
-
-    window.pageController.pageChanged.connect(
-        function() {
-
-         //window.chrome.alert("Page  changed");
-         // Set the values of the new page 
-         setUrlSearchValues();
-        }
-        );
-
-    window.pageController.pageScrollPositionZero.connect(
-        function() {
-            var contentYPos = window.pageController.contentsYPos;
-            //window.chrome.alert("pageScrollRequested contentYPos = " + contentYPos);
-            if (contentYPos > 0) {
-                if(canSeeUrl() && !animating && !pageController.isPageLoading) {
-                    slideUrlOut();
-                    //window.chrome.updateViewPort();
-                }
-            }
-            else {
-                if(!canSeeUrl() && !animating) {
-                    slideUrlIn();
-                }
-            }
-        }
-        );
-    
-    // Connect snippets CR signal to slot.
-    window.snippets.symbianCarriageReturn.connect(
-        function() {
-            if (urlBarTextBox.hasFocus()) {
-                // When we get load started, the button will be changed
-                loadToMainWindow(urlBarTextBox.getTextBoxValue());
-            }
-        }
-        );
-
-    // Connect View Manager current view changed signal to slot.
-    window.viewManager.currentViewChanged.connect(
-        function() {
-             if (window.viewManager.currentView.type ==  "webView") {
-                 /*window.chrome.alert("currentViewChanged  window.viewManager.currentView.type =" + window.viewManager.currentView.type + "Pos " + window.pageController.contentsYPos == 0  + "Loading still: " + pageController.isPageLoading);*/
-                 // When we change back to content view, show the urlsearch bar if either we are
-                 // at the top or we are still loading the page (in this case, we will hide the urlsearch bar
-                 // if needed on getting loadFinished
-                 if (window.pageController.contentsYPos == 0 || pageController.isPageLoading) {
-                     // show url bar with no animation
-                     showUrlBar();
-                 }
-                 //set the correct values based on the window 
-                 //window.chrome.alert("currentViewChanged " + window.pageController.loadText);
-                 setUrlSearchValues();
-                 
-                 // place focus in urlsearch bar when returning from adding a new window in windows view
-                 if (window.pageController.loadText == "") {
-                     __blockDeselect = false;
-                     document.getElementById("urlBox").focus();
-                     return;
-                 }
-             } else {
-                 //Save url text box value
-                 window.pageController.urlTextChanged(urlBarTextBox.getTextBoxValue());
-             
-                 // Remove progress bar and url text field value so that 
-                 // incorrect values are not seen before we can update when we come back 
-                 urlBarTextBox.setTextBoxValue("");
-                 urlBarProgressBar.setProgress("0%");
-                 hideUrlBar();
-             }
-     
-        }
-        );
-}
-