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

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

Issue 8745013: [filebrowser] Support renaming in Gallery. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years 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 /* 5 /*
6 * Base class that Ribbon uses to display photos. 6 * Base class that Ribbon uses to display photos.
7 */ 7 */
8 8
9 function RibbonClient() {} 9 function RibbonClient() {}
10 10
(...skipping 19 matching lines...) Expand all
30 this.closeCallback_ = closeCallback; 30 this.closeCallback_ = closeCallback;
31 this.metadataProvider_ = metadataProvider; 31 this.metadataProvider_ = metadataProvider;
32 32
33 this.displayStringFunction_ = function(id) { 33 this.displayStringFunction_ = function(id) {
34 return displayStringFunction('GALLERY_' + id.toUpperCase()); 34 return displayStringFunction('GALLERY_' + id.toUpperCase());
35 }; 35 };
36 36
37 this.onFadeTimeoutBound_ = this.onFadeTimeout_.bind(this); 37 this.onFadeTimeoutBound_ = this.onFadeTimeout_.bind(this);
38 this.fadeTimeoutId_ = null; 38 this.fadeTimeoutId_ = null;
39 this.mouseOverTool_ = false; 39 this.mouseOverTool_ = false;
40 this.imageChanges_ = 0;
40 41
41 this.initDom_(shareActions); 42 this.initDom_(shareActions);
42 } 43 }
43 44
44 Gallery.prototype = { __proto__: RibbonClient.prototype }; 45 Gallery.prototype = { __proto__: RibbonClient.prototype };
45 46
46 Gallery.open = function(parentDirEntry, items, selectedItem, 47 Gallery.open = function(parentDirEntry, items, selectedItem,
47 closeCallback, metadataProvider, shareActions, displayStringFunction) { 48 closeCallback, metadataProvider, shareActions, displayStringFunction) {
48 var container = document.querySelector('.gallery'); 49 var container = document.querySelector('.gallery');
49 container.innerHTML = ''; 50 container.innerHTML = '';
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 this.container_.appendChild(this.closeButton_); 90 this.container_.appendChild(this.closeButton_);
90 91
91 this.imageContainer_ = doc.createElement('div'); 92 this.imageContainer_ = doc.createElement('div');
92 this.imageContainer_.className = 'image-container'; 93 this.imageContainer_.className = 'image-container';
93 this.container_.appendChild(this.imageContainer_); 94 this.container_.appendChild(this.imageContainer_);
94 95
95 this.toolbar_ = doc.createElement('div'); 96 this.toolbar_ = doc.createElement('div');
96 this.toolbar_.className = 'toolbar tool dimmable'; 97 this.toolbar_.className = 'toolbar tool dimmable';
97 this.container_.appendChild(this.toolbar_); 98 this.container_.appendChild(this.toolbar_);
98 99
100 var filenameSpacer = doc.createElement('div');
101 filenameSpacer.className = 'filename-spacer';
102 this.toolbar_.appendChild(filenameSpacer);
103
104 this.filenameEdit_ = doc.createElement('input');
105 this.filenameEdit_.setAttribute('type', 'text');
106 this.filenameEdit_.addEventListener('blur',
107 this.updateFilename_.bind(this));
108 this.filenameEdit_.addEventListener('keydown',
109 this.onFilenameEditKeydown_.bind(this));
110 filenameSpacer.appendChild(this.filenameEdit_);
111
99 this.ribbonSpacer_ = doc.createElement('div'); 112 this.ribbonSpacer_ = doc.createElement('div');
100 this.ribbonSpacer_.className = 'ribbon-spacer'; 113 this.ribbonSpacer_.className = 'ribbon-spacer';
101 this.toolbar_.appendChild(this.ribbonSpacer_); 114 this.toolbar_.appendChild(this.ribbonSpacer_);
102 115
103 this.arrowBox_ = this.document_.createElement('div'); 116 this.arrowBox_ = this.document_.createElement('div');
104 this.arrowBox_.className = 'arrow-box'; 117 this.arrowBox_.className = 'arrow-box';
105 this.container_.appendChild(this.arrowBox_); 118 this.container_.appendChild(this.arrowBox_);
106 119
107 this.arrowLeft_ = this.document_.createElement('div'); 120 this.arrowLeft_ = this.document_.createElement('div');
108 this.arrowLeft_.className = 'arrow left tool dimmable'; 121 this.arrowLeft_.className = 'arrow left tool dimmable';
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 159
147 this.editor_ = new ImageEditor( 160 this.editor_ = new ImageEditor(
148 this.container_, 161 this.container_,
149 this.imageContainer_, 162 this.imageContainer_,
150 this.editBarMain_, 163 this.editBarMain_,
151 this.editBarModeWrapper_, 164 this.editBarModeWrapper_,
152 Gallery.editorModes, 165 Gallery.editorModes,
153 this.displayStringFunction_); 166 this.displayStringFunction_);
154 167
155 this.imageView_ = this.editor_.getImageView(); 168 this.imageView_ = this.editor_.getImageView();
169 this.imageView_.addContentCallback(this.onImageContentChanged_.bind(this));
156 170
157 this.editor_.trackWindow(doc.defaultView); 171 this.editor_.trackWindow(doc.defaultView);
158 172
159 if (shareActions.length > 0) { 173 if (shareActions.length > 0) {
160 this.shareMode_ = new ShareMode( 174 this.shareMode_ = new ShareMode(
161 this.container_, this.toolbar_, shareActions, 175 this.container_, this.toolbar_, shareActions,
162 this.onShare_.bind(this), this.onActionExecute_.bind(this), 176 this.onShare_.bind(this), this.onActionExecute_.bind(this),
163 this.displayStringFunction_); 177 this.displayStringFunction_);
164 178
165 } else { 179 } else {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 function initRibbon() { 219 function initRibbon() {
206 self.ribbon_.load(urls, selectedIndex); 220 self.ribbon_.load(urls, selectedIndex);
207 // Flash the ribbon briefly to let the user know it is there. 221 // Flash the ribbon briefly to let the user know it is there.
208 self.cancelFading_(); 222 self.cancelFading_();
209 self.initiateFading_(Gallery.FIRST_FADE_TIMEOUT); 223 self.initiateFading_(Gallery.FIRST_FADE_TIMEOUT);
210 } 224 }
211 225
212 var selectedURL = urls[selectedIndex]; 226 var selectedURL = urls[selectedIndex];
213 // Initialize the ribbon only after the selected image is fully loaded. 227 // Initialize the ribbon only after the selected image is fully loaded.
214 this.metadataProvider_.fetch(selectedURL, function (metadata) { 228 this.metadataProvider_.fetch(selectedURL, function (metadata) {
229 // The first change is load, we should not count it.
230 self.imageChanges_ = -1;
231 self.filenameEdit_.value = ImageUtil.getFileNameFromUrl(selectedURL);
Vladislav Kaznacheev 2011/12/01 10:34:09 Did you forget to add image_util.js?
dgozman 2011/12/01 11:34:05 Whoops. Added.
215 self.editor_.openSession( 232 self.editor_.openSession(
216 selectedIndex, selectedURL, metadata, 0, initRibbon); 233 selectedIndex, selectedURL, metadata, 0, initRibbon);
217 }); 234 });
218 }; 235 };
219 236
237 Gallery.prototype.onImageContentChanged_ = function() {
238 this.imageChanges_++;
239 if (this.imageChanges_ == 1)
240 this.ribbon_.getSelectedItem().setCopyName();
241 this.updateFilename_();
242 };
243
220 Gallery.prototype.saveItem_ = function(item, callback, canvas, modified) { 244 Gallery.prototype.saveItem_ = function(item, callback, canvas, modified) {
221 if (modified) { 245 if (modified) {
222 item.save( 246 item.save(
223 this.parentDirEntry_, this.metadataProvider_, canvas, callback); 247 this.parentDirEntry_, this.metadataProvider_, canvas, callback);
224 } else { 248 } else {
225 if (callback) callback(); 249 if (callback) callback();
226 } 250 }
227 }; 251 };
228 252
229 Gallery.prototype.saveChanges_ = function(opt_callback) { 253 Gallery.prototype.saveChanges_ = function(opt_callback) {
254 this.imageChanges_ = 0;
230 this.editor_.requestImage( 255 this.editor_.requestImage(
231 this.saveItem_.bind(this, this.ribbon_.getSelectedItem(), opt_callback)); 256 this.saveItem_.bind(this, this.ribbon_.getSelectedItem(), opt_callback));
232 }; 257 };
233 258
234 Gallery.prototype.onActionExecute_ = function(action) { 259 Gallery.prototype.onActionExecute_ = function(action) {
235 var url = this.ribbon_.getSelectedItem().getUrl(); 260 var url = this.ribbon_.getSelectedItem().getUrl();
236 // saveChanges_ makes the editor leave the mode and close the sharing menu. 261 // saveChanges_ makes the editor leave the mode and close the sharing menu.
237 this.saveChanges_(action.execute.bind(action, [url])); 262 this.saveChanges_(action.execute.bind(action, [url]));
238 }; 263 };
239 264
265 Gallery.prototype.updateFilename_ = function() {
266 var item = this.ribbon_.getSelectedItem();
267 if (!item)
268 return;
269
270 var fullName = item.getCopyName() ||
271 ImageUtil.getFullNameFromUrl(item.getUrl());
272 this.filenameEdit_.value = ImageUtil.getFileNameFromFullName(fullName);
273 };
274
275 Gallery.prototype.onFilenameEditKeydown_ = function() {
276 switch (event.keyCode) {
277 case 27: // Escape
278 this.filenameEdit_.blur();
279 break;
280
281 case 13: // Enter
282 if (this.filenameEdit_.value) {
283 this.renameItem_(this.ribbon_.getSelectedItem(),
284 this.filenameEdit_.value);
285 this.filenameEdit_.blur();
286 }
287 break;
288 }
289 event.stopPropagation();
290 };
291
292 Gallery.prototype.renameItem_ = function(item, name) {
293 if (this.imageChanges_ > 0) {
294 // We are editing the file.
295 item.setCopyName(ImageUtil.replaceFileNameInFullName(
296 item.getCopyName(), name));
297 return;
Vladislav Kaznacheev 2011/12/01 10:34:09 I think we should check for existing file name, we
dgozman 2011/12/01 11:34:05 Done.
298 }
299
300 var dir = this.parentDirEntry_;
301 var self = this;
302 var newName = ImageUtil.replaceFileNameInFullName(
303 ImageUtil.getFullNameFromUrl(item.getUrl()), name);
304
305 function onError() {
306 console.log('Rename error: "' +
307 ImageUtil.getFullNameFromUrl(item.getUrl()) + '" to "' + name + '"');
308 }
309
310 function onSuccess(entry) {
311 item.setUrl(entry.toURL());
312 self.updateFilename_();
313 }
314
315 function doRename() {
316 dir.getFile(
317 ImageUtil.getFullNameFromUrl(item.getUrl()),
318 {create: false},
319 function(entry) { entry.moveTo(dir, newName, onSuccess, onError); },
320 onError);
321 }
322
323 function onVictimFound(victim) {
324 self.editor_.getPrompt().show('file_exists', 3000);
325 }
326
327 dir.getFile(newName, {create: false, exclusive: false},
328 onVictimFound, doRename);
329 };
330
240 Gallery.prototype.onClose_ = function() { 331 Gallery.prototype.onClose_ = function() {
241 // TODO: handle write errors gracefully (suggest retry or saving elsewhere). 332 // TODO: handle write errors gracefully (suggest retry or saving elsewhere).
242 this.saveChanges_(this.closeCallback_); 333 this.saveChanges_(this.closeCallback_);
243 }; 334 };
244 335
245 Gallery.prototype.prefetchImage = function(id, content, metadata) { 336 Gallery.prototype.prefetchImage = function(id, content, metadata) {
246 this.editor_.prefetchImage(id, content, metadata); 337 this.editor_.prefetchImage(id, content, metadata);
247 }; 338 };
248 339
249 Gallery.prototype.openImage = function(id, content, metadata, slide, callback) { 340 Gallery.prototype.openImage = function(id, content, metadata, slide, callback) {
341 // The first change is load, we should not count it.
342 this.imageChanges_ = -1;
343 this.updateFilename_();
250 this.editor_.openSession(id, content, metadata, slide, callback); 344 this.editor_.openSession(id, content, metadata, slide, callback);
251 }; 345 };
252 346
253 Gallery.prototype.closeImage = function(item) { 347 Gallery.prototype.closeImage = function(item) {
254 this.editor_.closeSession(this.saveItem_.bind(this, item, null)); 348 this.editor_.closeSession(this.saveItem_.bind(this, item, null));
255 }; 349 };
256 350
257 Gallery.prototype.isEditing_ = function() { 351 Gallery.prototype.isEditing_ = function() {
258 return this.container_.hasAttribute('editing'); 352 return this.container_.hasAttribute('editing');
259 }; 353 };
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 * @param {MetadataProvider} metadataProvider 471 * @param {MetadataProvider} metadataProvider
378 * @param {HTMLElement} arrowLeft 472 * @param {HTMLElement} arrowLeft
379 * @param {HTMLElement} arrowRight 473 * @param {HTMLElement} arrowRight
380 */ 474 */
381 function Ribbon(container, client, metadataProvider, arrowLeft, arrowRight) { 475 function Ribbon(container, client, metadataProvider, arrowLeft, arrowRight) {
382 this.container_ = container; 476 this.container_ = container;
383 this.document_ = container.ownerDocument; 477 this.document_ = container.ownerDocument;
384 this.client_ = client; 478 this.client_ = client;
385 this.metadataProvider_ = metadataProvider; 479 this.metadataProvider_ = metadataProvider;
386 480
481 this.items_ = [];
482 this.selectedIndex_ = -1;
483
387 this.arrowLeft_ = arrowLeft; 484 this.arrowLeft_ = arrowLeft;
388 this.arrowLeft_. 485 this.arrowLeft_.
389 addEventListener('click', this.selectNext.bind(this, -1, null)); 486 addEventListener('click', this.selectNext.bind(this, -1, null));
390 487
391 this.arrowRight_ = arrowRight; 488 this.arrowRight_ = arrowRight;
392 this.arrowRight_. 489 this.arrowRight_.
393 addEventListener('click', this.selectNext.bind(this, 1, null)); 490 addEventListener('click', this.selectNext.bind(this, 1, null));
394 491
395 this.fadeLeft_ = this.document_.createElement('div'); 492 this.fadeLeft_ = this.document_.createElement('div');
396 this.fadeLeft_.className = 'fade left'; 493 this.fadeLeft_.className = 'fade left';
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
671 768
672 var img = document.createElement('img'); 769 var img = document.createElement('img');
673 wrapper.appendChild(img); 770 wrapper.appendChild(img);
674 771
675 this.boxes_.push(box); 772 this.boxes_.push(box);
676 this.wrappers_.push(wrapper); 773 this.wrappers_.push(wrapper);
677 this.imgs_.push(img); 774 this.imgs_.push(img);
678 } 775 }
679 776
680 this.original_ = true; 777 this.original_ = true;
778 this.copyName_ = null;
681 }; 779 };
682 780
683 Ribbon.Item.prototype.getIndex = function () { return this.index_ }; 781 Ribbon.Item.prototype.getIndex = function () { return this.index_ };
684 782
685 Ribbon.Item.prototype.getBox = function (index) { return this.boxes_[index] }; 783 Ribbon.Item.prototype.getBox = function (index) { return this.boxes_[index] };
686 784
687 Ribbon.Item.prototype.isOriginal = function () { return this.original_ }; 785 Ribbon.Item.prototype.isOriginal = function () { return this.original_ };
688 786
689 Ribbon.Item.prototype.getUrl = function () { return this.url_ }; 787 Ribbon.Item.prototype.getUrl = function () { return this.url_ };
788 Ribbon.Item.prototype.setUrl = function (url) { this.url_ = url };
789
790 Ribbon.Item.prototype.getCopyName = function () { return this.copyName_ };
690 791
691 Ribbon.Item.prototype.isSelected = function() { 792 Ribbon.Item.prototype.isSelected = function() {
692 return this.boxes_[0].hasAttribute('selected'); 793 return this.boxes_[0].hasAttribute('selected');
693 }; 794 };
694 795
695 Ribbon.Item.prototype.select = function(on) { 796 Ribbon.Item.prototype.select = function(on) {
696 for (var i = 0; i < 2; i++) { 797 for (var i = 0; i < 2; i++) {
697 ImageUtil.setAttribute(this.boxes_[i], 'selected', on); 798 ImageUtil.setAttribute(this.boxes_[i], 'selected', on);
698 } 799 }
699 }; 800 };
(...skipping 18 matching lines...) Expand all
718 819
719 if (!dirEntry) { // Happens only in gallery_demo.js 820 if (!dirEntry) { // Happens only in gallery_demo.js
720 self.onSaveSuccess( 821 self.onSaveSuccess(
721 window.webkitURL.createObjectURL( 822 window.webkitURL.createObjectURL(
722 ImageEncoder.getBlob(canvas, metadataEncoder))); 823 ImageEncoder.getBlob(canvas, metadataEncoder)));
723 if (opt_callback) opt_callback(); 824 if (opt_callback) opt_callback();
724 return; 825 return;
725 } 826 }
726 827
727 var newFile = this.isOriginal(); 828 var newFile = this.isOriginal();
728 var name = this.getCopyName(); 829 var name = this.copyName_;
830 this.original_ = false;
831 this.copyName_ = '';
729 832
730 function onSuccess(url) { 833 function onSuccess(url) {
731 console.log('Saved from gallery', name); 834 console.log('Saved from gallery', name);
732 // Force the metadata provider to reread the metadata from the file. 835 // Force the metadata provider to reread the metadata from the file.
733 metadataProvider.reset(url); 836 metadataProvider.reset(url);
734 self.onSaveSuccess(url); 837 self.onSaveSuccess(url);
735 if (opt_callback) opt_callback(); 838 if (opt_callback) opt_callback();
736 } 839 }
737 840
738 function onError(error) { 841 function onError(error) {
(...skipping 15 matching lines...) Expand all
754 } else { 857 } else {
755 fileWriter.onwriteend = writeContent; 858 fileWriter.onwriteend = writeContent;
756 fileWriter.truncate(0); 859 fileWriter.truncate(0);
757 } 860 }
758 }, 861 },
759 onError); 862 onError);
760 }, onError); 863 }, onError);
761 }; 864 };
762 865
763 // TODO: Localize? 866 // TODO: Localize?
764 Ribbon.Item.COPY_SIGNATURE = '_Edited_'; 867 Ribbon.Item.COPY_SIGNATURE = 'Copy of ';
765 868
766 Ribbon.Item.prototype.getCopyName = function () { 869 Ribbon.Item.prototype.createCopyName_ = function () {
767 // When saving a modified image we never overwrite the original file (the one 870 // When saving a modified image we never overwrite the original file (the one
768 // that existed prior to opening the Gallery. Instead we save to a file named 871 // that existed prior to opening the Gallery. Instead we save to a file named
769 // <original-name>_Edited_<date-stamp>.<original extension>. 872 // <original-name>_Edited_<date-stamp>.<original extension>.
770 873
771 var name = this.url_.substr(this.url_.lastIndexOf('/') + 1); 874 var name = this.url_.substr(this.url_.lastIndexOf('/') + 1);
772 875
773 // If the item represents a file created during the current Gallery session 876 // If the item represents a file created during the current Gallery session
774 // we reuse it for subsequent saves instead of creating multiple copies. 877 // we reuse it for subsequent saves instead of creating multiple copies.
775 if (!this.original_) 878 if (!this.original_)
776 return name; 879 return name;
777 880
778 this.original_ = false;
779
780 var ext = ''; 881 var ext = '';
781 var index = name.lastIndexOf('.'); 882 var index = name.lastIndexOf('.');
782 if (index != -1) { 883 if (index != -1) {
783 ext = name.substr(index); 884 ext = name.substr(index);
784 name = name.substr(0, index); 885 name = name.substr(0, index);
785 } 886 }
786 var signaturePos = name.indexOf(Ribbon.Item.COPY_SIGNATURE); 887
787 if (signaturePos >= 0) { 888 if (name.indexOf(Ribbon.Item.COPY_SIGNATURE) == 0) {
788 // The file is likely to be a copy created during a previous session. 889 // The file is likely to be a copy created during a previous session.
789 // Replace the signature instead of appending a new one. 890 // Replace the signature instead of appending a new one.
790 name = name.substr(0, signaturePos); 891 name = name.substr(Ribbon.Item.COPY_SIGNATURE.length);
Vladislav Kaznacheev 2011/12/01 10:34:09 This would not work nicely. If you do not want to
dgozman 2011/12/01 11:34:05 Done.
791 } 892 }
792 893
793 var mimeType = this.metadata_.mimeType.toLowerCase(); 894 var mimeType = this.metadata_.mimeType.toLowerCase();
794 if (mimeType != 'image/jpeg') { 895 if (mimeType != 'image/jpeg') {
795 // Chrome can natively encode only two formats: JPEG and PNG. 896 // Chrome can natively encode only two formats: JPEG and PNG.
796 // All non-JPEG images are saved in PNG, hence forcing the file extension. 897 // All non-JPEG images are saved in PNG, hence forcing the file extension.
797 if (mimeType == 'image/png') { 898 if (mimeType == 'image/png') {
798 ext = '.png'; 899 ext = '.png';
799 } else { 900 } else {
800 // All non-JPEG images get 'image/png' mimeType (see 901 // All non-JPEG images get 'image/png' mimeType (see
801 // ImageEncoder.MetadataEncoder constructor). 902 // ImageEncoder.MetadataEncoder constructor).
802 // This code can be reached only if someone has added a metadata parser 903 // This code can be reached only if someone has added a metadata parser
803 // for a format other than JPEG or PNG. The message below is to remind 904 // for a format other than JPEG or PNG. The message below is to remind
804 // that one must also come up with the way to encode the image data. 905 // that one must also come up with the way to encode the image data.
805 console.error('Image encoding for ' + mimeType + ' is not supported'); 906 console.error('Image encoding for ' + mimeType + ' is not supported');
806 } 907 }
807 } 908 }
808 909
809 function twoDigits(n) { return (n < 10 ? '0' : '' ) + n } 910 return Ribbon.Item.COPY_SIGNATURE + name + ext;
911 };
810 912
811 var now = new Date(); 913 Ribbon.Item.prototype.setCopyName = function(opt_name) {
812 914 if (opt_name) {
813 // Datestamp the copy with YYYYMMDD_HHMMSS (similar to what many cameras do) 915 this.copyName_ = opt_name;
814 return name + 916 } else {
815 Ribbon.Item.COPY_SIGNATURE + 917 this.copyName_ = this.createCopyName_();
816 now.getFullYear() + 918 }
817 twoDigits(now.getMonth() + 1) +
818 twoDigits(now.getDate()) +
819 '_' +
820 twoDigits(now.getHours()) +
821 twoDigits(now.getMinutes()) +
822 twoDigits(now.getSeconds()) +
823 ext;
824 }; 919 };
825 920
826 // The url and metadata stored in the item are not valid while the modified 921 // The url and metadata stored in the item are not valid while the modified
827 // image is being saved. Use the results of the latest edit instead. 922 // image is being saved. Use the results of the latest edit instead.
828 923
829 Ribbon.Item.prototype.overrideContent = function(canvas, metadata) { 924 Ribbon.Item.prototype.overrideContent = function(canvas, metadata) {
830 this.canvas_ = canvas; 925 this.canvas_ = canvas;
831 this.backupMetadata_ = this.metadata_; 926 this.backupMetadata_ = this.metadata_;
832 this.setMetadata(metadata); 927 this.setMetadata(metadata);
833 }; 928 };
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
976 ShareMode.prototype.setUp = function() { 1071 ShareMode.prototype.setUp = function() {
977 ImageEditor.Mode.prototype.setUp.apply(this, arguments); 1072 ImageEditor.Mode.prototype.setUp.apply(this, arguments);
978 ImageUtil.setAttribute(this.menu_, 'hidden', false); 1073 ImageUtil.setAttribute(this.menu_, 'hidden', false);
979 ImageUtil.setAttribute(this.button_, 'pressed', false); 1074 ImageUtil.setAttribute(this.button_, 'pressed', false);
980 }; 1075 };
981 1076
982 ShareMode.prototype.cleanUpUI = function() { 1077 ShareMode.prototype.cleanUpUI = function() {
983 ImageEditor.Mode.prototype.cleanUpUI.apply(this, arguments); 1078 ImageEditor.Mode.prototype.cleanUpUI.apply(this, arguments);
984 ImageUtil.setAttribute(this.menu_, 'hidden', true); 1079 ImageUtil.setAttribute(this.menu_, 'hidden', true);
985 }; 1080 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698