12017-04-06 Matt Baker <mattbaker@apple.com>
2
3 Web Inspector: checkboxes in Settings screen use inappropriate layout
4 https://bugs.webkit.org/show_bug.cgi?id=166993
5 <rdar://problem/30002272>
6
7 Reviewed by NOBODY (OOPS!).
8
9 * Localizations/en.lproj/localizedStrings.js:
10 New checkbox setting strings.
11
12 * UserInterface/Main.html:
13 New settings view classes.
14
15 * UserInterface/Views/GeneralSettingsView.js: Added.
16 (WebInspector.GeneralSettingsView):
17 (WebInspector.GeneralSettingsView.prototype.initialLayout):
18 Move settings UI creation from SettingsTabContentView.
19
20 * UserInterface/Views/SettingEditor.js: Added.
21 Basic setting editor UI for the following input types: checkbox,
22 number, and select. In the future it may be useful to include
23 additional types, such as radio buttons.
24
25 (WebInspector.SettingEditor):
26 (WebInspector.SettingEditor.createForSetting):
27 (WebInspector.SettingEditor.prototype.get element):
28 (WebInspector.SettingEditor.prototype.get type):
29 (WebInspector.SettingEditor.prototype.get label):
30 (WebInspector.SettingEditor.prototype.get value):
31 (WebInspector.SettingEditor.prototype.set value):
32 (WebInspector.SettingEditor.prototype._createEditorElement):
33
34 * UserInterface/Views/SettingsGroup.js: Added.
35 A container holding editors for one or more WebInspector.Settings.
36 Every editor belongs to a group. SettingsView provides convenience
37 methods for adding settings and groups, so create instances directly
38 shouldn't normally be necessary.
39
40 (WebInspector.SettingsGroup):
41 (WebInspector.SettingsGroup.prototype.get element):
42 (WebInspector.SettingsGroup.prototype.addSetting):
43 (WebInspector.SettingsGroup.prototype.addCustomSetting):
44
45 * UserInterface/Views/SettingsTabContentView.css:
46 Refactored styles to more closely match Xcode settings UI.
47 Eliminated redundant use of "setting" from CSS class names.
48
49 (.content-view.settings):
50 (.content-view.settings .navigation-bar .item.radio.button.text-only):
51 (.content-view.settings .navigation-bar .item.radio.button.text-only.selected):
52 (.content-view.settings > .settings-view > .separator):
53 (.content-view.settings > .settings-view > .container):
54 (.content-view.settings > .settings-view > .container > .title):
55 (body[dir=ltr] .content-view.settings > .settings-view > .container > .title):
56 (body[dir=rtl] .content-view.settings > .settings-view > .container > .title):
57 (.content-view.settings > .settings-view > .container > .editor-group):
58 (.content-view.settings > .settings-view > .container > .editor-group > .editor input):
59 (.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]):
60 (body[dir=ltr] .content-view.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]):
61 (body[dir=rtl] .content-view.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]):
62 (.content-view.settings > .settings-view > .container > .editor-group > .editor select):
63 (.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="number"]):
64 (body[dir=ltr] .content-view.settings > .settings-view > .container > .editor-group > .editor input[type="number"]):
65 (body[dir=rtl] .content-view.settings > .settings-view > .container > .editor-group > .editor input[type="number"]):
66 (.content-view.settings > .header): Deleted.
67 (.content-view.settings > .separator): Deleted.
68 (.content-view.settings > .setting-container): Deleted.
69 (.content-view.settings > .setting-container.combined): Deleted.
70 (.content-view.settings > .setting-container > .setting-name): Deleted.
71 (body[dir=ltr] .content-view.settings > .setting-container > .setting-name): Deleted.
72 (body[dir=rtl] .content-view.settings > .setting-container > .setting-name): Deleted.
73 (.content-view.settings > .setting-container > .setting-value-controller): Deleted.
74 (.content-view.settings > .setting-container > .setting-value-controller input): Deleted.
75 (.content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]): Deleted.
76 (body[dir=ltr] .content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]): Deleted.
77 (body[dir=rtl] .content-view.settings > .setting-container > .setting-value-controller input[type="checkbox"]): Deleted.
78 (.content-view.settings > .setting-container > .setting-value-controller select): Deleted.
79 (.content-view.settings > .setting-container > .setting-value-controller input[type="number"]): Deleted.
80 (body[dir=ltr] .content-view.settings > .setting-container > .setting-value-controller input[type="number"]): Deleted.
81 (body[dir=rtl] .content-view.settings > .setting-container > .setting-value-controller input[type="number"]): Deleted.
82
83 * UserInterface/Views/SettingsTabContentView.js:
84 To better organize the growing number of settings, multiple settings views
85 are now supported, with a navigation bar for switching between them. For
86 now there is a single "General" setting view, and and the navigation bar
87 is hidden. Adding a second view will cause the bar to be shown.
88
89 (WebInspector.SettingsTabContentView):
90 (WebInspector.SettingsTabContentView.prototype.get type):
91 (WebInspector.SettingsTabContentView.prototype.get selectedSettingsView):
92 (WebInspector.SettingsTabContentView.prototype.set selectedSettingsView):
93 (WebInspector.SettingsTabContentView.prototype.addSettingsView):
94 (WebInspector.SettingsTabContentView.prototype._navigationItemSelected):
95 (WebInspector.SettingsTabContentView.prototype.layout): Deleted.
96 No longer needed.
97
98 * UserInterface/Views/SettingsView.js: Added.
99 Base class for displaying editing UI for a collection of related
100 WebInspector.Setting objects.
101
102 (WebInspector.SettingsView):
103 (WebInspector.SettingsView.prototype.get identifier):
104 (WebInspector.SettingsView.prototype.get displayName):
105 A string suitable for display in a NavigationBar showing a list of
106 SettingsViews (e.g. "General", "Text Editing", "Fonts & Colors", etc).
107
108 (WebInspector.SettingsView.prototype.addSetting):
109 Add UI for a setting, consisting of a title, an editor appropriate for
110 the setting's value type, and optional label and formatting options.
111 For example:
112
113 addSetting("Setting 1:", new WebInspector.Setting(…, true), "Item one")
114 addSetting("Setting 2:", new WebInspector.Setting(…, 1), "units")
115
116 will create a checkbox and number input field:
117
118 Setting 1: [x] Item one
119 Setting 2: [ 1] units
120
121 (WebInspector.SettingsView.prototype.addCustomSetting):
122 Add UI for a specific editor type, with optional formatting options.
123 A setting can be updated in response to changes in the editor's value.
124
125 (WebInspector.SettingsView.prototype.addGroup):
126 Add a group, for listing multiple settings under one title. For example:
127
128 group = addGroup("Title:")
129 group.addSetting(new WebInspector.Setting(…, true), "Item one")
130 group.addSetting(new WebInspector.Setting(…, false), "Item two")
131
132 will create two checkboxes under the same title:
133
134 Title: [x] Item one
135 [ ] Item two
136
137 (WebInspector.SettingsView.prototype.addSeparator):
138 Add vertical space between two settings or groups.
139