From 0f3732d73f7a7c85b7401563bb11bbcc50c0d775 Mon Sep 17 00:00:00 2001 From: Vladimir Enchev Date: Mon, 2 Nov 2015 11:11:25 +0200 Subject: [PATCH] Button textWrap implemented --- .../ui/button/button-tests-native.android.ts | 4 ++++ apps/tests/ui/button/button-tests-native.d.ts | 3 ++- apps/tests/ui/button/button-tests-native.ios.ts | 4 ++++ apps/tests/ui/button/button-tests.ts | 15 +++++++++++++++ ui/button/button-common.ts | 13 +++++++++++++ ui/button/button.android.ts | 14 ++++++++++++++ ui/button/button.d.ts | 5 +++++ ui/button/button.ios.ts | 14 ++++++++++++++ 8 files changed, 71 insertions(+), 1 deletion(-) diff --git a/apps/tests/ui/button/button-tests-native.android.ts b/apps/tests/ui/button/button-tests-native.android.ts index c88e28441..ee1059502 100644 --- a/apps/tests/ui/button/button-tests-native.android.ts +++ b/apps/tests/ui/button/button-tests-native.android.ts @@ -8,6 +8,10 @@ export function getNativeText(button: buttonModule.Button): string { return button.android.getText(); } +export function getNativeTextWrap(button: buttonModule.Button): boolean { + return (button.android).isSingleLine(); +} + export function getNativeFontSize(button: buttonModule.Button): number { var density = utilsModule.layout.getDisplayDensity(); return button.android.getTextSize() / density; diff --git a/apps/tests/ui/button/button-tests-native.d.ts b/apps/tests/ui/button/button-tests-native.d.ts index c4ac2f149..30451a42b 100644 --- a/apps/tests/ui/button/button-tests-native.d.ts +++ b/apps/tests/ui/button/button-tests-native.d.ts @@ -2,7 +2,8 @@ import buttonModule = require("ui/button"); import colorModule = require("color"); -export declare function getNativeText(button: buttonModule.Button) : string; +export declare function getNativeText(button: buttonModule.Button): string; +export declare function getNativeTextWrap(button: buttonModule.Button): boolean; export declare function getNativeFontSize(button: buttonModule.Button): number; export declare function getNativeColor(button: buttonModule.Button): colorModule.Color; export declare function getNativeBackgroundColor(button: buttonModule.Button): colorModule.Color; diff --git a/apps/tests/ui/button/button-tests-native.ios.ts b/apps/tests/ui/button/button-tests-native.ios.ts index c1d28e7db..ed1e8dc45 100644 --- a/apps/tests/ui/button/button-tests-native.ios.ts +++ b/apps/tests/ui/button/button-tests-native.ios.ts @@ -7,6 +7,10 @@ export function getNativeText(button: buttonModule.Button): string { return button.ios.titleForState(UIControlState.UIControlStateNormal); } +export function getNativeTextWrap(button: buttonModule.Button): boolean { + return (button.ios).titleLabel.lineBreakMode === NSLineBreakMode.NSLineBreakByWordWrapping; +} + export function getNativeFontSize(button: buttonModule.Button): number { return button.ios.titleLabel.font.pointSize; } diff --git a/apps/tests/ui/button/button-tests.ts b/apps/tests/ui/button/button-tests.ts index f626ba0fc..86c6a6721 100644 --- a/apps/tests/ui/button/button-tests.ts +++ b/apps/tests/ui/button/button-tests.ts @@ -113,6 +113,21 @@ var _testSetText = function (views: Array) { TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue); } +var _testSetTextWrap = function (views: Array) { + var button = views[0]; + // + // ### Setting the text of a button + // ``` JavaScript + button.textWrap = true; + // ``` + // + + var expectedValue = button.textWrap; + var actualValue = buttonTestsNative.getNativeTextWrap(button); + + TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue); +} + var _testOnClick = function (views: Array) { var button = views[0]; diff --git a/ui/button/button-common.ts b/ui/button/button-common.ts index 3c7823e3d..1b9e0f04e 100644 --- a/ui/button/button-common.ts +++ b/ui/button/button-common.ts @@ -37,6 +37,12 @@ export class Button extends view.View implements definition.Button { public static textProperty = textProperty; public static formattedTextProperty = formattedTextProperty; + public static textWrapProperty = new dependencyObservable.Property( + "textWrap", + "Button", + new proxy.PropertyMetadata(false, dependencyObservable.PropertyMetadataSettings.AffectsLayout) + ); + public _onBindingContextChanged(oldValue: any, newValue: any) { super._onBindingContextChanged(oldValue, newValue); if (this.formattedText) { @@ -68,6 +74,13 @@ export class Button extends view.View implements definition.Button { } } + get textWrap(): boolean { + return this._getValue(Button.textWrapProperty); + } + set textWrap(value: boolean) { + this._setValue(Button.textWrapProperty, value); + } + private onFormattedTextChanged(eventData: observable.PropertyChangeData) { this.setFormattedTextPropertyToNative(eventData.value); } diff --git a/ui/button/button.android.ts b/ui/button/button.android.ts index 3a98dd718..e4aaee64c 100644 --- a/ui/button/button.android.ts +++ b/ui/button/button.android.ts @@ -1,8 +1,22 @@ import common = require("./button-common"); import utils = require("utils/utils") +import dependencyObservable = require("ui/core/dependency-observable"); +import proxy = require("ui/core/proxy"); global.moduleMerge(common, exports); +function onTextWrapPropertyChanged(data: dependencyObservable.PropertyChangeData) { + var btn =