Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4694)

Unified Diff: chrome/browser/resources/ntp4/apps_page.js

Issue 7038051: NTP4: Add ability to drag links to the apps pages. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/resources/ntp4/apps_page.css ('k') | chrome/browser/resources/ntp4/most_visited_page.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/ntp4/apps_page.js
diff --git a/chrome/browser/resources/ntp4/apps_page.js b/chrome/browser/resources/ntp4/apps_page.js
index cf46e19b606030421abdfde984d215bed5004043..4f3e84bd619774a47aec3af325afdde916857ed1 100644
--- a/chrome/browser/resources/ntp4/apps_page.js
+++ b/chrome/browser/resources/ntp4/apps_page.js
@@ -79,6 +79,48 @@ cr.define('ntp4', function() {
},
};
+ /**
+ * Creates a new Link object. This is a stub implementation for now.
+ * @param {Object} data The url and title.
+ * @constructor
+ * @extends {HTMLAnchorElement}
+ */
+ function Link(data) {
+ var el = cr.doc.createElement('a');
+ el.__proto__ = Link.prototype;
+ el.data = data;
+ el.initialize();
+
+ return el;
+ };
+
+ Link.prototype = {
+ __proto__: HTMLAnchorElement.prototype,
+
+ initialize: function() {
+ this.className = 'link';
+ var thumbnailDiv = this.ownerDocument.createElement('div');
+ this.appendChild(thumbnailDiv);
+
+ var title = cr.doc.createElement('span');
arv (Not doing code reviews) 2011/05/20 23:49:07 Use this.ownerDocument here too
Evan Stade 2011/05/21 00:20:06 Done.
+ title.textContent = this.data.title;
+ this.appendChild(title);
+ },
+
+ /**
+ * Set the size and position of the link tile.
+ * @param {number} size The total size of |this|.
+ * @param {number} x The x-position.
+ * @param {number} y The y-position.
+ * animate.
+ */
+ setBounds: function(size, x, y) {
+ this.style.width = this.style.height = size + 'px';
+ this.style.left = x + 'px';
+ this.style.top = y + 'px';
+ },
+ };
+
// The fraction of the app tile size that the icon uses.
var APP_IMG_SIZE_FRACTION = 4 / 5;
@@ -124,6 +166,36 @@ cr.define('ntp4', function() {
appendApp: function(appData) {
this.appendTile(new App(appData));
},
+
+ /** @inheritDoc */
+ shouldAcceptDrag: function(tile, dataTransfer) {
+ return tile || (dataTransfer && dataTransfer.types.indexOf('url') != -1);
+ },
+
+ /** @inheritDoc */
+ addOutsideData: function(dataTransfer, index) {
+ var url = dataTransfer.getData('url');
+ assert(url);
+ if (!url)
+ return;
+
+ // If the dataTransfer has html data, use that html's text contents as the
+ // title of the new link.
+ var html = dataTransfer.getData('text/html');
+ var title;
+ if (html) {
+ // It's important that we don't attach this node to the document
+ // because it might contain scripts.
+ var node = this.ownerDocument.createElement('div');
+ node.innerHTML = html;
+ title = node.textContent;
+ }
+ if (!title)
+ title = url;
+
+ var data = {url: url, title: title};
+ this.addTileAt(new Link(data), index);
+ },
};
return {
« no previous file with comments | « chrome/browser/resources/ntp4/apps_page.css ('k') | chrome/browser/resources/ntp4/most_visited_page.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698