diff -r b0dd75e285d2 -r 0954f5dd2cd0 ginebra2/chrome/bedrockchrome/chrome.js --- a/ginebra2/chrome/bedrockchrome/chrome.js Fri May 14 15:40:36 2010 +0300 +++ b/ginebra2/chrome/bedrockchrome/chrome.js Tue Jun 29 00:46:29 2010 -0400 @@ -1,17 +1,4 @@ -var _backEnabled = false; - -function onBackEnabled(enabled) -{ - _backEnabled = enabled; -} - -var _forwardEnabled = false; - -function onForwardEnabled(enabled) -{ - _forwardEnabled = enabled; -} - +var preLoadBookmarksDone=0; function calcToolbarPopAnchorOffset(anchoredSnippet, anchorToSnippet, xCenterOffset, @@ -30,29 +17,175 @@ // anchorToGeom = anchorToSnippet.getGeometry(); anchoredGeom = anchoredSnippet.getGeometry(); - xOffset = -(0.5 * anchoredGeom.width) + + xOffset = -(0.5 * anchoredGeom.width) + (0.5 * anchorToGeom.width) + xCenterOffset; yOffset = -anchoredGeom.height - yBotGap; return([xOffset,yOffset]); } -function onChromeComplete(){ - window.snippets.UrlSearchChromeId.anchorToView("top"); +// Display the super-page with the given name and path. +function showSuperPage(pageName, path) { + + if (window.views.WebView[pageName] == undefined) { + window.views.WebView.createSuperPage(pageName, true); + window.views.WebView[pageName].load(chrome.baseDirectory + path); + } + + if (!window.views.WebView.bedrockTiledBackingStoreEnabled()) + window.views.WebView.zoomFactor = 1.0; + //window.views.WebView.showSuperPage(pageName); + window.ViewStack.switchView(pageName, "WebView"); + if (!window.views.WebView.bedrockTiledBackingStoreEnabled()) + window.views.WebView.touchNav.doubleClickEnabled = false; +} + +function chrome_showBookmarksView() { + showSuperPage("BookmarkTreeView", "bookmarkview.superpage/BookmarkView.html"); +} + +function chrome_showHistoryView() { + showSuperPage("BookmarkHistoryView", "historyview.superpage/historyView.html"); +} + +function chrome_showWindowsView() { + window.snippets.ZoomBarId.hide(); // hide Zoom Bar while showing windows view + window.snippets.MostVisitedViewId.hide(); + window.ViewStack.switchView("WindowView", "WebView"); +} + +function chrome_showSettingsView() { + showSuperPage("SettingsView", "settingsview.superpage/SettingsView.html"); +} + +function chrome_showBasicMenu() { + + cm_TheContextMenu.show(viewMenu_getWebViewContextMenuData()); + +} + +function chrome_addBookmark() { + launchBookmarkDialog(window.pageController.currentDocTitle,window.pageController.currentDocUrl,0); +} + +function chrome_cancelMenu() { + + cm_TheContextMenu.cancel(); +} + +// Center the given snippet on-screen. +function centerSnippet(snippet) { + var x = (chrome.displaySize.width - snippet.geometry.width) / 2; + var y = (chrome.displaySize.height - snippet.geometry.height) / 2; + snippet.setPosition(x, y); +} + +function getChildById(el, childId) { + var children = el.getElementsByTagName("*"); + for (var i = 0; i < children.length; i++) { + var child = children[i]; + if (child.id == childId) + return child; + } + return undefined; +} + +function onActivateBookmarkView() { + window.bookmarksManager.launchBookmarkEditDailog.connect(showBookmarkEditDialog); +} +function preLoad() +{ + preloadSuperPage("BookmarkTreeView", "bookmarkview.superpage/BookmarkView.html"); + preloadSuperPage("SettingsView", "settingsview.superpage/SettingsView.html"); + preLoadBookmarksDone=1; +} +function _updateHistory() +{ + preloadSuperPage("BookmarkHistoryView", "historyview.superpage/historyView.html"); + +} + +function _updateBookmarks() +{ + preloadSuperPage("BookmarkTreeView", "bookmarkview.superpage/BookmarkView.html"); +} + +// chrome_popupShownCount keeps a count of how many popups are currently being shown so that +// we can re-enable the appropriate UI elements only when the last one is hidden. +var chrome_popupShownCount = 0; + +// Called when a PopupChromeItem is displayed. +function onPopupShown(id) { + if(chrome_popupShownCount == 0) { + // Disable snippets etc. that should be greyed-out while the popup is shown. + snippets.UrlSearchChromeId.enabled = false; + views.WebView.enabled = false; + views.WebView.freeze(); + + // Note: this can be expanded as needed. We may want to disable all snippets except + // for the status bar and the one who's id was passed in. + } + chrome_popupShownCount++; - window.views.WebView.backEnabled(onBackEnabled); - window.views.WebView.forwardEnabled(onForwardEnabled); + if(preLoadBookmarksDone==0) + { + preLoad(); + } +} + +// Called when a PopupChromeItem is hidden. +function onPopupHidden(id) { + chrome_popupShownCount--; + if(chrome_popupShownCount == 0) { + // Re-enable snippets etc. that were greyed-out while popups were being shown. + snippets.UrlSearchChromeId.enabled = true; + views.WebView.enabled = true; + views.WebView.unfreeze(); + } + if(chrome_popupShownCount < 0) app.debug("onPopupHidden: error, chrome_popupShownCount invalid"); +} + +function preloadSuperPage(pageName, path) { + if (window.views.WebView[pageName] == undefined) { + window.views.WebView.createSuperPage(pageName, true); + } + window.views.WebView[pageName].load(chrome.baseDirectory + path); +} + +function onChromeComplete(){ + if (app.ui() == "orbit_ui") { + snippets.StatusBarChromeId.hide(); + } + + window.snippets.WebViewToolbarId.menuButtonSelected.connect(chrome_showBasicMenu); + window.snippets.BookmarkViewToolbarId.addBookmarkSelected.connect(chrome_addBookmark); + window.snippets.UrlSearchChromeId.anchorToView("top"); + window.snippets.WebViewToolbarId.menuButtonCanceled.connect(chrome_cancelMenu); + //window.snippets.ButtonContainer.setVisibilityAnimator("G_VISIBILITY_FADE_ANIMATOR"); - + result = new Array; result = calcToolbarPopAnchorOffset(window.snippets.ZoomBarId, - window.snippets.ZooomButtonSnippet, - 0,10); - window.snippets.ZoomBarId.anchorTo("ZooomButtonSnippet",result[0],result[1]); + window.snippets.ZoomButtonSnippet, + 0,10); + window.snippets.ZoomBarId.anchorTo("ZoomButtonSnippet",result[0],result[1]); + + snippets.SuggestsChromeId.url = chrome.baseDirectory + "suggests.snippet/suggests.html"; - result = calcToolbarPopAnchorOffset(window.snippets.ContextMenuId, - window.snippets.MenuButtonSnippet, - 0,10); - - window.snippets.ContextMenuId.anchorTo("MenuButtonSnippet",result[0],result[1]); + window.ViewStack.activateBookmark.connect(onActivateBookmarkView); + + chrome.popupShown.connect(onPopupShown); + chrome.popupHidden.connect(onPopupHidden); + window.pageController.loadFinished.connect(_updateHistory); + window.bookmarksManager.bookmarksCleared.connect(_updateBookmarks); + window.bookmarksManager.historyCleared.connect(_updateHistory); } + +// For debugging: prints all properties and functions attached to a given object. +function printProp(x) { + var str = "-------------\n" + x + " properties:\n"; + for (property in x) { + str += ("\t" + property + ": " + x[property] + "\n"); + } + app.debug(str); +}