Skip to content

Commit

Permalink
Bug 1367627 - Show overlay of grid areas in Grid Highlighter. r=gl
Browse files Browse the repository at this point in the history
MozReview-Commit-ID: 9KWPltfpWlT
  • Loading branch information
tigleym committed Jun 1, 2017
1 parent 6304f10 commit cdc9485
Show file tree
Hide file tree
Showing 12 changed files with 260 additions and 4 deletions.
14 changes: 14 additions & 0 deletions devtools/client/inspector/grids/actions/highlighter-settings.js
Expand Up @@ -5,12 +5,26 @@
"use strict"; "use strict";


const { const {
UPDATE_SHOW_GRID_AREAS,
UPDATE_SHOW_GRID_LINE_NUMBERS, UPDATE_SHOW_GRID_LINE_NUMBERS,
UPDATE_SHOW_INFINITE_LINES, UPDATE_SHOW_INFINITE_LINES,
} = require("./index"); } = require("./index");


module.exports = { module.exports = {


/**
* Update the grid highlighter's show grid areas preference.
*
* @param {Boolean} enabled
* Whether or not the grid highlighter should show the grid areas.
*/
updateShowGridAreas(enabled) {
return {
type: UPDATE_SHOW_GRID_AREAS,
enabled,
};
},

/** /**
* Update the grid highlighter's show grid line numbers preference. * Update the grid highlighter's show grid line numbers preference.
* *
Expand Down
3 changes: 3 additions & 0 deletions devtools/client/inspector/grids/actions/index.js
Expand Up @@ -17,6 +17,9 @@ createEnum([
// Update the entire grids state with the new list of grids. // Update the entire grids state with the new list of grids.
"UPDATE_GRIDS", "UPDATE_GRIDS",


// Update the grid highlighter's show grid areas state.
"UPDATE_SHOW_GRID_AREAS",

// Update the grid highlighter's show grid line numbers state. // Update the grid highlighter's show grid line numbers state.
"UPDATE_SHOW_GRID_LINE_NUMBERS", "UPDATE_SHOW_GRID_LINE_NUMBERS",


Expand Down
7 changes: 5 additions & 2 deletions devtools/client/inspector/grids/components/Grid.js
Expand Up @@ -31,6 +31,7 @@ module.exports = createClass({
onShowGridCellHighlight: PropTypes.func.isRequired, onShowGridCellHighlight: PropTypes.func.isRequired,
onShowGridLineNamesHighlight: PropTypes.func.isRequired, onShowGridLineNamesHighlight: PropTypes.func.isRequired,
onToggleGridHighlighter: PropTypes.func.isRequired, onToggleGridHighlighter: PropTypes.func.isRequired,
onToggleShowGridAreas: PropTypes.func.isRequired,
onToggleShowGridLineNumbers: PropTypes.func.isRequired, onToggleShowGridLineNumbers: PropTypes.func.isRequired,
onToggleShowInfiniteLines: PropTypes.func.isRequired, onToggleShowInfiniteLines: PropTypes.func.isRequired,
}, },
Expand All @@ -47,11 +48,12 @@ module.exports = createClass({
onHideBoxModelHighlighter, onHideBoxModelHighlighter,
onSetGridOverlayColor, onSetGridOverlayColor,
onShowBoxModelHighlighterForNode, onShowBoxModelHighlighterForNode,
onShowGridAreaHighlight,
onShowGridCellHighlight,
onToggleShowGridAreas,
onToggleGridHighlighter, onToggleGridHighlighter,
onToggleShowGridLineNumbers, onToggleShowGridLineNumbers,
onToggleShowInfiniteLines, onToggleShowInfiniteLines,
onShowGridAreaHighlight,
onShowGridCellHighlight,
} = this.props; } = this.props;


return grids.length ? return grids.length ?
Expand All @@ -74,6 +76,7 @@ module.exports = createClass({
}), }),
GridDisplaySettings({ GridDisplaySettings({
highlighterSettings, highlighterSettings,
onToggleShowGridAreas,
onToggleShowGridLineNumbers, onToggleShowGridLineNumbers,
onToggleShowInfiniteLines, onToggleShowInfiniteLines,
}) })
Expand Down
27 changes: 27 additions & 0 deletions devtools/client/inspector/grids/components/GridDisplaySettings.js
Expand Up @@ -16,12 +16,22 @@ module.exports = createClass({


propTypes: { propTypes: {
highlighterSettings: PropTypes.shape(Types.highlighterSettings).isRequired, highlighterSettings: PropTypes.shape(Types.highlighterSettings).isRequired,
onToggleShowGridAreas: PropTypes.func.isRequired,
onToggleShowGridLineNumbers: PropTypes.func.isRequired, onToggleShowGridLineNumbers: PropTypes.func.isRequired,
onToggleShowInfiniteLines: PropTypes.func.isRequired, onToggleShowInfiniteLines: PropTypes.func.isRequired,
}, },


mixins: [ addons.PureRenderMixin ], mixins: [ addons.PureRenderMixin ],


onShowGridAreasCheckboxClick() {
let {
highlighterSettings,
onToggleShowGridAreas,
} = this.props;

onToggleShowGridAreas(!highlighterSettings.showGridAreasOverlay);
},

onShowGridLineNumbersCheckboxClick() { onShowGridLineNumbersCheckboxClick() {
let { let {
highlighterSettings, highlighterSettings,
Expand Down Expand Up @@ -88,6 +98,23 @@ module.exports = createClass({
), ),
getStr("layout.displayNumbersOnLines") getStr("layout.displayNumbersOnLines")
) )
),
dom.li(
{
className: "grid-settings-item",
},
dom.label(
{},
dom.input(
{
id: "grid-setting-show-grid-areas",
type: "checkbox",
checked: highlighterSettings.showGridAreasOverlay,
onChange: this.onShowGridAreasCheckboxClick,
}
),
getStr("layout.displayGridAreas")
)
) )
) )
); );
Expand Down
28 changes: 28 additions & 0 deletions devtools/client/inspector/grids/grid-inspector.js
Expand Up @@ -15,10 +15,12 @@ const {
updateGrids, updateGrids,
} = require("./actions/grids"); } = require("./actions/grids");
const { const {
updateShowGridAreas,
updateShowGridLineNumbers, updateShowGridLineNumbers,
updateShowInfiniteLines, updateShowInfiniteLines,
} = require("./actions/highlighter-settings"); } = require("./actions/highlighter-settings");


const SHOW_GRID_AREAS = "devtools.gridinspector.showGridAreas";
const SHOW_GRID_LINE_NUMBERS = "devtools.gridinspector.showGridLineNumbers"; const SHOW_GRID_LINE_NUMBERS = "devtools.gridinspector.showGridLineNumbers";
const SHOW_INFINITE_LINES_PREF = "devtools.gridinspector.showInfiniteLines"; const SHOW_INFINITE_LINES_PREF = "devtools.gridinspector.showInfiniteLines";


Expand Down Expand Up @@ -54,6 +56,7 @@ function GridInspector(inspector, window) {
this.onShowGridLineNamesHighlight = this.onShowGridLineNamesHighlight.bind(this); this.onShowGridLineNamesHighlight = this.onShowGridLineNamesHighlight.bind(this);
this.onSidebarSelect = this.onSidebarSelect.bind(this); this.onSidebarSelect = this.onSidebarSelect.bind(this);
this.onToggleGridHighlighter = this.onToggleGridHighlighter.bind(this); this.onToggleGridHighlighter = this.onToggleGridHighlighter.bind(this);
this.onToggleShowGridAreas = this.onToggleShowGridAreas.bind(this);
this.onToggleShowGridLineNumbers = this.onToggleShowGridLineNumbers.bind(this); this.onToggleShowGridLineNumbers = this.onToggleShowGridLineNumbers.bind(this);
this.onToggleShowInfiniteLines = this.onToggleShowInfiniteLines.bind(this); this.onToggleShowInfiniteLines = this.onToggleShowInfiniteLines.bind(this);


Expand Down Expand Up @@ -124,6 +127,7 @@ GridInspector.prototype = {
onShowGridCellHighlight: this.onShowGridCellHighlight, onShowGridCellHighlight: this.onShowGridCellHighlight,
onShowGridLineNamesHighlight: this.onShowGridLineNamesHighlight, onShowGridLineNamesHighlight: this.onShowGridLineNamesHighlight,
onToggleGridHighlighter: this.onToggleGridHighlighter, onToggleGridHighlighter: this.onToggleGridHighlighter,
onToggleShowGridAreas: this.onToggleShowGridAreas,
onToggleShowGridLineNumbers: this.onToggleShowGridLineNumbers, onToggleShowGridLineNumbers: this.onToggleShowGridLineNumbers,
onToggleShowInfiniteLines: this.onToggleShowInfiniteLines, onToggleShowInfiniteLines: this.onToggleShowInfiniteLines,
}; };
Expand Down Expand Up @@ -215,9 +219,11 @@ GridInspector.prototype = {
loadHighlighterSettings() { loadHighlighterSettings() {
let { dispatch } = this.store; let { dispatch } = this.store;


let showGridAreas = Services.prefs.getBoolPref(SHOW_GRID_AREAS);
let showGridLineNumbers = Services.prefs.getBoolPref(SHOW_GRID_LINE_NUMBERS); let showGridLineNumbers = Services.prefs.getBoolPref(SHOW_GRID_LINE_NUMBERS);
let showInfinteLines = Services.prefs.getBoolPref(SHOW_INFINITE_LINES_PREF); let showInfinteLines = Services.prefs.getBoolPref(SHOW_INFINITE_LINES_PREF);


dispatch(updateShowGridAreas(showGridAreas));
dispatch(updateShowGridLineNumbers(showGridLineNumbers)); dispatch(updateShowGridLineNumbers(showGridLineNumbers));
dispatch(updateShowInfiniteLines(showInfinteLines)); dispatch(updateShowInfiniteLines(showInfinteLines));
}, },
Expand Down Expand Up @@ -495,6 +501,28 @@ GridInspector.prototype = {
node !== this.highlighters.gridHighlighterShown)); node !== this.highlighters.gridHighlighterShown));
}, },


/**
* Handler for a change in the show grid areas checkbox in the GridDisplaySettings
* component. Toggles on/off the option to show the grid areas in the grid highlighter.
* Refreshes the shown grid highlighter for the grids currently highlighted.
*
* @param {Boolean} enabled
* Whether or not the grid highlighter should show the grid areas.
*/
onToggleShowGridAreas(enabled) {
this.store.dispatch(updateShowGridAreas(enabled));
Services.prefs.setBoolPref(SHOW_GRID_AREAS, enabled);

let { grids } = this.store.getState();

for (let grid of grids) {
if (grid.highlighted) {
let highlighterSettings = this.getGridHighlighterSettings(grid.nodeFront);
this.highlighters.showGridHighlighter(grid.nodeFront, highlighterSettings);
}
}
},

/** /**
* Handler for a change in the show grid line numbers checkbox in the * Handler for a change in the show grid line numbers checkbox in the
* GridDisplaySettings component. Toggles on/off the option to show the grid line * GridDisplaySettings component. Toggles on/off the option to show the grid line
Expand Down
Expand Up @@ -5,17 +5,25 @@
"use strict"; "use strict";


const { const {
UPDATE_SHOW_GRID_AREAS,
UPDATE_SHOW_GRID_LINE_NUMBERS, UPDATE_SHOW_GRID_LINE_NUMBERS,
UPDATE_SHOW_INFINITE_LINES UPDATE_SHOW_INFINITE_LINES
} = require("../actions/index"); } = require("../actions/index");


const INITIAL_HIGHLIGHTER_SETTINGS = { const INITIAL_HIGHLIGHTER_SETTINGS = {
showGridAreasOverlay: false,
showGridLineNumbers: false, showGridLineNumbers: false,
showInfiniteLines: false, showInfiniteLines: false,
}; };


let reducers = { let reducers = {


[UPDATE_SHOW_GRID_AREAS](highlighterSettings, { enabled }) {
return Object.assign({}, highlighterSettings, {
showGridAreasOverlay: enabled,
});
},

[UPDATE_SHOW_GRID_LINE_NUMBERS](highlighterSettings, { enabled }) { [UPDATE_SHOW_GRID_LINE_NUMBERS](highlighterSettings, { enabled }) {
return Object.assign({}, highlighterSettings, { return Object.assign({}, highlighterSettings, {
showGridLineNumbers: enabled, showGridLineNumbers: enabled,
Expand Down
1 change: 1 addition & 0 deletions devtools/client/inspector/grids/test/browser.ini
Expand Up @@ -13,6 +13,7 @@ support-files =


[browser_grids_display-setting-extend-grid-lines.js] [browser_grids_display-setting-extend-grid-lines.js]
[browser_grids_display-setting-show-grid-line-numbers.js] [browser_grids_display-setting-show-grid-line-numbers.js]
[browser_grids_display-setting-show-grid-areas.js]
[browser_grids_grid-list-color-picker-on-ESC.js] [browser_grids_grid-list-color-picker-on-ESC.js]
[browser_grids_grid-list-color-picker-on-RETURN.js] [browser_grids_grid-list-color-picker-on-RETURN.js]
[browser_grids_grid-list-element-rep.js] [browser_grids_grid-list-element-rep.js]
Expand Down
@@ -0,0 +1,51 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

// Tests that the 'Display grid areas' grid highlighter setting will update
// the redux store and pref setting.

const TEST_URI = `
<style type='text/css'>
#grid {
display: grid;
}
</style>
<div id="grid">
<div id="cell1">cell1</div>
<div id="cell2">cell2</div>
</div>
`;

const SHOW_GRID_AREAS_PREF = "devtools.gridinspector.showGridAreas";

add_task(function* () {
yield addTab("data:text/html;charset=utf-8," + encodeURIComponent(TEST_URI));
let { inspector, gridInspector } = yield openLayoutView();
let { document: doc } = gridInspector;
let { store } = inspector;

yield selectNode("#grid", inspector);
let checkbox = doc.getElementById("grid-setting-show-grid-areas");

ok(!Services.prefs.getBoolPref(SHOW_GRID_AREAS_PREF),
"'Display grid areas' is pref off by default.");

info("Toggling ON the 'Display grid areas' setting.");
let onCheckboxChange = waitUntilState(store, state =>
state.highlighterSettings.showGridAreasOverlay);
checkbox.click();
yield onCheckboxChange;

info("Toggling OFF the 'Display grid areas' setting.");
onCheckboxChange = waitUntilState(store, state =>
!state.highlighterSettings.showGridAreasOverlay);
checkbox.click();
yield onCheckboxChange;

ok(!Services.prefs.getBoolPref(SHOW_GRID_AREAS_PREF),
"'Display grid areas' is pref off.");

Services.prefs.clearUserPref(SHOW_GRID_AREAS_PREF);
});
2 changes: 2 additions & 0 deletions devtools/client/inspector/layout/layout.js
Expand Up @@ -51,6 +51,7 @@ LayoutView.prototype = {
onShowGridCellHighlight, onShowGridCellHighlight,
onShowGridLineNamesHighlight, onShowGridLineNamesHighlight,
onToggleGridHighlighter, onToggleGridHighlighter,
onToggleShowGridAreas,
onToggleShowGridLineNumbers, onToggleShowGridLineNumbers,
onToggleShowInfiniteLines, onToggleShowInfiniteLines,
} = this.inspector.gridInspector.getComponentProps(); } = this.inspector.gridInspector.getComponentProps();
Expand Down Expand Up @@ -80,6 +81,7 @@ LayoutView.prototype = {
onShowGridLineNamesHighlight, onShowGridLineNamesHighlight,
onToggleGeometryEditor, onToggleGeometryEditor,
onToggleGridHighlighter, onToggleGridHighlighter,
onToggleShowGridAreas,
onToggleShowGridLineNumbers, onToggleShowGridLineNumbers,
onToggleShowInfiniteLines, onToggleShowInfiniteLines,
}); });
Expand Down
4 changes: 4 additions & 0 deletions devtools/client/locales/en-US/layout.properties
Expand Up @@ -12,6 +12,10 @@
layout.cannotShowGridOutline=Cannot show outline for this grid layout.cannotShowGridOutline=Cannot show outline for this grid
layout.cannotShowGridOutline.title=The selected grid’s outline cannot effectively fit inside the layout panel for it to be usable. layout.cannotShowGridOutline.title=The selected grid’s outline cannot effectively fit inside the layout panel for it to be usable.


# LOCALIZATION NOTE (layout.displayGridAreas): Label of the display grid areas setting
# option in the CSS Grid pane.
layout.displayGridAreas=Display grid areas

# LOCALIZATION NOTE (layout.displayNumbersOnLines): Label of the display numbers on lines # LOCALIZATION NOTE (layout.displayNumbersOnLines): Label of the display numbers on lines
# setting option in the CSS Grid pane. # setting option in the CSS Grid pane.
layout.displayNumbersOnLines=Display numbers on lines layout.displayNumbersOnLines=Display numbers on lines
Expand Down
1 change: 1 addition & 0 deletions devtools/client/preferences/devtools.js
Expand Up @@ -73,6 +73,7 @@ pref("devtools.fontinspector.enabled", true);
pref("devtools.layoutview.enabled", false); pref("devtools.layoutview.enabled", false);


// Grid highlighter preferences // Grid highlighter preferences
pref("devtools.gridinspector.showGridAreas", false);
pref("devtools.gridinspector.showGridLineNumbers", false); pref("devtools.gridinspector.showGridLineNumbers", false);
pref("devtools.gridinspector.showGridOutline", false); pref("devtools.gridinspector.showGridOutline", false);
pref("devtools.gridinspector.showInfiniteLines", false); pref("devtools.gridinspector.showInfiniteLines", false);
Expand Down

0 comments on commit cdc9485

Please sign in to comment.