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

Unified Diff: ui/file_manager/file_manager/foreground/js/navigation_list_model.js

Issue 645853013: Remove some platform specific stuff from views. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 6 years, 2 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
Index: ui/file_manager/file_manager/foreground/js/navigation_list_model.js
diff --git a/ui/file_manager/file_manager/foreground/js/navigation_list_model.js b/ui/file_manager/file_manager/foreground/js/navigation_list_model.js
deleted file mode 100644
index 62b031d9ea59072f4c3f314794dd95d6699703d0..0000000000000000000000000000000000000000
--- a/ui/file_manager/file_manager/foreground/js/navigation_list_model.js
+++ /dev/null
@@ -1,290 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-'use strict';
-
-/**
- * Base item of NavigationListModel. Should not be created directly.
- * @param {string} label Label.
- * @constructor
- */
-function NavigationModelItem(label) {
- this.label_ = label;
-}
-
-NavigationModelItem.prototype = {
- get label() { return this.label_; }
-};
-
-/**
- * Check whether given two model items are same.
- * @param {NavigationModelItem} item1 The first item to be compared.
- * @param {NavigationModelItem} item2 The second item to be compared.
- * @return {boolean} True if given two model items are same.
- */
-NavigationModelItem.isSame = function(item1, item2) {
- if (item1.isVolume != item2.isVolume)
- return false;
-
- if (item1.isVolume)
- return item1.volumeInfo === item2.volumeInfo;
- else
- return util.isSameEntry(item1.entry, item2.entry);
-};
-
-/**
- * Item of NavigationListModel for shortcuts.
- *
- * @param {string} label Label.
- * @param {!DirectoryEntry} entry Entry. Cannot be null.
- * @constructor
- * @extends {NavigationModelItem}
- */
-function NavigationModelShortcutItem(label, entry) {
- NavigationModelItem.call(this, label);
- this.entry_ = entry;
- Object.freeze(this);
-}
-
-NavigationModelShortcutItem.prototype = {
- __proto__: NavigationModelItem.prototype,
- get entry() { return this.entry_; },
- get isVolume() { return false; },
- get isShortcut() { return true; }
-};
-
-/**
- * Item of NavigationListModel for volumes.
- *
- * @param {string} label Label.
- * @param {!VolumeInfo} volumeInfo Volume info for the volume. Cannot be null.
- * @constructor
- * @extends {NavigationModelItem}
- */
-function NavigationModelVolumeItem(label, volumeInfo) {
- NavigationModelItem.call(this, label);
- this.volumeInfo_ = volumeInfo;
- // Start resolving the display root because it is used
- // for determining executability of commands.
- this.volumeInfo_.resolveDisplayRoot(
- function() {}, function() {});
- Object.freeze(this);
-}
-
-NavigationModelVolumeItem.prototype = {
- __proto__: NavigationModelItem.prototype,
- get volumeInfo() { return this.volumeInfo_; },
- get isVolume() { return true; },
- get isShortcut() { return false; }
-};
-
-/**
- * A navigation list model. This model combines the 2 lists.
- * @param {VolumeManagerWrapper} volumeManager VolumeManagerWrapper instance.
- * @param {(cr.ui.ArrayDataModel|FolderShortcutsDataModel)} shortcutListModel
- * The list of folder shortcut.
- * @constructor
- * @extends {cr.EventTarget}
- */
-function NavigationListModel(volumeManager, shortcutListModel) {
- cr.EventTarget.call(this);
-
- this.volumeManager_ = volumeManager;
- this.shortcutListModel_ = shortcutListModel;
-
- var volumeInfoToModelItem = function(volumeInfo) {
- return new NavigationModelVolumeItem(
- volumeInfo.label,
- volumeInfo);
- }.bind(this);
-
- var entryToModelItem = function(entry) {
- var item = new NavigationModelShortcutItem(
- entry.name,
- entry);
- return item;
- }.bind(this);
-
- /**
- * Type of updated list.
- * @enum {number}
- * @const
- */
- var ListType = {
- VOLUME_LIST: 1,
- SHORTCUT_LIST: 2
- };
- Object.freeze(ListType);
-
- // Generates this.volumeList_ and this.shortcutList_ from the models.
- this.volumeList_ =
- this.volumeManager_.volumeInfoList.slice().map(volumeInfoToModelItem);
-
- this.shortcutList_ = [];
- for (var i = 0; i < this.shortcutListModel_.length; i++) {
- var shortcutEntry = /** @type {Entry} */ (this.shortcutListModel_.item(i));
- var volumeInfo = this.volumeManager_.getVolumeInfo(shortcutEntry);
- this.shortcutList_.push(entryToModelItem(shortcutEntry));
- }
-
- // Generates a combined 'permuted' event from an event of either list.
- var permutedHandler = function(listType, event) {
- var permutation;
-
- // Build the volumeList.
- if (listType == ListType.VOLUME_LIST) {
- // The volume is mounted or unmounted.
- var newList = [];
-
- // Use the old instances if they just move.
- for (var i = 0; i < event.permutation.length; i++) {
- if (event.permutation[i] >= 0)
- newList[event.permutation[i]] = this.volumeList_[i];
- }
-
- // Create missing instances.
- for (var i = 0; i < event.newLength; i++) {
- if (!newList[i]) {
- newList[i] = volumeInfoToModelItem(
- this.volumeManager_.volumeInfoList.item(i));
- }
- }
- this.volumeList_ = newList;
-
- permutation = event.permutation.slice();
-
- // shortcutList part has not been changed, so the permutation should be
- // just identity mapping with a shift.
- for (var i = 0; i < this.shortcutList_.length; i++) {
- permutation.push(i + this.volumeList_.length);
- }
- } else {
- // Build the shortcutList.
-
- // volumeList part has not been changed, so the permutation should be
- // identity mapping.
-
- permutation = [];
- for (var i = 0; i < this.volumeList_.length; i++) {
- permutation[i] = i;
- }
-
- var modelIndex = 0;
- var oldListIndex = 0;
- var newList = [];
- while (modelIndex < this.shortcutListModel_.length &&
- oldListIndex < this.shortcutList_.length) {
- var shortcutEntry = this.shortcutListModel_.item(modelIndex);
- var cmp = this.shortcutListModel_.compare(
- shortcutEntry, this.shortcutList_[oldListIndex].entry);
- if (cmp > 0) {
- // The shortcut at shortcutList_[oldListIndex] is removed.
- permutation.push(-1);
- oldListIndex++;
- continue;
- }
-
- if (cmp === 0) {
- // Reuse the old instance.
- permutation.push(newList.length + this.volumeList_.length);
- newList.push(this.shortcutList_[oldListIndex]);
- oldListIndex++;
- } else {
- // We needs to create a new instance for the shortcut entry.
- newList.push(entryToModelItem(shortcutEntry));
- }
- modelIndex++;
- }
-
- // Add remaining (new) shortcuts if necessary.
- for (; modelIndex < this.shortcutListModel_.length; modelIndex++) {
- var shortcutEntry = this.shortcutListModel_.item(modelIndex);
- newList.push(entryToModelItem(shortcutEntry));
- }
-
- // Fill remaining permutation if necessary.
- for (; oldListIndex < this.shortcutList_.length; oldListIndex++)
- permutation.push(-1);
-
- this.shortcutList_ = newList;
- }
-
- // Dispatch permuted event.
- var permutedEvent = new Event('permuted');
- permutedEvent.newLength =
- this.volumeList_.length + this.shortcutList_.length;
- permutedEvent.permutation = permutation;
- this.dispatchEvent(permutedEvent);
- };
-
- this.volumeManager_.volumeInfoList.addEventListener(
- 'permuted', permutedHandler.bind(this, ListType.VOLUME_LIST));
- this.shortcutListModel_.addEventListener(
- 'permuted', permutedHandler.bind(this, ListType.SHORTCUT_LIST));
-
- // 'change' event is just ignored, because it is not fired neither in
- // the folder shortcut list nor in the volume info list.
- // 'splice' and 'sorted' events are not implemented, since they are not used
- // in list.js.
-}
-
-/**
- * NavigationList inherits cr.EventTarget.
- */
-NavigationListModel.prototype = {
- __proto__: cr.EventTarget.prototype,
- get length() { return this.length_(); },
- get folderShortcutList() { return this.shortcutList_; }
-};
-
-/**
- * Returns the item at the given index.
- * @param {number} index The index of the entry to get.
- * @return {NavigationModelItem} The item at the given index.
- */
-NavigationListModel.prototype.item = function(index) {
- var offset = this.volumeList_.length;
- if (index < offset)
- return this.volumeList_[index];
- return this.shortcutList_[index - offset];
-};
-
-/**
- * Returns the number of items in the model.
- * @return {number} The length of the model.
- * @private
- */
-NavigationListModel.prototype.length_ = function() {
- return this.volumeList_.length + this.shortcutList_.length;
-};
-
-/**
- * Returns the first matching item.
- * @param {NavigationModelItem} modelItem The entry to find.
- * @param {number=} opt_fromIndex If provided, then the searching start at
- * the {@code opt_fromIndex}.
- * @return {number} The index of the first found element or -1 if not found.
- */
-NavigationListModel.prototype.indexOf = function(modelItem, opt_fromIndex) {
- for (var i = opt_fromIndex || 0; i < this.length; i++) {
- if (modelItem === this.item(i))
- return i;
- }
- return -1;
-};
-
-/**
- * Called externally when one of the items is not found on the filesystem.
- * @param {NavigationModelItem} modelItem The entry which is not found.
- */
-NavigationListModel.prototype.onItemNotFoundError = function(modelItem) {
- if (modelItem.isVolume) {
- // TODO(mtomasz, yoshiki): Implement when needed.
- return;
- }
- if (modelItem.isShortcut) {
- // For shortcuts, lets the shortcut model handle this situation.
- this.shortcutListModel_.onItemNotFoundError(modelItem.entry);
- }
-};

Powered by Google App Engine
This is Rietveld 408576698