BorderView - modified to fallback to genric borders

This commit is contained in:
vakrilov
2015-07-07 15:01:56 +03:00
parent f3979136a4
commit bf0f3217c1
7 changed files with 7 additions and 185 deletions

View File

@ -377,6 +377,9 @@
<TypeScriptCompile Include="trace\trace.ts">
<DependentUpon>trace.d.ts</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="ui\border\border.ts">
<DependentUpon>border.d.ts</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="ui\repeater\repeater.ts">
<DependentUpon>repeater.d.ts</DependentUpon>
</TypeScriptCompile>
@ -774,15 +777,6 @@
<DependentUpon>switch.d.ts</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="ui\border\border.d.ts" />
<TypeScriptCompile Include="ui\border\border-common.ts">
<DependentUpon>border.d.ts</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="ui\border\border.android.ts">
<DependentUpon>border.d.ts</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="ui\border\border.ios.ts">
<DependentUpon>border.d.ts</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="ui\activity-indicator\activity-indicator.d.ts" />
<TypeScriptCompile Include="ui\activity-indicator\activity-indicator.android.ts">
<DependentUpon>activity-indicator.d.ts</DependentUpon>
@ -1680,7 +1674,7 @@
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
</WebProjectProperties>
</FlavorProperties>
<UserProperties ui_2scroll-view_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2editable-text-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2absolute-layout-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2gallery-app_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2content-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2web-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2linear-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2absolute-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2dock-layout_2package_1json__JSONSchema="" ui_2layouts_2grid-layout_2package_1json__JSONSchema="" ui_2layouts_2wrap-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" />
<UserProperties ui_2layouts_2wrap-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2grid-layout_2package_1json__JSONSchema="" ui_2layouts_2dock-layout_2package_1json__JSONSchema="" ui_2layouts_2absolute-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2linear-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2web-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2content-view_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2gallery-app_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2absolute-layout-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2editable-text-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2scroll-view_2package_1json__JSONSchema="http://json.schemastore.org/package" />
</VisualStudio>
</ProjectExtensions>
</Project>

View File

@ -1,51 +0,0 @@
import borderCommon = require("ui/border/border-common");
import proxy = require("ui/core/proxy");
import dependencyObservable = require("ui/core/dependency-observable");
import utils = require("utils/utils");
// merge the exports of the common file with the exports of this file
declare var exports;
require("utils/module-merge").merge(borderCommon, exports);
function onBorderPropertyChanged(data: dependencyObservable.PropertyChangeData) {
var border = <Border>data.object;
border._updateAndroidBorder();
}
(<proxy.PropertyMetadata>borderCommon.Border.cornerRadiusProperty.metadata).onSetNativeValue = onBorderPropertyChanged;
(<proxy.PropertyMetadata>borderCommon.Border.borderWidthProperty.metadata).onSetNativeValue = onBorderPropertyChanged;
(<proxy.PropertyMetadata>borderCommon.Border.borderColorProperty.metadata).onSetNativeValue = onBorderPropertyChanged;
export class Border extends borderCommon.Border {
public _updateAndroidBorder() {
if (!this._nativeView) {
return;
}
var nativeView = <android.view.ViewGroup>this._nativeView;
var backgroundDrawable = nativeView.getBackground();
if (!(backgroundDrawable instanceof android.graphics.drawable.GradientDrawable)) {
backgroundDrawable = new android.graphics.drawable.GradientDrawable();
nativeView.setBackgroundDrawable(backgroundDrawable);
}
var gd = <android.graphics.drawable.GradientDrawable>backgroundDrawable;
var density = utils.layout.getDisplayDensity();
gd.setCornerRadius(this.cornerRadius * density);
if (this.borderColor) {
gd.setStroke(this.borderWidth * density, this.borderColor.android);
}
else {
gd.setStroke(this.borderWidth * density, android.graphics.Color.TRANSPARENT);
}
if (this.backgroundColor) {
gd.setColor(this.backgroundColor.android);
}
else {
gd.setColor(android.graphics.Color.TRANSPARENT);
}
}
}

View File

@ -10,10 +10,6 @@ declare module "ui/border" {
* Represents a UI border component.
*/
export class Border extends contentView.ContentView {
public static cornerRadiusProperty : dependencyObservable.Property;
public static borderWidthProperty: dependencyObservable.Property;
public static borderColorProperty: dependencyObservable.Property;
/**
* Gets or sets the corner radius of the border component.
*/
@ -28,9 +24,5 @@ declare module "ui/border" {
* Gets or sets the border color of the border component.
*/
borderColor: color.Color;
//@private
_updateAndroidBorder();
//@endprivate
}
}

View File

@ -1,48 +0,0 @@
import borderCommon = require("ui/border/border-common");
import dependencyObservable = require("ui/core/dependency-observable");
import proxy = require("ui/core/proxy");
import color = require("color");
// merge the exports of the common file with the exports of this file
declare var exports;
require("utils/module-merge").merge(borderCommon, exports);
function onCornerRadiusPropertyChanged(data: dependencyObservable.PropertyChangeData) {
var view = <Border>data.object;
if (!view._nativeView) {
return;
}
if (view._nativeView instanceof UIView) {
(<UIView>view._nativeView).layer.cornerRadius = data.newValue;
}
}
(<proxy.PropertyMetadata>borderCommon.Border.cornerRadiusProperty.metadata).onSetNativeValue = onCornerRadiusPropertyChanged;
function onBorderWidthPropertyChanged(data: dependencyObservable.PropertyChangeData) {
var view = <Border>data.object;
if (!view._nativeView) {
return;
}
if (view._nativeView instanceof UIView) {
(<UIView>view._nativeView).layer.borderWidth = data.newValue;
}
}
(<proxy.PropertyMetadata>borderCommon.Border.borderWidthProperty.metadata).onSetNativeValue = onBorderWidthPropertyChanged;
function onBorderColorPropertyChanged(data: dependencyObservable.PropertyChangeData) {
var view = <Border>data.object;
if (!view._nativeView) {
return;
}
if (view._nativeView instanceof UIView && data.newValue instanceof color.Color) {
(<UIView>view._nativeView).layer.borderColor = (<color.Color>data.newValue).ios.CGColor;
}
}
(<proxy.PropertyMetadata>borderCommon.Border.borderColorProperty.metadata).onSetNativeValue = onBorderColorPropertyChanged;
export class Border extends borderCommon.Border {
//
}

View File

@ -7,54 +7,13 @@ import types = require("utils/types");
import viewModule = require("ui/core/view");
import utils = require("utils/utils");
var cornerRadiusProperty = new dependencyObservable.Property(
"cornerRadius",
"Border",
new proxy.PropertyMetadata(0, dependencyObservable.PropertyMetadataSettings.AffectsStyle)
);
var borderWidthProperty = new dependencyObservable.Property(
"borderWidth",
"Border",
new proxy.PropertyMetadata(0, dependencyObservable.PropertyMetadataSettings.AffectsStyle)
);
var borderColorProperty = new dependencyObservable.Property(
"borderColor",
"Border",
new proxy.PropertyMetadata(undefined, dependencyObservable.PropertyMetadataSettings.AffectsStyle)
);
@Deprecated
export class Border extends contentView.ContentView implements definition.Border {
public static cornerRadiusProperty = cornerRadiusProperty;
public static borderWidthProperty = borderWidthProperty;
public static borderColorProperty = borderColorProperty;
get cornerRadius(): number {
return this._getValue(Border.cornerRadiusProperty);
return this.borderRadius;
}
set cornerRadius(value: number) {
this._setValue(Border.cornerRadiusProperty, value);
}
get borderWidth(): number {
return this._getValue(Border.borderWidthProperty);
}
set borderWidth(value: number) {
this._setValue(Border.borderWidthProperty, value);
}
get borderColor(): color.Color {
return this._getValue(Border.borderColorProperty);
}
set borderColor(value: color.Color) {
if (types.isString(value) || types.isNumber(value)) {
this._setValue(Border.borderColorProperty, new color.Color(<any>value));
} else {
this._setValue(Border.borderColorProperty, value);
}
this.borderRadius = value;
}
public onMeasure(widthMeasureSpec: number, heightMeasureSpec: number): void {
@ -82,8 +41,4 @@ export class Border extends contentView.ContentView implements definition.Border
var borderSize = this.borderWidth * density;
viewModule.View.layoutChild(this, this.content, borderSize, borderSize, right - left - borderSize, bottom - top - borderSize);
}
public _updateAndroidBorder() {
// This is android specific method.
}
}

2
ui/enums/enums.d.ts vendored
View File

@ -404,7 +404,7 @@
/**
* Specifies nackground repeat.
* Specifies background repeat.
*/
export module BackgroundRepeat {
export var repeat: string;

View File

@ -371,25 +371,6 @@ export class SearchBarStyler implements definition.stylers.Styler {
}
}
export class BorderStyler implements definition.stylers.Styler {
//Background methods
private static setBackgroundProperty(view: view.View, newValue: any) {
var border = <border.Border>view;
border._updateAndroidBorder();
}
private static resetBackgroundProperty(view: view.View, nativeValue: any) {
var border = <border.Border>view;
border._updateAndroidBorder();
}
public static registerHandlers() {
style.registerHandler(style.backgroundColorProperty, new stylersCommon.StylePropertyChangedHandler(
BorderStyler.setBackgroundProperty,
BorderStyler.resetBackgroundProperty), "Border");
}
}
// Register all styler at the end.
export function _registerDefaultStylers() {
style.registerNoStylingClass("Frame");
@ -398,5 +379,4 @@ export function _registerDefaultStylers() {
ActivityIndicatorStyler.registerHandlers();
SegmentedBarStyler.registerHandlers();
SearchBarStyler.registerHandlers();
BorderStyler.registerHandlers();
}