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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/persistence/WorkspaceSettingsTab.js

Issue 2867783003: DevTools: move IsolatedFileSystem/IsolatedFileSystemManager into persistence/ (Closed)
Patch Set: fix order Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 * @unrestricted 6 * @unrestricted
7 */ 7 */
8 Persistence.WorkspaceSettingsTab = class extends UI.VBox { 8 Persistence.WorkspaceSettingsTab = class extends UI.VBox {
9 constructor() { 9 constructor() {
10 super(); 10 super();
11 this.registerRequiredCSS('persistence/workspaceSettingsTab.css'); 11 this.registerRequiredCSS('persistence/workspaceSettingsTab.css');
12 12
13 var header = this.element.createChild('header'); 13 var header = this.element.createChild('header');
14 header.createChild('h3').createTextChild(Common.UIString('Workspace')); 14 header.createChild('h3').createTextChild(Common.UIString('Workspace'));
15 15
16 this.containerElement = this.element.createChild('div', 'help-container-wrap per') 16 this.containerElement = this.element.createChild('div', 'help-container-wrap per')
17 .createChild('div', 'settings-tab help-content h elp-container'); 17 .createChild('div', 'settings-tab help-content h elp-container');
18 18
19 Workspace.isolatedFileSystemManager.addEventListener( 19 Persistence.isolatedFileSystemManager.addEventListener(
20 Workspace.IsolatedFileSystemManager.Events.FileSystemAdded, this._fileSy stemAdded, this); 20 Persistence.IsolatedFileSystemManager.Events.FileSystemAdded, this._file SystemAdded, this);
21 Workspace.isolatedFileSystemManager.addEventListener( 21 Persistence.isolatedFileSystemManager.addEventListener(
22 Workspace.IsolatedFileSystemManager.Events.FileSystemRemoved, this._file SystemRemoved, this); 22 Persistence.IsolatedFileSystemManager.Events.FileSystemRemoved, this._fi leSystemRemoved, this);
23 23
24 var folderExcludePatternInput = this._createFolderExcludePatternInput(); 24 var folderExcludePatternInput = this._createFolderExcludePatternInput();
25 folderExcludePatternInput.classList.add('folder-exclude-pattern'); 25 folderExcludePatternInput.classList.add('folder-exclude-pattern');
26 this.containerElement.appendChild(folderExcludePatternInput); 26 this.containerElement.appendChild(folderExcludePatternInput);
27 27
28 if (Runtime.experiments.isEnabled('persistence2')) { 28 if (Runtime.experiments.isEnabled('persistence2')) {
29 var div = this.containerElement.createChild('div', 'settings-info-message' ); 29 var div = this.containerElement.createChild('div', 'settings-info-message' );
30 div.createTextChild(Common.UIString('Mappings are inferred automatically. Please ')); 30 div.createTextChild(Common.UIString('Mappings are inferred automatically. Please '));
31 div.appendChild(UI.createExternalLink( 31 div.appendChild(UI.createExternalLink(
32 'https://bugs.chromium.org/p/chromium/issues/entry?template=Defect%20r eport%20from%20user&components=Platform%3EDevTools%3EAuthoring&comment=DevTools% 20failed%20to%20link%20network%20resource%20to%20filesystem.%0A%0APlatform%3A%20 %3CLinux%2FWin%2FMac%3E%0AChrome%20version%3A%20%3Cyour%20chrome%20version%3E%0A %0AWhat%20are%20the%20details%20of%20your%20project%3F%0A-%20Source%20code%20(if %20any)%3A%20http%3A%2F%2Fgithub.com%2Fexample%2Fexample%0A-%20Build%20System%3A %20gulp%2Fgrunt%2Fwebpack%2Frollup%2F...%0A-%20HTTP%20server%3A%20node%20HTTP%2F nginx%2Fapache...%0A%0AAssets%20failed%20to%20link%20(or%20incorrectly%20linked) %3A%0A1.%0A2.%0A3.%0A%0AIf%20possible%2C%20please%20attach%20a%20screenshot%20of %20network%20sources%20navigator%20which%20should%0Ashow%20which%20resources%20f ailed%20to%20map', 32 'https://bugs.chromium.org/p/chromium/issues/entry?template=Defect%20r eport%20from%20user&components=Platform%3EDevTools%3EAuthoring&comment=DevTools% 20failed%20to%20link%20network%20resource%20to%20filesystem.%0A%0APlatform%3A%20 %3CLinux%2FWin%2FMac%3E%0AChrome%20version%3A%20%3Cyour%20chrome%20version%3E%0A %0AWhat%20are%20the%20details%20of%20your%20project%3F%0A-%20Source%20code%20(if %20any)%3A%20http%3A%2F%2Fgithub.com%2Fexample%2Fexample%0A-%20Build%20System%3A %20gulp%2Fgrunt%2Fwebpack%2Frollup%2F...%0A-%20HTTP%20server%3A%20node%20HTTP%2F nginx%2Fapache...%0A%0AAssets%20failed%20to%20link%20(or%20incorrectly%20linked) %3A%0A1.%0A2.%0A3.%0A%0AIf%20possible%2C%20please%20attach%20a%20screenshot%20of %20network%20sources%20navigator%20which%20should%0Ashow%20which%20resources%20f ailed%20to%20map',
33 Common.UIString('report'))); 33 Common.UIString('report')));
34 div.createTextChild(Common.UIString(' any bugs.')); 34 div.createTextChild(Common.UIString(' any bugs.'));
35 } 35 }
36 36
37 this._fileSystemsListContainer = this.containerElement.createChild('div', '' ); 37 this._fileSystemsListContainer = this.containerElement.createChild('div', '' );
38 38
39 this.containerElement.appendChild( 39 this.containerElement.appendChild(
40 UI.createTextButton(Common.UIString('Add folder\u2026'), this._addFileSy stemClicked.bind(this))); 40 UI.createTextButton(Common.UIString('Add folder\u2026'), this._addFileSy stemClicked.bind(this)));
41 41
42 /** @type {!Map<string, !Element>} */ 42 /** @type {!Map<string, !Element>} */
43 this._elementByPath = new Map(); 43 this._elementByPath = new Map();
44 44
45 /** @type {!Map<string, !Persistence.EditFileSystemView>} */ 45 /** @type {!Map<string, !Persistence.EditFileSystemView>} */
46 this._mappingViewByPath = new Map(); 46 this._mappingViewByPath = new Map();
47 47
48 var fileSystems = Workspace.isolatedFileSystemManager.fileSystems(); 48 var fileSystems = Persistence.isolatedFileSystemManager.fileSystems();
49 for (var i = 0; i < fileSystems.length; ++i) 49 for (var i = 0; i < fileSystems.length; ++i)
50 this._addItem(fileSystems[i]); 50 this._addItem(fileSystems[i]);
51 } 51 }
52 52
53 /** 53 /**
54 * @return {!Element} 54 * @return {!Element}
55 */ 55 */
56 _createFolderExcludePatternInput() { 56 _createFolderExcludePatternInput() {
57 var p = createElement('p'); 57 var p = createElement('p');
58 var labelElement = p.createChild('label'); 58 var labelElement = p.createChild('label');
59 labelElement.textContent = Common.UIString('Folder exclude pattern'); 59 labelElement.textContent = Common.UIString('Folder exclude pattern');
60 var inputElement = p.createChild('input'); 60 var inputElement = p.createChild('input');
61 inputElement.type = 'text'; 61 inputElement.type = 'text';
62 inputElement.style.width = '270px'; 62 inputElement.style.width = '270px';
63 var folderExcludeSetting = Workspace.isolatedFileSystemManager.workspaceFold erExcludePatternSetting(); 63 var folderExcludeSetting = Persistence.isolatedFileSystemManager.workspaceFo lderExcludePatternSetting();
64 var setValue = 64 var setValue =
65 UI.bindInput(inputElement, folderExcludeSetting.set.bind(folderExcludeSe tting), regexValidator, false); 65 UI.bindInput(inputElement, folderExcludeSetting.set.bind(folderExcludeSe tting), regexValidator, false);
66 folderExcludeSetting.addChangeListener(() => setValue.call(null, folderExclu deSetting.get())); 66 folderExcludeSetting.addChangeListener(() => setValue.call(null, folderExclu deSetting.get()));
67 setValue(folderExcludeSetting.get()); 67 setValue(folderExcludeSetting.get());
68 return p; 68 return p;
69 69
70 /** 70 /**
71 * @param {string} value 71 * @param {string} value
72 * @return {boolean} 72 * @return {boolean}
73 */ 73 */
74 function regexValidator(value) { 74 function regexValidator(value) {
75 var regex; 75 var regex;
76 try { 76 try {
77 regex = new RegExp(value); 77 regex = new RegExp(value);
78 } catch (e) { 78 } catch (e) {
79 } 79 }
80 return !!regex; 80 return !!regex;
81 } 81 }
82 } 82 }
83 83
84 /** 84 /**
85 * @param {!Workspace.IsolatedFileSystem} fileSystem 85 * @param {!Persistence.IsolatedFileSystem} fileSystem
86 */ 86 */
87 _addItem(fileSystem) { 87 _addItem(fileSystem) {
88 var element = this._renderFileSystem(fileSystem); 88 var element = this._renderFileSystem(fileSystem);
89 this._elementByPath.set(fileSystem.path(), element); 89 this._elementByPath.set(fileSystem.path(), element);
90 90
91 this._fileSystemsListContainer.appendChild(element); 91 this._fileSystemsListContainer.appendChild(element);
92 92
93 var mappingView = new Persistence.EditFileSystemView(fileSystem.path()); 93 var mappingView = new Persistence.EditFileSystemView(fileSystem.path());
94 this._mappingViewByPath.set(fileSystem.path(), mappingView); 94 this._mappingViewByPath.set(fileSystem.path(), mappingView);
95 mappingView.element.classList.add('file-system-mapping-view'); 95 mappingView.element.classList.add('file-system-mapping-view');
96 mappingView.show(element); 96 mappingView.show(element);
97 } 97 }
98 98
99 /** 99 /**
100 * @param {!Workspace.IsolatedFileSystem} fileSystem 100 * @param {!Persistence.IsolatedFileSystem} fileSystem
101 * @return {!Element} 101 * @return {!Element}
102 */ 102 */
103 _renderFileSystem(fileSystem) { 103 _renderFileSystem(fileSystem) {
104 var fileSystemPath = fileSystem.path(); 104 var fileSystemPath = fileSystem.path();
105 var lastIndexOfSlash = fileSystemPath.lastIndexOf(Host.isWin() ? '\\' : '/') ; 105 var lastIndexOfSlash = fileSystemPath.lastIndexOf(Host.isWin() ? '\\' : '/') ;
106 var folderName = fileSystemPath.substr(lastIndexOfSlash + 1); 106 var folderName = fileSystemPath.substr(lastIndexOfSlash + 1);
107 107
108 var element = createElementWithClass('div', 'file-system-container'); 108 var element = createElementWithClass('div', 'file-system-container');
109 var header = element.createChild('div', 'file-system-header'); 109 var header = element.createChild('div', 'file-system-header');
110 110
111 header.createChild('div', 'file-system-name').textContent = folderName; 111 header.createChild('div', 'file-system-name').textContent = folderName;
112 var path = header.createChild('div', 'file-system-path'); 112 var path = header.createChild('div', 'file-system-path');
113 path.textContent = fileSystemPath; 113 path.textContent = fileSystemPath;
114 path.title = fileSystemPath; 114 path.title = fileSystemPath;
115 115
116 var toolbar = new UI.Toolbar(''); 116 var toolbar = new UI.Toolbar('');
117 var button = new UI.ToolbarButton(Common.UIString('Remove'), 'largeicon-dele te'); 117 var button = new UI.ToolbarButton(Common.UIString('Remove'), 'largeicon-dele te');
118 button.addEventListener(UI.ToolbarButton.Events.Click, this._removeFileSyste mClicked.bind(this, fileSystem)); 118 button.addEventListener(UI.ToolbarButton.Events.Click, this._removeFileSyste mClicked.bind(this, fileSystem));
119 toolbar.appendToolbarItem(button); 119 toolbar.appendToolbarItem(button);
120 header.appendChild(toolbar.element); 120 header.appendChild(toolbar.element);
121 121
122 return element; 122 return element;
123 } 123 }
124 124
125 /** 125 /**
126 * @param {!Workspace.IsolatedFileSystem} fileSystem 126 * @param {!Persistence.IsolatedFileSystem} fileSystem
127 */ 127 */
128 _removeFileSystemClicked(fileSystem) { 128 _removeFileSystemClicked(fileSystem) {
129 Workspace.isolatedFileSystemManager.removeFileSystem(fileSystem); 129 Persistence.isolatedFileSystemManager.removeFileSystem(fileSystem);
130 } 130 }
131 131
132 _addFileSystemClicked() { 132 _addFileSystemClicked() {
133 Workspace.isolatedFileSystemManager.addFileSystem(); 133 Persistence.isolatedFileSystemManager.addFileSystem();
134 } 134 }
135 135
136 _fileSystemAdded(event) { 136 _fileSystemAdded(event) {
137 var fileSystem = /** @type {!Workspace.IsolatedFileSystem} */ (event.data); 137 var fileSystem = /** @type {!Persistence.IsolatedFileSystem} */ (event.data) ;
138 this._addItem(fileSystem); 138 this._addItem(fileSystem);
139 } 139 }
140 140
141 _fileSystemRemoved(event) { 141 _fileSystemRemoved(event) {
142 var fileSystem = /** @type {!Workspace.IsolatedFileSystem} */ (event.data); 142 var fileSystem = /** @type {!Persistence.IsolatedFileSystem} */ (event.data) ;
143 143
144 var mappingView = this._mappingViewByPath.get(fileSystem.path()); 144 var mappingView = this._mappingViewByPath.get(fileSystem.path());
145 if (mappingView) { 145 if (mappingView) {
146 mappingView.dispose(); 146 mappingView.dispose();
147 this._mappingViewByPath.delete(fileSystem.path()); 147 this._mappingViewByPath.delete(fileSystem.path());
148 } 148 }
149 149
150 var element = this._elementByPath.get(fileSystem.path()); 150 var element = this._elementByPath.get(fileSystem.path());
151 if (element) { 151 if (element) {
152 this._elementByPath.delete(fileSystem.path()); 152 this._elementByPath.delete(fileSystem.path());
153 element.remove(); 153 element.remove();
154 } 154 }
155 } 155 }
156 }; 156 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698