diff --git a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js index f8ddaa468e..bcb7a52253 100644 --- a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js +++ b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js @@ -40,6 +40,24 @@ * */ +var c_paragraphLinerule = { + LINERULE_AUTO: 1, + LINERULE_EXACT: 2 +}; + +var c_paragraphTextAlignment = { + RIGHT: 0, + LEFT: 1, + CENTERED: 2, + JUSTIFIED: 3 +}; + +var c_paragraphSpecial = { + NONE_SPECIAL: 0, + FIRST_LINE: 1, + HANGING: 2 +}; + define([ 'core', 'common/main/lib/util/utils', diff --git a/apps/spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced.template b/apps/spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced.template index 961b81080f..5f11e7f04b 100644 --- a/apps/spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced.template +++ b/apps/spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced.template @@ -1,26 +1,57 @@
| - - - | -- - - | -- - - | -
|
@@ -71,28 +102,28 @@
-
-
-
-
-
-
+
+
-
+
\ No newline at end of file
diff --git a/apps/spreadsheeteditor/main/app/view/ParagraphSettingsAdvanced.js b/apps/spreadsheeteditor/main/app/view/ParagraphSettingsAdvanced.js
index 1007f9a0f0..58fc2c77a4 100644
--- a/apps/spreadsheeteditor/main/app/view/ParagraphSettingsAdvanced.js
+++ b/apps/spreadsheeteditor/main/app/view/ParagraphSettingsAdvanced.js
@@ -49,13 +49,14 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced.
SSE.Views.ParagraphSettingsAdvanced = Common.Views.AdvancedSettingsWindow.extend(_.extend({
options: {
- contentWidth: 320,
+ contentWidth: 370,
height: 394,
toggleGroup: 'paragraph-adv-settings-group',
storageName: 'sse-para-settings-adv-category'
},
initialize : function(options) {
+ var me = this;
_.extend(this.options, {
title: this.textTitle,
items: [
@@ -74,9 +75,43 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced.
this._noApply = true;
this._tabListChanged = false;
this.spinners = [];
+ this.FirstLine = undefined;
+ this.Spacing = null;
this.api = this.options.api;
this._originalProps = new Asc.asc_CParagraphProperty(this.options.paragraphProps);
+
+ this._arrLineRule = [
+ {displayValue: this.textAuto, defaultValue: 1, value: c_paragraphLinerule.LINERULE_AUTO, minValue: 0.5, step: 0.01, defaultUnit: ''},
+ {displayValue: this.textExact, defaultValue: 5, value: c_paragraphLinerule.LINERULE_EXACT, minValue: 0.03, step: 0.01, defaultUnit: 'cm'}
+ ];
+
+ var curLineRule = this._originalProps.asc_getSpacing().get_LineRule(),
+ curItem = _.findWhere(this._arrLineRule, {value: curLineRule});
+ this.CurLineRuleIdx = this._arrLineRule.indexOf(curItem);
+
+ this._arrTextAlignment = [
+ {displayValue: this.textLeft, value: c_paragraphTextAlignment.LEFT},
+ {displayValue: this.textCentered, value: c_paragraphTextAlignment.CENTERED},
+ {displayValue: this.textRight, value: c_paragraphTextAlignment.RIGHT},
+ {displayValue: this.textJustified, value: c_paragraphTextAlignment.JUSTIFIED}
+ ];
+
+ this._arrSpecial = [
+ {displayValue: this.textNoneSpecial, value: c_paragraphSpecial.NONE_SPECIAL, defaultValue: 0},
+ {displayValue: this.textFirstLine, value: c_paragraphSpecial.FIRST_LINE, defaultValue: 12.7},
+ {displayValue: this.textHanging, value: c_paragraphSpecial.HANGING, defaultValue: 12.7}
+ ];
+
+ this._arrTabAlign = [
+ { value: 1, displayValue: this.textTabLeft },
+ { value: 3, displayValue: this.textTabCenter },
+ { value: 2, displayValue: this.textTabRight }
+ ];
+ this._arrKeyTabAlign = [];
+ this._arrTabAlign.forEach(function(item) {
+ me._arrKeyTabAlign[item.value] = item.displayValue;
+ });
},
render: function() {
@@ -86,24 +121,15 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced.
// Indents & Placement
- this.numFirstLine = new Common.UI.MetricSpinner({
- el: $('#paragraphadv-spin-first-line'),
- step: .1,
- width: 85,
- defaultUnit : "cm",
- defaultValue : 0,
- value: '0 cm',
- maxValue: 55.87,
- minValue: -55.87
+ this.cmbTextAlignment = new Common.UI.ComboBox({
+ el: $('#paragraphadv-spin-text-alignment'),
+ cls: 'input-group-nr',
+ editable: false,
+ data: this._arrTextAlignment,
+ style: 'width: 173px;',
+ menuStyle : 'min-width: 173px;'
});
- this.numFirstLine.on('change', _.bind(function(field, newValue, oldValue, eOpts){
- if (this._changedProps) {
- if (this._changedProps.asc_getInd()===null || this._changedProps.asc_getInd()===undefined)
- this._changedProps.asc_putInd(new Asc.asc_CParagraphInd());
- this._changedProps.asc_getInd().asc_putFirstLine(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()));
- }
- }, this));
- this.spinners.push(this.numFirstLine);
+ this.cmbTextAlignment.setValue('');
this.numIndentsLeft = new Common.UI.MetricSpinner({
el: $('#paragraphadv-spin-indent-left'),
@@ -113,13 +139,14 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced.
defaultValue : 0,
value: '0 cm',
maxValue: 55.87,
- minValue: -55.87
+ minValue: 0
});
this.numIndentsLeft.on('change', _.bind(function(field, newValue, oldValue, eOpts){
+ var numval = field.getNumberValue();
if (this._changedProps) {
- if (this._changedProps.asc_getInd()===null || this._changedProps.asc_getInd()===undefined)
- this._changedProps.asc_putInd(new Asc.asc_CParagraphInd());
- this._changedProps.asc_getInd().asc_putLeft(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()));
+ if (this._changedProps.get_Ind()===null || this._changedProps.get_Ind()===undefined)
+ this._changedProps.put_Ind(new Asc.asc_CParagraphInd());
+ this._changedProps.get_Ind().put_Left(Common.Utils.Metric.fnRecalcToMM(numval));
}
}, this));
this.spinners.push(this.numIndentsLeft);
@@ -132,17 +159,104 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced.
defaultValue : 0,
value: '0 cm',
maxValue: 55.87,
- minValue: -55.87
+ minValue: 0
});
this.numIndentsRight.on('change', _.bind(function(field, newValue, oldValue, eOpts){
if (this._changedProps) {
- if (this._changedProps.asc_getInd()===null || this._changedProps.asc_getInd()===undefined)
- this._changedProps.asc_putInd(new Asc.asc_CParagraphInd());
- this._changedProps.asc_getInd().asc_putRight(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()));
+ if (this._changedProps.get_Ind()===null || this._changedProps.get_Ind()===undefined)
+ this._changedProps.put_Ind(new Asc.asc_CParagraphInd());
+ this._changedProps.get_Ind().put_Right(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()));
}
}, this));
this.spinners.push(this.numIndentsRight);
+ this.cmbSpecial = new Common.UI.ComboBox({
+ el: $('#paragraphadv-spin-special'),
+ cls: 'input-group-nr',
+ editable: false,
+ data: this._arrSpecial,
+ style: 'width: 85px;',
+ menuStyle : 'min-width: 85px;'
+ });
+ this.cmbSpecial.setValue('');
+ this.cmbSpecial.on('selected', _.bind(this.onSpecialSelect, this));
+
+ this.numSpecialBy = new Common.UI.MetricSpinner({
+ el: $('#paragraphadv-spin-special-by'),
+ step: .1,
+ width: 85,
+ defaultUnit : "cm",
+ defaultValue : 0,
+ value: '0 cm',
+ maxValue: 55.87,
+ minValue: 0
+ });
+ this.spinners.push(this.numSpecialBy);
+ this.numSpecialBy.on('change', _.bind(this.onFirstLineChange, this));
+
+ this.numSpacingBefore = new Common.UI.MetricSpinner({
+ el: $('#paragraphadv-spin-spacing-before'),
+ step: .1,
+ width: 85,
+ value: '',
+ defaultUnit : "cm",
+ maxValue: 55.88,
+ minValue: 0,
+ allowAuto : true,
+ autoText : this.txtAutoText
+ });
+ this.numSpacingBefore.on('change', _.bind(function (field, newValue, oldValue, eOpts) {
+ if (this.Spacing === null) {
+ var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty();
+ this.Spacing = properties.asc_getSpacing();
+ }
+ this.Spacing.Before = Common.Utils.Metric.fnRecalcToMM(field.getNumberValue());
+ }, this));
+ this.spinners.push(this.numSpacingBefore);
+
+ this.numSpacingAfter = new Common.UI.MetricSpinner({
+ el: $('#paragraphadv-spin-spacing-after'),
+ step: .1,
+ width: 85,
+ value: '',
+ defaultUnit : "cm",
+ maxValue: 55.88,
+ minValue: 0,
+ allowAuto : true,
+ autoText : this.txtAutoText
+ });
+ this.numSpacingAfter.on('change', _.bind(function (field, newValue, oldValue, eOpts) {
+ if (this.Spacing === null) {
+ var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty();
+ this.Spacing = properties.asc_getSpacing();
+ }
+ this.Spacing.After = Common.Utils.Metric.fnRecalcToMM(field.getNumberValue());
+ }, this));
+ this.spinners.push(this.numSpacingAfter);
+
+ this.cmbLineRule = new Common.UI.ComboBox({
+ el: $('#paragraphadv-spin-line-rule'),
+ cls: 'input-group-nr',
+ editable: false,
+ data: this._arrLineRule,
+ style: 'width: 85px;',
+ menuStyle : 'min-width: 85px;'
+ });
+ this.cmbLineRule.setValue(this.CurLineRuleIdx);
+ this.cmbLineRule.on('selected', _.bind(this.onLineRuleSelect, this));
+
+ this.numLineHeight = new Common.UI.MetricSpinner({
+ el: $('#paragraphadv-spin-line-height'),
+ step: .01,
+ width: 85,
+ value: '',
+ defaultUnit : "",
+ maxValue: 132,
+ minValue: 0.5
+ });
+ this.spinners.push(this.numLineHeight);
+ this.numLineHeight.on('change', _.bind(this.onNumLineHeightChange, this));
+
// Font
this.chStrike = new Common.UI.CheckBox({
@@ -207,7 +321,7 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced.
this.numTab = new Common.UI.MetricSpinner({
el: $('#paraadv-spin-tab'),
step: .1,
- width: 180,
+ width: 128,
defaultUnit : "cm",
value: '1.25 cm',
maxValue: 55.87,
@@ -218,7 +332,7 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced.
this.numDefaultTab = new Common.UI.MetricSpinner({
el: $('#paraadv-spin-default-tab'),
step: .1,
- width: 107,
+ width: 128,
defaultUnit : "cm",
value: '1.25 cm',
maxValue: 55.87,
@@ -234,7 +348,14 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced.
this.tabList = new Common.UI.ListView({
el: $('#paraadv-list-tabs'),
emptyText: this.noTabs,
- store: new Common.UI.DataViewStore()
+ store: new Common.UI.DataViewStore(),
+ template: _.template([''].join('')),
+ itemTemplate: _.template([
+ '
+
-
+
+
+
+
+
+
+
-
-
-
-
+
+
-
-
-
+
+
+
',
+ ' '
+ ].join(''))
});
this.tabList.store.comparator = function(rec) {
return rec.get("tabPos");
@@ -249,24 +370,15 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced.
this.listenTo(this.tabList.store, 'remove', storechanged);
this.listenTo(this.tabList.store, 'reset', storechanged);
- this.radioLeft = new Common.UI.RadioBox({
- el: $('#paragraphadv-radio-left'),
- labelText: this.textTabLeft,
- name: 'asc-radio-tab',
- checked: true
- });
-
- this.radioCenter = new Common.UI.RadioBox({
- el: $('#paragraphadv-radio-center'),
- labelText: this.textTabCenter,
- name: 'asc-radio-tab'
- });
-
- this.radioRight = new Common.UI.RadioBox({
- el: $('#paragraphadv-radio-right'),
- labelText: this.textTabRight,
- name: 'asc-radio-tab'
+ this.cmbAlign = new Common.UI.ComboBox({
+ el : $('#paraadv-cmb-align'),
+ style : 'width: 128px;',
+ menuStyle : 'min-width: 128px;',
+ editable : false,
+ cls : 'input-group-nr',
+ data : this._arrTabAlign
});
+ this.cmbAlign.setValue(1);
this.btnAddTab = new Common.UI.Button({
el: $('#paraadv-button-add-tab')
@@ -299,17 +411,44 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced.
this._changedProps.asc_getTabs().add_Tab(tab);
}, this);
}
+
+ var horizontalAlign = this.cmbTextAlignment.getValue();
+ this._changedProps.asc_putJc((horizontalAlign !== undefined && horizontalAlign !== null) ? horizontalAlign : c_paragraphTextAlignment.LEFT);
+
+ if (this.Spacing !== null) {
+ this._changedProps.asc_putSpacing(this.Spacing);
+ }
+
return { paragraphProps: this._changedProps };
},
_setDefaults: function(props) {
if (props ){
this._originalProps = new Asc.asc_CParagraphProperty(props);
+ this.FirstLine = (props.get_Ind() !== null) ? props.get_Ind().get_FirstLine() : null;
- this.numFirstLine.setValue((props.asc_getInd() !== null && props.asc_getInd().asc_getFirstLine() !== null ) ? Common.Utils.Metric.fnRecalcFromMM(props.asc_getInd().asc_getFirstLine()) : '', true);
this.numIndentsLeft.setValue((props.asc_getInd() !== null && props.asc_getInd().asc_getLeft() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.asc_getInd().asc_getLeft()) : '', true);
this.numIndentsRight.setValue((props.asc_getInd() !== null && props.asc_getInd().asc_getRight() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.asc_getInd().asc_getRight()) : '', true);
+ this.cmbTextAlignment.setValue((props.asc_getJc() !== undefined && props.asc_getJc() !== null) ? props.asc_getJc() : c_paragraphTextAlignment.CENTERED, true);
+
+ if(this.CurSpecial === undefined) {
+ this.CurSpecial = (props.asc_getInd().get_FirstLine() === 0) ? c_paragraphSpecial.NONE_SPECIAL : ((props.asc_getInd().get_FirstLine() > 0) ? c_paragraphSpecial.FIRST_LINE : c_paragraphSpecial.HANGING);
+ }
+ this.cmbSpecial.setValue(this.CurSpecial);
+ this.numSpecialBy.setValue(this.FirstLine!== null ? Math.abs(Common.Utils.Metric.fnRecalcFromMM(this.FirstLine)) : '', true);
+
+ this.numSpacingBefore.setValue((props.asc_getSpacing() !== null && props.asc_getSpacing().asc_getBefore() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.asc_getSpacing().asc_getBefore()) : '', true);
+ this.numSpacingAfter.setValue((props.asc_getSpacing() !== null && props.asc_getSpacing().asc_getAfter() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.asc_getSpacing().asc_getAfter()) : '', true);
+
+ var linerule = props.asc_getSpacing().asc_getLineRule();
+ this.cmbLineRule.setValue((linerule !== null) ? linerule : '', true);
+
+ if(props.asc_getSpacing() !== null && props.asc_getSpacing().asc_getLine() !== null) {
+ this.numLineHeight.setValue((linerule==c_paragraphLinerule.LINERULE_AUTO) ? props.asc_getSpacing().asc_getLine() : Common.Utils.Metric.fnRecalcFromMM(props.asc_getSpacing().asc_getLine()), true);
+ } else {
+ this.numLineHeight.setValue('', true);
+ }
// Font
this._noApply = true;
this.chStrike.setValue((props.asc_getStrikeout() !== null && props.asc_getStrikeout() !== undefined) ? props.asc_getStrikeout() : 'indeterminate', true);
@@ -338,7 +477,8 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced.
rec.set({
tabPos: pos,
value: parseFloat(pos.toFixed(3)) + ' ' + Common.Utils.Metric.getCurrentMetricName(),
- tabAlign: tab.asc_getValue()
+ tabAlign: tab.asc_getValue(),
+ displayTabAlign: this._arrKeyTabAlign[tab.get_Value()]
});
arr.push(rec);
}
@@ -358,13 +498,19 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced.
for (var i=0; i<%= value %> ',
+ '<%= displayTabAlign %> ',
+ ' |