ginebra2/chrome/bedrockchrome/bookmarkview.superpage/bookmarkview.js
changeset 0 1450b09d0cfd
child 3 0954f5dd2cd0
child 5 0f2326c2a325
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ginebra2/chrome/bedrockchrome/bookmarkview.superpage/bookmarkview.js	Tue May 04 12:39:35 2010 +0300
@@ -0,0 +1,250 @@
+var _prevOpenedBookmarkControl = null;
+var previousSortEle = null;
+
+function BookmarkToggleControls(ele){
+	try {
+		
+			if(_sortingEnabled && ele.parentNode.parentNode!=previousSortEle) 
+			{
+				_sortingEnabled = false;
+				previousSortEle.className = 'li.no-sort';
+				views.WebView.gesturesEnabled = true;
+				return false;
+			}		
+			else if(_sortingEnabled && (ele.parentNode.parentNode==previousSortEle))
+			{
+				return false;
+			}
+			
+			ele.parentNode.className = (ele.parentNode.className == 'controlIn') ? 'controlOut' : 'controlIn';
+			if(ele.parentNode.className == 'controlIn') {
+				ele.className = 'collapsed';
+				ele.parentNode.childNodes[1].className = "collapsedIcons";
+				ele.parentNode.parentNode.childNodes[1].style.width = (parseInt(window.innerWidth)-115)+"px";
+			}
+	 		else {		
+				ele.className = 'expanded';
+				ele.parentNode.childNodes[1].className = "expandedIcons";
+				ele.parentNode.parentNode.childNodes[1].style.width = (parseInt(window.innerWidth)-195)+"px";
+			}
+
+		if(_prevOpenedBookmarkControl != null && _prevOpenedBookmarkControl != ele)
+			BookmarkHideControl(_prevOpenedBookmarkControl);
+			
+	}catch(e) { alert(e); }
+	_prevOpenedBookmarkControl = ele;
+}
+
+
+function BookmarkHideControl(ele){
+	ele.parentNode.className = 'controlIn';
+ 	ele.className = 'collapsed';
+}
+
+
+function deleteBookmark(r,bmtitle)
+{
+	window.bookmarksManager.deleteBookmark(bmtitle);
+	//ToDo : check for error code
+	r.parentNode.parentNode.parentNode.removeChild(r.parentNode.parentNode);
+}
+
+
+function openUrl(ele, newUrl) {
+		// DragStart & DragEnd listeners are defined at bottom
+		if(_sortingEnabled && (ele.parentNode!=previousSortEle)) 
+		{
+			_sortingEnabled = false;
+			previousSortEle.className = 'li.no-sort';
+			views.WebView.gesturesEnabled = true;
+			return false;
+		}
+		else if(_sortingEnabled && (ele.parentNode==previousSortEle))
+			{
+				return false;
+			}
+		else if(__dragendFlag) 
+		{
+			__dragendFlag = false;
+			return false;
+		}		
+
+    window.views.WebView.showNormalPage();
+    window.ViewStack.switchView( "WebView","BookmarkTreeView");
+      	  
+		// Laod a page to chrome view
+		window.views.WebView.loadUrlToCurrentPage(newUrl);
+		views.WebView.gesturesEnabled = true;
+}
+
+
+//'<div class="Title"  onclick="openUrl(\''+bmurl+'\')">'+
+//'<div class="collapsedIcons"><img src="icons/edit-icon.gif" width="56" height="56" class="controlIcon">'+
+//background-image: url(\''+bmfavicon+'\');
+
+function createBookmarkElement(bmtitle,bmfullurl,bmtrimmedurl, idValue)
+{
+		var _width = parseInt(window.innerWidth)-115;
+		
+		var li=document.createElement('li');
+		li.id = idValue;
+		li.innerHTML = 	  
+		'<div class="controlIn">'+
+		  '<div class="collapsed" onClick="javascript:BookmarkToggleControls(this);"></div>'+
+			'<img class="controlIcon" src="icons/delete-icon.gif" width="56" height="56" vspace="7" hspace="5"  onclick="deleteBookmark(this, \''+bmtitle+'\')">'+
+		'</div>'+
+		'<div class="Title" style="width:'+_width+'px;" onclick="openUrl(this,\''+bmfullurl+'\')">'+
+			'<span class="aTitle">'+bmtitle+'</span>'+
+			'<br/>'+
+			'<span class="aUrl">'+bmtrimmedurl+'</span>'+
+		'</div>';
+		
+		return li;
+}
+
+function clearBookmarkList()
+{
+	var list = document.getElementById('bookmarkListTree'); 
+	while( list.hasChildNodes() ) { 
+		list.removeChild( list.lastChild ); 
+	} 
+}
+
+var __dragendFlag = false;
+
+function longtapbm(ele)
+{ 
+  if(_sortingEnabled)
+  {
+			_sortingEnabled = false;
+			previousSortEle.className = 'li.no-sort';
+			views.WebView.gesturesEnabled = true;
+			return false;
+  }
+  	
+  _sortingEnabled = true;
+  _sortEleOffsetTop = ele.offsetTop;
+  views.WebView.gesturesEnabled = false;
+	ele.className = 'sort';
+	previousSortEle = ele;
+	$("#bookmarkListTree").sortable('enable');
+
+}
+
+// Set to the LongPress object that is currently waiting for activation,
+// ie. it has gotten a mouse-down event and has its timer running.
+var __currentLongPress;
+
+function longPressStarted(lp)
+{
+    // Remember the current LongPress object so we can cancel it if scrolling
+    // starts.
+    __currentLongPress = lp;
+}
+
+function handlePanStarted(type) 
+{
+    // Scrolling started, cancel the LongPress.
+    if(__currentLongPress != undefined) {
+        __currentLongPress.cancel();
+        __currentLongPress = undefined;
+    }
+}
+
+function createBookmarkView()
+{
+		try
+		{
+			__currentLongPress = undefined;
+			clearBookmarkList();
+			//Get bookmarks data from database
+			var bookmakrData = window.bookmarksManager.getBookmarksJSON();
+			var myObject = eval('(' + bookmakrData + ')');
+			var ul=document.getElementById('bookmarkListTree');
+			for(x=0; x<myObject.length; x++)
+			{
+				var bmurl = myObject[x].urlvalue;
+				var bmtitle = myObject[x].title;
+				var bmtrimmedurl = bmurl.replace('http://','');
+				bmtrimmedurl = bmtrimmedurl.replace('www.','');
+				bmtrimmedurl = bmtrimmedurl.replace('file:///','');
+				
+				//create element and add it to bookmark view   
+				var li = createBookmarkElement(bmtitle,bmurl,bmtrimmedurl, x);
+				li.className = 'no-sort';
+				ul.appendChild(li);
+				ul.childNodes[0].focus();
+				
+				new LongPress(li.id, longtapbm, longPressStarted);
+			}
+		} catch(E) { alert(E); }
+		dragInit();
+}
+
+function _updateBookmarkViewGoemetry(displayMode)
+{
+	try{
+		var _list = document.getElementsByClassName('Title');
+		for(var i=0; i<_list.length; i++){
+			 if(_list[i].parentNode.childNodes[0].className == 'controlIn'){
+			 	_list[i].style.width = (parseInt(window.innerWidth)-115)+"px";
+			}
+			 else{		
+			 		_list[i].style.width = (parseInt(window.innerWidth)-195)+"px";
+			 }
+		}
+	}catch(e){ alert(e); }
+
+}
+
+function launchBookmarkView()
+{
+	try{
+        window.chrome.aspectChanged.connect(_updateBookmarkViewGoemetry);
+        		
+        // Get Bookmarks from the database		
+        createBookmarkView();
+
+        // Watch for the start of scrolling in the view so we can cancel the 
+        // long presses to prevent them from interfere with scrolling.  Otherwise
+        // the long press callback will fire and trigger sortable mode.        
+        views.WebView.startingPanGesture.connect(handlePanStarted);
+        
+    }catch(e){ alert(e); }	
+}
+
+function dragInit()
+{
+	$("#bookmarkListTree").sortable({
+		placeholder: 'ui-state-highlight',
+		axis:'y',
+	  cancel : 'li.no-sort',
+	  scrollSensitivity : 40,
+	  scrollSpeed : 40,
+		start: function(event, ui) {  
+			__dragendFlag = true; 
+			},
+	  update: function(event, ui) {
+			 _sortingEnabled = false;	
+	     views.WebView.gesturesEnabled = true;
+			 $("#bookmarkListTree").sortable('disable');
+	
+				var sortedItemId = ui.item[0].id;
+				var _a = $('#bookmarkListTree').sortable('toArray');
+				for(var i=0; i<_a.length; i++)
+				{
+					if(sortedItemId == _a[i])
+					{
+						var li = document.getElementById(sortedItemId);
+						li.className = 'no-sort';
+						var div = li.childNodes[1];
+						window.bookmarksManager.reorderBokmarks(div.childNodes[0].firstChild.nodeValue,i);
+					}
+				}
+			}
+	});
+	
+	$("#bookmarkListTree").sortable('disable');
+	$("#bookmarkListTree").disableSelection();
+		
+}