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

Side by Side Diff: chrome/browser/resources/file_manager/js/file_manager.js

Issue 7828044: [filebrowser] First step to image editor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Removed commented code. Created 9 years, 3 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Setting the src of an img to an empty string can crash the browser, so we 5 // Setting the src of an img to an empty string can crash the browser, so we
6 // use an empty 1x1 gif instead. 6 // use an empty 1x1 gif instead.
7 const EMPTY_IMAGE_URI = 'data:image/gif;base64,' 7 const EMPTY_IMAGE_URI = 'data:image/gif;base64,'
8 + 'R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw%3D%3D'; 8 + 'R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw%3D%3D';
9 9
10 var g_slideshow_data = null; 10 var g_slideshow_data = null;
11 11
12 const IMAGE_EDITOR_ENABLED = false; 12 const GALLERY_ENABLED = true;
13 13
14 /** 14 /**
15 * FileManager constructor. 15 * FileManager constructor.
16 * 16 *
17 * FileManager objects encapsulate the functionality of the file selector 17 * FileManager objects encapsulate the functionality of the file selector
18 * dialogs, as well as the full screen file manager application (though the 18 * dialogs, as well as the full screen file manager application (though the
19 * latter is not yet implemented). 19 * latter is not yet implemented).
20 * 20 *
21 * @param {HTMLElement} dialogDom The DOM node containing the prototypical 21 * @param {HTMLElement} dialogDom The DOM node containing the prototypical
22 * dialog UI. 22 * dialog UI.
(...skipping 1640 matching lines...) Expand 10 before | Expand all | Expand 10 after
1663 // Tweak images, titles of internal tasks. 1663 // Tweak images, titles of internal tasks.
1664 var task_parts = task.taskId.split('|'); 1664 var task_parts = task.taskId.split('|');
1665 if (task_parts[0] == this.getExtensionId_()) { 1665 if (task_parts[0] == this.getExtensionId_()) {
1666 task.internal = true; 1666 task.internal = true;
1667 if (task_parts[1] == 'preview') { 1667 if (task_parts[1] == 'preview') {
1668 // TODO(serya): This hack needed until task.iconUrl get working 1668 // TODO(serya): This hack needed until task.iconUrl get working
1669 // (see GetFileTasksFileBrowserFunction::RunImpl). 1669 // (see GetFileTasksFileBrowserFunction::RunImpl).
1670 task.iconUrl = 1670 task.iconUrl =
1671 chrome.extension.getURL('images/icon_preview_16x16.png'); 1671 chrome.extension.getURL('images/icon_preview_16x16.png');
1672 task.title = str('PREVIEW_IMAGE'); 1672 task.title = str('PREVIEW_IMAGE');
1673 } else if (task_parts[1] == 'edit') {
1674 task.iconUrl =
1675 chrome.extension.getURL('images/icon_preview_16x16.png');
1676 task.title = 'Edit';
1677 if (!IMAGE_EDITOR_ENABLED) continue; // Skip the button creation.
1678 } else if (task_parts[1] == 'play') { 1673 } else if (task_parts[1] == 'play') {
1679 task.iconUrl = 1674 task.iconUrl =
1680 chrome.extension.getURL('images/icon_play_16x16.png'); 1675 chrome.extension.getURL('images/icon_play_16x16.png');
1681 task.title = str('PLAY_MEDIA').replace("&", ""); 1676 task.title = str('PLAY_MEDIA').replace("&", "");
1682 } else if (task_parts[1] == 'enqueue') { 1677 } else if (task_parts[1] == 'enqueue') {
1683 task.iconUrl = 1678 task.iconUrl =
1684 chrome.extension.getURL('images/icon_add_to_queue_16x16.png'); 1679 chrome.extension.getURL('images/icon_add_to_queue_16x16.png');
1685 task.title = str('ENQUEUE'); 1680 task.title = str('ENQUEUE');
1686 } else if (task_parts[1] == 'mount-archive') { 1681 } else if (task_parts[1] == 'mount-archive') {
1687 task.iconUrl = 1682 task.iconUrl =
1688 chrome.extension.getURL('images/icon_mount_archive_16x16.png'); 1683 chrome.extension.getURL('images/icon_mount_archive_16x16.png');
1689 task.title = str('MOUNT_ARCHIVE'); 1684 task.title = str('MOUNT_ARCHIVE');
1690 if (str('ENABLE_ARCHIVES') != 'true') 1685 if (str('ENABLE_ARCHIVES') != 'true')
1691 continue; 1686 continue;
1687 } else if (task_parts[1] == 'gallery') {
1688 task.iconUrl =
1689 chrome.extension.getURL('images/icon_preview_16x16.png');
1690 task.title = str('GALLERY');
1691 if (!GALLERY_ENABLED) continue; // Skip the button creation.
1692 } 1692 }
1693 } 1693 }
1694 this.renderTaskButton_(task); 1694 this.renderTaskButton_(task);
1695 } 1695 }
1696 1696
1697 // These are done in separate functions, as the checks require 1697 // These are done in separate functions, as the checks require
1698 // asynchronous function calls. 1698 // asynchronous function calls.
1699 this.maybeRenderUnmountTask_(selection); 1699 this.maybeRenderUnmountTask_(selection);
1700 this.maybeRenderFormattingTask_(selection); 1700 this.maybeRenderFormattingTask_(selection);
1701 }; 1701 };
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
1868 /** 1868 /**
1869 * Event handler called when some internal task should be executed. 1869 * Event handler called when some internal task should be executed.
1870 */ 1870 */
1871 FileManager.prototype.onFileTaskExecute_ = function(id, details) { 1871 FileManager.prototype.onFileTaskExecute_ = function(id, details) {
1872 var urls = details.entries.map(function(entry) { 1872 var urls = details.entries.map(function(entry) {
1873 return entry.toURL(); 1873 return entry.toURL();
1874 }); 1874 });
1875 if (id == 'preview') { 1875 if (id == 'preview') {
1876 g_slideshow_data = urls; 1876 g_slideshow_data = urls;
1877 chrome.tabs.create({url: "slideshow.html"}); 1877 chrome.tabs.create({url: "slideshow.html"});
1878 } else if (id == 'edit') {
1879 this.openImageEditor_(details.entries[0]);
1880 } else if (id == 'play' || id == 'enqueue') { 1878 } else if (id == 'play' || id == 'enqueue') {
1881 chrome.fileBrowserPrivate.viewFiles(urls, id); 1879 chrome.fileBrowserPrivate.viewFiles(urls, id);
1882 } else if (id == 'mount-archive') { 1880 } else if (id == 'mount-archive') {
1883 for (var index = 0; index < urls.length; ++index) { 1881 for (var index = 0; index < urls.length; ++index) {
1884 this.mountRequests_.push(urls[index]); 1882 this.mountRequests_.push(urls[index]);
1885 chrome.fileBrowserPrivate.addMount(urls[index], 'file', {}); 1883 chrome.fileBrowserPrivate.addMount(urls[index], 'file', {});
1886 } 1884 }
1887 } else if (id == 'unmount-archive') { 1885 } else if (id == 'unmount-archive') {
1888 for (var index = 0; index < urls.length; ++index) { 1886 for (var index = 0; index < urls.length; ++index) {
1889 chrome.fileBrowserPrivate.removeMount(urls[index]); 1887 chrome.fileBrowserPrivate.removeMount(urls[index]);
1890 } 1888 }
1891 } else if (id == 'format-device') { 1889 } else if (id == 'format-device') {
1892 this.confirm.show(str('FORMATTING_WARNING'), function() { 1890 this.confirm.show(str('FORMATTING_WARNING'), function() {
1893 chrome.fileBrowserPrivate.formatDevice(urls[0]); 1891 chrome.fileBrowserPrivate.formatDevice(urls[0]);
1894 }); 1892 });
1893 } else if (id == 'gallery') {
1894 this.openGallery_(details.entries);
1895 } 1895 }
1896 }; 1896 };
1897 1897
1898 FileManager.prototype.getDeviceNumber = function(entry) { 1898 FileManager.prototype.getDeviceNumber = function(entry) {
1899 if (!entry.isDirectory) return false; 1899 if (!entry.isDirectory) return false;
1900 for (var i = 0; i < this.mountPoints_.length; i++) { 1900 for (var i = 0; i < this.mountPoints_.length; i++) {
1901 if (normalizeAbsolutePath(entry.fullPath) == 1901 if (normalizeAbsolutePath(entry.fullPath) ==
1902 normalizeAbsolutePath(this.mountPoints_[i].mountPath)) { 1902 normalizeAbsolutePath(this.mountPoints_[i].mountPath)) {
1903 return i; 1903 return i;
1904 } 1904 }
1905 } 1905 }
1906 return undefined; 1906 return undefined;
1907 } 1907 }
1908 1908
1909 FileManager.prototype.openImageEditor_ = function(entry) { 1909 FileManager.prototype.openGallery_ = function(entries) {
1910 var self = this; 1910 var self = this;
1911 1911
1912 var editorFrame = this.document_.createElement('iframe'); 1912 var galleryFrame = this.document_.createElement('iframe');
1913 editorFrame.className = 'overlay-pane'; 1913 galleryFrame.className = 'overlay-pane';
1914 editorFrame.scrolling = 'no'; 1914 galleryFrame.scrolling = 'no';
1915 1915
1916 editorFrame.onload = function() { 1916 // TODO(dgozman): pass metadata to gallery.
1917 self.cacheMetadata_(entry, function(metadata) { 1917 galleryFrame.onload = function() {
1918 editorFrame.contentWindow.ImageEditor.open( 1918 galleryFrame.contentWindow.Gallery.open(
1919 self.onImageEditorSave_.bind(self, entry), 1919 self.currentDirEntry_,
1920 function () { self.dialogDom_.removeChild(editorFrame) }, 1920 entries,
1921 entry.toURL(), 1921 function () { self.dialogDom_.removeChild(galleryFrame) });
1922 metadata);
1923 });
1924 }; 1922 };
1925 1923
1926 editorFrame.src = 'js/image_editor/image_editor.html'; 1924 galleryFrame.src = 'js/image_editor/gallery.html';
1927 1925 this.dialogDom_.appendChild(galleryFrame);
1928 this.dialogDom_.appendChild(editorFrame);
1929 };
1930
1931 FileManager.prototype.onImageEditorSave_ = function(entry, blob) {
1932 // TODO(kaznacheev): Notify user properly about write failures.
1933 util.writeBlobToFile(entry, blob, function(){},
1934 util.flog('Error writing to ' + entry.fullPath));
1935 this.updatePreview_(); // Metadata may have changed.
1936 }; 1926 };
1937 1927
1938 /** 1928 /**
1939 * Update the breadcrumb display to reflect the current directory. 1929 * Update the breadcrumb display to reflect the current directory.
1940 */ 1930 */
1941 FileManager.prototype.updateBreadcrumbs_ = function() { 1931 FileManager.prototype.updateBreadcrumbs_ = function() {
1942 var bc = this.dialogDom_.querySelector('.breadcrumbs'); 1932 var bc = this.dialogDom_.querySelector('.breadcrumbs');
1943 bc.innerHTML = ''; 1933 bc.innerHTML = '';
1944 1934
1945 var fullPath = this.currentDirEntry_.fullPath.replace(/\/$/, ''); 1935 var fullPath = this.currentDirEntry_.fullPath.replace(/\/$/, '');
(...skipping 1393 matching lines...) Expand 10 before | Expand all | Expand 10 after
3339 3329
3340 if (msg) { 3330 if (msg) {
3341 console.log('no no no'); 3331 console.log('no no no');
3342 this.alert.show(msg, onAccept); 3332 this.alert.show(msg, onAccept);
3343 return false; 3333 return false;
3344 } 3334 }
3345 3335
3346 return true; 3336 return true;
3347 }; 3337 };
3348 })(); 3338 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698