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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/sources/TabbedEditorContainer.js

Issue 2349343002: DevTools: introduce persistence/ module (Closed)
Patch Set: DevTools: add persistence/ module Created 4 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 10 *
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 this._tabbedPane.setTabDelegate(new WebInspector.EditorContainerTabDelegate( this)); 56 this._tabbedPane.setTabDelegate(new WebInspector.EditorContainerTabDelegate( this));
57 57
58 this._tabbedPane.setCloseableTabs(true); 58 this._tabbedPane.setCloseableTabs(true);
59 this._tabbedPane.setAllowTabReorder(true, true); 59 this._tabbedPane.setAllowTabReorder(true, true);
60 this._tabbedPane.insertBeforeTabStrip(createElementWithClass("div", "sources -editor-tabstrip-left")); 60 this._tabbedPane.insertBeforeTabStrip(createElementWithClass("div", "sources -editor-tabstrip-left"));
61 this._tabbedPane.appendAfterTabStrip(createElementWithClass("div", "sources- editor-tabstrip-right")); 61 this._tabbedPane.appendAfterTabStrip(createElementWithClass("div", "sources- editor-tabstrip-right"));
62 62
63 this._tabbedPane.addEventListener(WebInspector.TabbedPane.Events.TabClosed, this._tabClosed, this); 63 this._tabbedPane.addEventListener(WebInspector.TabbedPane.Events.TabClosed, this._tabClosed, this);
64 this._tabbedPane.addEventListener(WebInspector.TabbedPane.Events.TabSelected , this._tabSelected, this); 64 this._tabbedPane.addEventListener(WebInspector.TabbedPane.Events.TabSelected , this._tabSelected, this);
65 65
66 WebInspector.persistence.addEventListener(WebInspector.Persistence.Events.Bi ndingCreated, this._onBindingCreated, this);
67 WebInspector.persistence.addEventListener(WebInspector.Persistence.Events.Bi ndingRemoved, this._onBindingRemoved, this);
68
66 this._tabIds = new Map(); 69 this._tabIds = new Map();
67 this._files = {}; 70 this._files = {};
68 71
69 this._previouslyViewedFilesSetting = setting; 72 this._previouslyViewedFilesSetting = setting;
70 this._history = WebInspector.TabbedEditorContainer.History.fromObject(this._ previouslyViewedFilesSetting.get()); 73 this._history = WebInspector.TabbedEditorContainer.History.fromObject(this._ previouslyViewedFilesSetting.get());
71 } 74 }
72 75
73 /** @enum {symbol} */ 76 /** @enum {symbol} */
74 WebInspector.TabbedEditorContainer.Events = { 77 WebInspector.TabbedEditorContainer.Events = {
75 EditorSelected: Symbol("EditorSelected"), 78 EditorSelected: Symbol("EditorSelected"),
76 EditorClosed: Symbol("EditorClosed") 79 EditorClosed: Symbol("EditorClosed")
77 } 80 }
78 81
79 WebInspector.TabbedEditorContainer._tabId = 0; 82 WebInspector.TabbedEditorContainer._tabId = 0;
80 83
81 WebInspector.TabbedEditorContainer.maximalPreviouslyViewedFilesCount = 30; 84 WebInspector.TabbedEditorContainer.maximalPreviouslyViewedFilesCount = 30;
82 85
83 WebInspector.TabbedEditorContainer.prototype = { 86 WebInspector.TabbedEditorContainer.prototype = {
87 _onBindingCreated: function(event)
dgozman 2016/09/22 19:55:54 JSDoc
lushnikov 2016/09/23 21:56:13 Done.
88 {
89 var binding = /** @type {!WebInspector.PersistenceBinding} */(event.data );
90 var persistentTab = this._tabIds.get(binding.persistent);
91 if (!persistentTab)
92 return;
93
94 this._closeTabs([persistentTab]);
95 this.addUISourceCode(binding.network);
dgozman 2016/09/22 19:55:54 Should preserve focus if it was on closed tab.
lushnikov 2016/09/23 21:56:13 Done.
96 },
97
98 _onBindingRemoved: function(event)
dgozman 2016/09/22 19:55:54 JSDoc
lushnikov 2016/09/23 21:56:13 Done.
99 {
100 var binding = /** @type {!WebInspector.PersistenceBinding} */(event.data );
101 var networkTab = this._tabIds.get(binding.network);
102 if (!networkTab)
103 return;
104 this._appendFileTab(binding.persistent, false);
105 },
106
84 /** 107 /**
85 * @return {!WebInspector.Widget} 108 * @return {!WebInspector.Widget}
86 */ 109 */
87 get view() 110 get view()
88 { 111 {
89 return this._tabbedPane; 112 return this._tabbedPane;
90 }, 113 },
91 114
92 /** 115 /**
93 * @type {!WebInspector.Widget} 116 * @type {!WebInspector.Widget}
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 this._history.updateSelectionRange(this._currentFile.url(), range); 217 this._history.updateSelectionRange(this._currentFile.url(), range);
195 this._history.save(this._previouslyViewedFilesSetting); 218 this._history.save(this._previouslyViewedFilesSetting);
196 }, 219 },
197 220
198 /** 221 /**
199 * @param {!WebInspector.UISourceCode} uiSourceCode 222 * @param {!WebInspector.UISourceCode} uiSourceCode
200 * @param {boolean=} userGesture 223 * @param {boolean=} userGesture
201 */ 224 */
202 _innerShowFile: function(uiSourceCode, userGesture) 225 _innerShowFile: function(uiSourceCode, userGesture)
203 { 226 {
227 var binding = WebInspector.persistence.binding(uiSourceCode)
dgozman 2016/09/22 19:55:54 semicolon
lushnikov 2016/09/23 21:56:13 Done.
228 uiSourceCode = binding ? binding.network : uiSourceCode;
204 if (this._currentFile === uiSourceCode) 229 if (this._currentFile === uiSourceCode)
205 return; 230 return;
206 231
207 this._removeViewListeners(); 232 this._removeViewListeners();
208 this._currentFile = uiSourceCode; 233 this._currentFile = uiSourceCode;
209 234
210 var tabId = this._tabIds.get(uiSourceCode) || this._appendFileTab(uiSour ceCode, userGesture); 235 var tabId = this._tabIds.get(uiSourceCode) || this._appendFileTab(uiSour ceCode, userGesture);
211 236
212 this._tabbedPane.selectTab(tabId, userGesture); 237 this._tabbedPane.selectTab(tabId, userGesture);
213 if (userGesture) 238 if (userGesture)
(...skipping 13 matching lines...) Expand all
227 }, 252 },
228 253
229 /** 254 /**
230 * @param {!WebInspector.UISourceCode} uiSourceCode 255 * @param {!WebInspector.UISourceCode} uiSourceCode
231 * @return {string} 256 * @return {string}
232 */ 257 */
233 _titleForFile: function(uiSourceCode) 258 _titleForFile: function(uiSourceCode)
234 { 259 {
235 var maxDisplayNameLength = 30; 260 var maxDisplayNameLength = 30;
236 var title = uiSourceCode.displayName(true).trimMiddle(maxDisplayNameLeng th); 261 var title = uiSourceCode.displayName(true).trimMiddle(maxDisplayNameLeng th);
237 if (uiSourceCode.isDirty() || uiSourceCode.hasUnsavedCommittedChanges()) 262 if (uiSourceCode.isDirty() || WebInspector.persistence.hasUnsavedCommitt edChanges(uiSourceCode))
238 title += "*"; 263 title += "*";
239 return title; 264 return title;
240 }, 265 },
241 266
242 /** 267 /**
243 * @param {string} id 268 * @param {string} id
244 * @param {string} nextTabId 269 * @param {string} nextTabId
245 */ 270 */
246 _maybeCloseTab: function(id, nextTabId) 271 _maybeCloseTab: function(id, nextTabId)
247 { 272 {
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
475 500
476 /** 501 /**
477 * @param {!WebInspector.UISourceCode} uiSourceCode 502 * @param {!WebInspector.UISourceCode} uiSourceCode
478 */ 503 */
479 _updateFileTitle: function(uiSourceCode) 504 _updateFileTitle: function(uiSourceCode)
480 { 505 {
481 var tabId = this._tabIds.get(uiSourceCode); 506 var tabId = this._tabIds.get(uiSourceCode);
482 if (tabId) { 507 if (tabId) {
483 var title = this._titleForFile(uiSourceCode); 508 var title = this._titleForFile(uiSourceCode);
484 this._tabbedPane.changeTabTitle(tabId, title); 509 this._tabbedPane.changeTabTitle(tabId, title);
485 if (uiSourceCode.hasUnsavedCommittedChanges()) 510 if (WebInspector.persistence.hasUnsavedCommittedChanges(uiSourceCode ))
486 this._tabbedPane.setTabIcon(tabId, "warning-icon", WebInspector. UIString("Changes to this file were not saved to file system.")); 511 this._tabbedPane.setTabIcon(tabId, "warning-icon", WebInspector. UIString("Changes to this file were not saved to file system."));
487 else 512 else
488 this._tabbedPane.setTabIcon(tabId, ""); 513 this._tabbedPane.setTabIcon(tabId, "");
489 } 514 }
490 }, 515 },
491 516
492 _uiSourceCodeTitleChanged: function(event) 517 _uiSourceCodeTitleChanged: function(event)
493 { 518 {
494 var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.targ et); 519 var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.targ et);
495 this._updateFileTitle(uiSourceCode); 520 this._updateFileTitle(uiSourceCode);
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
748 /** 773 /**
749 * @override 774 * @override
750 * @param {string} tabId 775 * @param {string} tabId
751 * @param {!WebInspector.ContextMenu} contextMenu 776 * @param {!WebInspector.ContextMenu} contextMenu
752 */ 777 */
753 onContextMenu: function(tabId, contextMenu) 778 onContextMenu: function(tabId, contextMenu)
754 { 779 {
755 this._editorContainer._onContextMenu(tabId, contextMenu); 780 this._editorContainer._onContextMenu(tabId, contextMenu);
756 } 781 }
757 } 782 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698