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

Side by Side Diff: Source/devtools/front_end/components/DockController.js

Issue 283063003: DevTools: Implement extension-based status bar buttons (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Updated patch Created 6 years, 6 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 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 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 * * Redistributions of source code must retain the above copyright 8 * * 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 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 26 matching lines...) Expand all
37 { 37 {
38 this._canDock = canDock; 38 this._canDock = canDock;
39 if (!canDock) { 39 if (!canDock) {
40 this._dockSide = WebInspector.DockController.State.Undocked; 40 this._dockSide = WebInspector.DockController.State.Undocked;
41 this._updateUI(); 41 this._updateUI();
42 return; 42 return;
43 } 43 }
44 44
45 WebInspector.settings.currentDockState = WebInspector.settings.createSetting ("currentDockState", ""); 45 WebInspector.settings.currentDockState = WebInspector.settings.createSetting ("currentDockState", "");
46 WebInspector.settings.lastDockState = WebInspector.settings.createSetting("l astDockState", ""); 46 WebInspector.settings.lastDockState = WebInspector.settings.createSetting("l astDockState", "");
47 var states = [WebInspector.DockController.State.DockedToBottom, WebInspector .DockController.State.Undocked, WebInspector.DockController.State.DockedToRight] ;
48 var titles = [WebInspector.UIString("Dock to main window."), WebInspector.UI String("Undock into separate window."), WebInspector.UIString("Dock to main wind ow.")];
49 if (WebInspector.experimentsSettings.dockToLeft.isEnabled()) {
50 states.push(WebInspector.DockController.State.DockedToLeft);
51 titles.push(WebInspector.UIString("Dock to main window."));
52 }
53 this._dockToggleButton = new WebInspector.StatusBarStatesSettingButton(
54 "dock-status-bar-item",
55 states,
56 titles,
57 WebInspector.settings.currentDockState,
58 WebInspector.settings.lastDockState,
59 this._dockSideChanged.bind(this));
60 } 47 }
61 48
62 WebInspector.DockController.State = { 49 WebInspector.DockController.State = {
63 DockedToBottom: "bottom", 50 DockedToBottom: "bottom",
64 DockedToRight: "right", 51 DockedToRight: "right",
65 DockedToLeft: "left", 52 DockedToLeft: "left",
66 Undocked: "undocked" 53 Undocked: "undocked"
67 } 54 }
68 55
69 // Use BeforeDockSideChanged to do something before all the UI bits are updated, 56 // Use BeforeDockSideChanged to do something before all the UI bits are updated,
70 // DockSideChanged to update UI, and AfterDockSideChanged to perform actions 57 // DockSideChanged to update UI, and AfterDockSideChanged to perform actions
71 // after frontend is docked/undocked in the browser. 58 // after frontend is docked/undocked in the browser.
72 WebInspector.DockController.Events = { 59 WebInspector.DockController.Events = {
73 BeforeDockSideChanged: "BeforeDockSideChanged", 60 BeforeDockSideChanged: "BeforeDockSideChanged",
74 DockSideChanged: "DockSideChanged", 61 DockSideChanged: "DockSideChanged",
75 AfterDockSideChanged: "AfterDockSideChanged" 62 AfterDockSideChanged: "AfterDockSideChanged"
76 } 63 }
77 64
78 WebInspector.DockController.prototype = { 65 WebInspector.DockController.prototype = {
79 initialize: function()
80 {
81 if (this._canDock)
82 this._dockToggleButton.toggleInitialState();
83 },
84
85 /**
86 * @return {?Element}
87 */
88 get element()
89 {
90 return this._canDock ? this._dockToggleButton.element : null;
91 },
92
93 /** 66 /**
94 * @return {string} 67 * @return {string}
95 */ 68 */
96 dockSide: function() 69 dockSide: function()
97 { 70 {
98 return this._dockSide; 71 return this._dockSide;
99 }, 72 },
100 73
101 /** 74 /**
102 * @return {boolean} 75 * @return {boolean}
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 body.classList.remove("dock-to-left"); 135 body.classList.remove("dock-to-left");
163 body.classList.remove("dock-to-bottom"); 136 body.classList.remove("dock-to-bottom");
164 break; 137 break;
165 } 138 }
166 }, 139 },
167 140
168 __proto__: WebInspector.Object.prototype 141 __proto__: WebInspector.Object.prototype
169 } 142 }
170 143
171 /** 144 /**
145 * @constructor
146 * @implements {WebInspector.StatusBarButton.Provider}
147 */
148 WebInspector.DockController.ButtonProvider = function()
149 {
150 }
151
152 WebInspector.DockController.ButtonProvider.prototype = {
153 /**
154 * @return {?WebInspector.StatusBarButton}
155 */
156 button: function()
157 {
158 if (!WebInspector.dockController.canDock())
159 return null;
160
161 if (!this._dockToggleButton) {
162 var states = [WebInspector.DockController.State.DockedToBottom, WebI nspector.DockController.State.Undocked, WebInspector.DockController.State.Docked ToRight];
163 var titles = [WebInspector.UIString("Dock to main window."), WebInsp ector.UIString("Undock into separate window."), WebInspector.UIString("Dock to m ain window.")];
164 if (WebInspector.experimentsSettings.dockToLeft.isEnabled()) {
165 states.push(WebInspector.DockController.State.DockedToLeft);
166 titles.push(WebInspector.UIString("Dock to main window."));
167 }
168
169 this._dockToggleButton = new WebInspector.StatusBarStatesSettingButt on(
170 "dock-status-bar-item",
171 states,
172 titles,
173 WebInspector.settings.currentDockState,
174 WebInspector.settings.lastDockState,
175 WebInspector.dockController._dockSideChanged.bind(WebInspect or.dockController));
176 this._dockToggleButton.toggleInitialState();
177 }
178 return this._dockToggleButton;
179 }
180 }
181
182 /**
172 * @type {!WebInspector.DockController} 183 * @type {!WebInspector.DockController}
173 */ 184 */
174 WebInspector.dockController; 185 WebInspector.dockController;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698