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

Unified Diff: chrome/browser/resources/print_preview/margin_settings.js

Issue 8351048: Print Preview: Making margin selection sticky (part 2/2) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Handling source PDF case, fixing marginsUI flashing. Created 9 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/print_preview/margin_settings.js
diff --git a/chrome/browser/resources/print_preview/margin_settings.js b/chrome/browser/resources/print_preview/margin_settings.js
index 11577c22508f3aa6f908a88ef00cd7ed814efe20..dbce88328898aa608d20e277f2dda4f04f003aee 100644
--- a/chrome/browser/resources/print_preview/margin_settings.js
+++ b/chrome/browser/resources/print_preview/margin_settings.js
@@ -93,6 +93,7 @@ cr.define('print_preview', function() {
this.contentWidth_ = width;
this.contentHeight_ = height;
this.margins_ = new Margins(left, top, right, bottom);
+ this.margins_.roundToLocaleUnits();
}
PageLayout.prototype = {
@@ -122,21 +123,18 @@ cr.define('print_preview', function() {
this.marginsUI_ = null;
// Holds the custom margin values in points (if set).
- this.customMargins_ = new Margins(-1, -1, -1, -1);
+ this.customMargins_ = null;
// Holds the previous custom margin values in points.
- this.previousCustomMargins_ = new Margins(-1, -1, -1, -1);
+ this.previousCustomMargins_ = null;
// Holds the width of the page in points.
this.pageWidth_ = -1;
// Holds the height of the page in points.
this.pageHeight_ = -1;
- // The last selected margin option.
- this.lastSelectedOption_ = MarginSettings.MARGINS_VALUE_DEFAULT;
-
+ // @type {boolean} True if the margins UI should be diplayed when the next
+ // |customEvents.PDF_LOADED| event occurs.
+ this.forceMarginsUIOnPDFLoad_ = false;
// Holds the currently updated default page layout values.
this.currentDefaultPageLayout = null;
- // Holds the default page layout values when the custom margins was last
- // selected.
- this.previousDefaultPageLayout_ = null;
// True if the margins UI should be shown regardless of mouse position.
this.forceDisplayingMarginLines_ = true;
@@ -203,6 +201,19 @@ cr.define('print_preview', function() {
},
/**
+ * Sets |this.customMargins_| according to |margins|.
+ * @param {{marginLeft: number, marginTop: number, marginRight: bottom,
kmadhusu 2011/11/09 00:57:54 "marginRight: bottom" => "marginBottom: number"
dpapad 2011/11/09 03:19:00 Done.
+ * marginRight: number}} margins An object holding the four margin
+ * values.
+ */
+ set customMargins(margins) {
+ this.customMargins_.left = margins.marginLeft;
+ this.customMargins_.top = margins.marginTop;
+ this.customMargins_.right = margins.marginRight;
+ this.customMargins_.bottom = margins.marginBottom;
+ },
+
+ /**
* @return {number} The value of the selected margin option.
*/
get selectedMarginsValue() {
@@ -211,13 +222,22 @@ cr.define('print_preview', function() {
},
/**
- * Sets the current margin selection to |lastUsedMarginsType|.
- * @param {number} lastUsedMarginsType An integer value identifying a margin
+ * Sets the current margin selection to |lastUsedMarginType|.
+ * @param {number} lastUsedMarginType An integer value identifying a margin
* type according to MarginType enum in printing/print_job_constants.h.
+ * @param {Object} lastUsedCustomMargins The last used custom margins. If
+ * custom margins have not been used before
kmadhusu 2011/11/09 00:57:54 nit: @param {Object} lastUsedCustomMargins The la
dpapad 2011/11/09 03:19:00 As discussed in IM, this is not true anymore, last
+ * |margin{Top|Bottom|Left|Right}| attributes are missing.
*/
- setLastUsedMarginsType: function(lastUsedMarginsType) {
+ setLastUsedMargins: function(lastUsedMarginType, lastUsedCustomMargins) {
+ this.forceMarginsUIOnPDFLoad_ =
+ lastUsedMarginType == MarginSettings.MARGINS_VALUE_CUSTOM;
this.marginList_.selectedIndex =
- this.getMarginOptionIndexByValue_(lastUsedMarginsType);
+ this.getMarginOptionIndexByValue_(lastUsedMarginType);
+ if (lastUsedCustomMargins.hasOwnProperty('marginTop')) {
+ this.customMargins_ = new Margins(-1, -1, -1 , -1);
+ this.customMargins = lastUsedCustomMargins;
kmadhusu 2011/11/09 00:57:54 "this.customMargins" => "this.customMargins_"? Mis
dpapad 2011/11/09 03:19:00 This is on purpose, leaving the underscore out, ca
+ }
},
/**
@@ -290,8 +310,13 @@ cr.define('print_preview', function() {
requestPreviewIfNeeded_: function() {
if (!this.areMarginSettingsValid())
return;
- if (this.customMargins_.isEqual(this.previousCustomMargins_))
+
+ if (this.previousCustomMargins_ &&
+ this.customMargins_.isEqual(this.previousCustomMargins_))
return;
+
+ if (!this.previousCustomMargins_)
+ this.previousCustomMargins_ = new Margins(-1, -1, -1, -1);
this.previousCustomMargins_.copy(this.customMargins_);
kmadhusu 2011/11/09 00:57:54 Do you need to the same in line 239? this.customM
dpapad 2011/11/09 03:19:00 It is not needed there, because a preview request
setDefaultValuesAndRegeneratePreview(false);
},
@@ -302,6 +327,8 @@ cr.define('print_preview', function() {
* @private
*/
onSidebarMouseOver_: function(e) {
+ $('mainview').onmouseover = this.onMainviewMouseOver_.bind(this);
+ $('sidebar').onmouseover = null;
if (!this.forceDisplayingMarginLines_)
this.marginsUI.hide(false);
},
@@ -312,6 +339,8 @@ cr.define('print_preview', function() {
* @private
*/
onMainviewMouseOver_: function() {
+ $('mainview').onmouseover = null;
+ $('sidebar').onmouseover = this.onSidebarMouseOver_.bind(this);
this.forceDisplayingMarginLines_ = false;
this.marginsUI.show();
},
@@ -368,7 +397,7 @@ cr.define('print_preview', function() {
* @return {boolean} True if the margin settings are valid.
*/
areMarginSettingsValid: function() {
- if (this.marginsUI_ == null)
+ if (!this.isCustomMarginsSelected() || !this.marginsUI_)
return true;
var pairs = this.marginsUI.pairsAsList;
@@ -474,6 +503,8 @@ cr.define('print_preview', function() {
* @private
*/
removeCustomMarginEventListeners_: function() {
+ if (!this.marginsUI_)
+ return;
$('mainview').onmouseover = null;
$('sidebar').onmouseover = null;
this.eventTracker_.remove(this.marginsUI, customEvents.MARGIN_LINE_DRAG);
@@ -532,8 +563,6 @@ cr.define('print_preview', function() {
this.onDefaultMinimumNoMarginsSelected_();
else if (this.isCustomMarginsSelected())
this.onCustomMarginsSelected_();
-
- this.lastSelectedOption_ = this.selectedMarginsValue;
},
/**
@@ -543,6 +572,7 @@ cr.define('print_preview', function() {
onDefaultMinimumNoMarginsSelected_: function() {
this.removeCustomMarginEventListeners_();
this.forceDisplayingMarginLines_ = true;
+ this.previousCustomMargins_ = null;
setDefaultValuesAndRegeneratePreview(false);
},
@@ -551,20 +581,19 @@ cr.define('print_preview', function() {
* @private
*/
onCustomMarginsSelected_: function() {
- this.addCustomMarginEventListeners_();
-
- this.customMargins_ = this.currentDefaultPageLayout.margins_;
- this.customMargins_.roundToLocaleUnits();
- this.previousCustomMargins_.copy(this.customMargins_);
+ var customMarginsNotSpecified = !this.customMargins_;
+ this.updatePageData_();
- if (this.previousDefaultPageLayout_ != this.currentDefaultPageLayout) {
- this.pageWidth_ = this.currentDefaultPageLayout.pageWidth;
- this.pageHeight_ = this.currentDefaultPageLayout.pageHeight;
+ if (customMarginsNotSpecified) {
kmadhusu 2011/11/09 00:57:54 customMarginsNotSpecified variable is not required
dpapad 2011/11/09 03:19:00 this.updatePageData_ will initialize |this.customM
+ this.previousCustomMargins_ = new Margins(-1, -1, -1, -1);
+ this.previousCustomMargins_.copy(this.customMargins_);
kmadhusu 2011/11/09 00:57:54 this.customMargins_ is null here. Instead of lin
kmadhusu 2011/11/09 00:57:54 Can you create a helper function to do the followi
dpapad 2011/11/09 03:19:00 |this.customMargins_| is not null here, explained
dpapad 2011/11/09 03:19:00 Done. Created a clone() function which is much mor
+ this.drawCustomMarginsUI_();
+ this.addCustomMarginEventListeners_();
+ this.marginsUI.show();
+ } else {
+ this.forceMarginsUIOnPDFLoad_ = true;
+ this.requestPreviewIfNeeded_();
}
-
- this.previousDefaultPageLayout_ = this.currentDefaultPageLayout;
- this.drawCustomMarginsUI_();
- this.marginsUI.show();
},
/**
@@ -627,7 +656,6 @@ cr.define('print_preview', function() {
MarginSettings.OPTION_INDEX_DEFAULT].selected = true;
this.removeCustomMarginEventListeners_();
this.forceDisplayingMarginLines_ = true;
- this.lastSelectedOption_ = MarginSettings.MARGINS_VALUE_DEFAULT;
}
},
@@ -636,15 +664,37 @@ cr.define('print_preview', function() {
* @private
*/
onPDFLoaded_: function() {
- if (!previewModifiable)
+ if (!previewModifiable) {
fadeOutOption(this.marginsOption_);
+ return;
+ }
+
+ if (this.forceMarginsUIOnPDFLoad_) {
+ this.updatePageData_();
+ this.drawCustomMarginsUI_();
+ this.addCustomMarginEventListeners_();
+ this.marginsUI.show();
+ this.forceMarginsUIOnPDFLoad_ = false;
+ }
+ },
+
+ /**
+ * Updates |this.customMargins_|, |this.pageWidth_|, |this.pageHeight_|.
+ * @private
+ */
+ updatePageData_: function() {
+ if (!this.customMargins_) {
+ this.customMargins_ = new Margins(-1, -1, -1. -1);
+ this.customMargins_.copy(this.currentDefaultPageLayout.margins_);
+ }
+
+ this.pageWidth_ = this.currentDefaultPageLayout.pageWidth;
+ this.pageHeight_ = this.currentDefaultPageLayout.pageHeight;
}
};
return {
MarginSettings: MarginSettings,
PageLayout: PageLayout,
- setNumberFormatAndMeasurementSystem:
- MarginSettings.setNumberFormatAndMeasurementSystem,
};
});
« no previous file with comments | « chrome/browser/printing/print_preview_message_handler.cc ('k') | chrome/browser/resources/print_preview/print_preview.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698