This commit is contained in:
vakrilov
2015-07-14 11:19:49 +03:00
parent 53c7bebfec
commit ff2e8e6625
13 changed files with 312 additions and 192 deletions

View File

@@ -61,10 +61,21 @@
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<ItemGroup>
<TypeScriptCompile Include="apps\action-bar-demo\pages\center-view-stack.ts" />
<TypeScriptCompile Include="apps\action-bar-demo\pages\center-view-segmented.ts" />
<TypeScriptCompile Include="apps\action-bar-demo\pages\center-view.ts" />
<TypeScriptCompile Include="apps\action-bar-demo\pages\data-binding.ts" />
<TypeScriptCompile Include="apps\action-bar-demo\pages\action-items-text.ts">
<DependentUpon>action-items-text.xml</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="apps\action-bar-demo\pages\center-view-stack.ts">
<DependentUpon>center-view-stack.xml</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="apps\action-bar-demo\pages\center-view-segmented.ts">
<DependentUpon>center-view-segmented.xml</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="apps\action-bar-demo\pages\center-view.ts">
<DependentUpon>center-view.xml</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="apps\action-bar-demo\pages\data-binding.ts">
<DependentUpon>data-binding.xml</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="apps\cuteness.unoptimized\app.ts" />
<TypeScriptCompile Include="apps\cuteness.unoptimized\details-page.ts">
<DependentUpon>details-page.xml</DependentUpon>
@@ -83,10 +94,15 @@
<TypeScriptCompile Include="apps\action-bar-demo\main-page.ts">
<DependentUpon>main-page.xml</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="apps\action-bar-demo\pages\action-items-text.ts" />
<TypeScriptCompile Include="apps\action-bar-demo\pages\navigation-button.ts" />
<TypeScriptCompile Include="apps\action-bar-demo\pages\action-items-icon.ts" />
<TypeScriptCompile Include="apps\action-bar-demo\pages\page-title-icon.ts" />
<TypeScriptCompile Include="apps\action-bar-demo\pages\navigation-button.ts">
<DependentUpon>navigation-button.xml</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="apps\action-bar-demo\pages\action-items-icon.ts">
<DependentUpon>action-items-icon.xml</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="apps\action-bar-demo\pages\page-title-icon.ts">
<DependentUpon>page-title-icon.xml</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="apps\gallery-app\views\list-picker.ts">
<DependentUpon>list-picker.xml</DependentUpon>
</TypeScriptCompile>
@@ -172,6 +188,9 @@
<TypeScriptCompile Include="apps\tests\fps-meter-tests.ts" />
<TypeScriptCompile Include="apps\tests\trace-tests.ts" />
<TypeScriptCompile Include="apps\tests\ui-test.ts" />
<TypeScriptCompile Include="apps\tests\ui\action-bar\action-bar-tests-common.ts" />
<TypeScriptCompile Include="apps\tests\ui\action-bar\action-bar-tests.android.ts" />
<TypeScriptCompile Include="apps\tests\ui\action-bar\action-bar-tests.ios.ts" />
<TypeScriptCompile Include="apps\tests\ui\bindingContext_testPage.ts">
<DependentUpon>bindingContext_testPage.xml</DependentUpon>
</TypeScriptCompile>
@@ -1728,7 +1747,7 @@
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
</WebProjectProperties>
</FlavorProperties>
<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" />
<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" />
</VisualStudio>
</ProjectExtensions>
</Project>

View File

@@ -23,6 +23,7 @@ function isRunningOnEmulator(): boolean {
}
export var allTests = {};
allTests["ACTION-BAR"] = require("./ui/action-bar/action-bar-tests");
allTests["XML-DECLARATION"] = require("./xml-declaration/xml-declaration-tests");
allTests["APPLICATION"] = require("./application-tests");
allTests["DOCKLAYOUT"] = require("./layouts/dock-layout-tests");

View File

@@ -0,0 +1,136 @@
import TKUnit = require("../../TKUnit");
import LabelModule = require("ui/label");
import helper = require("../helper");
import builder = require("ui/builder");
import actionBar = require("ui/action-bar");
import button = require("ui/button");
import PageModule = require("ui/page");
export function test_actionItem_inherit_bindingContext() {
var page: PageModule.Page;
var label: LabelModule.Label;
var context = { text: "item" };
var pageFactory = function (): PageModule.Page {
page = new PageModule.Page();
page.bindingContext = context;
var actionItem = new actionBar.ActionItem();
actionItem.bind({
sourceProperty: "text",
targetProperty: "text"
});
page.actionBar.actionItems.addItem(actionItem);
label = new LabelModule.Label();
label.text = "Text";
page.content = label;
return page;
};
helper.navigate(pageFactory);
try {
TKUnit.assertEqual(page.actionBar.actionItems.getItemAt(0).text, "item", "actionItem.text");
}
finally {
helper.goBack();
}
}
export function test_actionBar_inherit_bindingContext_inXML() {
var p = <PageModule.Page>builder.parse(
"<Page> <Page.actionBar> <ActionBar title=\"{{ myProp }} \" /> </Page.actionBar> </Page>");
p.bindingContext = { myProp: "success" };
TKUnit.assertEqual(p.actionBar.title, "success", "actionBar.title");
};
export function test_actionItem_inherit_bindingContext_inXML() {
var p = <PageModule.Page>builder.parse(
"<Page> <Page.actionBar> <ActionBar> <ActionBar.actionItems>" +
"<ActionItem text=\"{{ myProp }} \" />" +
"</ActionBar.actionItems> </ActionBar> </Page.actionBar> </Page>");
p.bindingContext = { myProp: "success" };
var actionItem = p.actionBar.actionItems.getItemAt(0);
TKUnit.assertEqual(actionItem.text, "success", "actionItem.text");
};
export function test_navigationButton_inherit_bindingContext_inXML() {
var p = <PageModule.Page>builder.parse(
"<Page> <Page.actionBar> <ActionBar>" +
"<NavigationButton text=\"{{ myProp }} \" />" +
"</ActionBar> </Page.actionBar> </Page>");
p.bindingContext = { myProp: "success" };
var navButton = p.actionBar.navigationButton;
TKUnit.assertEqual(navButton.text, "success", "actionItem.text");
};
export function test_centerView_inherit_bindingContext_inXML() {
var p = <PageModule.Page>builder.parse(
"<Page> <Page.actionBar> <ActionBar> <ActionBar.centerView>" +
"<Button text=\"{{ myProp }} \" />" +
"</ActionBar.centerView> </ActionBar> </Page.actionBar> </Page>");
p.bindingContext = { myProp: "success" };
var centerBtn = <button.Button>p.actionBar.centerView;
TKUnit.assert(centerBtn instanceof button.Button, "cneterView not loaded correctly");
TKUnit.assertEqual(centerBtn.text, "success", "actionItem.text");
};
export function test_centerView_inXML() {
var p = <PageModule.Page>builder.parse(
"<Page> <Page.actionBar> <ActionBar> <ActionBar.centerView>" +
"<Button/>" +
"</ActionBar.centerView> </ActionBar> </Page.actionBar> </Page>");
var centerBtn = <button.Button>p.actionBar.centerView;
TKUnit.assert(centerBtn instanceof button.Button, "cneterView not loaded correctly");
};
export function test_centerView_inXML_short_definition() {
var p = <PageModule.Page>builder.parse(
"<Page> <Page.actionBar> <ActionBar>" +
"<Button/>" +
"</ActionBar> </Page.actionBar> </Page>");
var centerBtn = <button.Button>p.actionBar.centerView;
TKUnit.assert(centerBtn instanceof button.Button, "cneterView not loaded correctly");
};
export function test_Setting_ActionItems_doesnt_thrown() {
var page: PageModule.Page;
var label: LabelModule.Label;
var gotException = false;
var pageFactory = function (): PageModule.Page {
page = new PageModule.Page();
var actionItem = new actionBar.ActionItem();
actionItem.text = "Item";
page.actionBar.actionItems.addItem(actionItem);
label = new LabelModule.Label();
label.text = "Text";
page.content = label;
return page;
};
try {
helper.navigate(pageFactory);
}
catch (e) {
gotException = true;
}
try {
TKUnit.assert(!gotException, "Expected: false, Actual: " + gotException);
}
finally {
helper.goBack();
}
}

View File

@@ -0,0 +1,4 @@
import actionTestsCommon = require("./action-bar-tests-common");
declare var exports;
require("utils/module-merge").merge(actionTestsCommon, exports);

View File

@@ -0,0 +1,84 @@
import actionTestsCommon = require("./action-bar-tests-common");
import PageModule = require("ui/page");
import TKUnit = require("../../TKUnit");
import LabelModule = require("ui/label");
import helper = require("../helper");
import view = require("ui/core/view");
import actionBar = require("ui/action-bar");
declare var exports;
require("utils/module-merge").merge(actionTestsCommon, exports);
export function test_NavBar_isVisible_when_MenuItems_areSet() {
var page: PageModule.Page;
var label: LabelModule.Label;
var navBarIsVisible = false;
var handler = function (data) {
page.off(PageModule.Page.navigatedToEvent, handler);
navBarIsVisible = (<any>page.frame.ios).showNavigationBar;
}
var pageFactory = function (): PageModule.Page {
page = new PageModule.Page();
page.on(PageModule.Page.navigatedToEvent, handler);
var mi = new actionBar.ActionItem();
mi.text = "B";
page.actionBar.actionItems.addItem(mi);
label = new LabelModule.Label();
label.text = "Text";
page.content = label;
return page;
};
helper.navigate(pageFactory);
try {
TKUnit.assert(navBarIsVisible, "Expected: true, Actual: " + navBarIsVisible);
}
finally {
page.off(view.View.loadedEvent, handler);
helper.goBack();
}
}
export function test_NavBarItemsAreClearedFromNativeWhenClearedFromNativeScript() {
var page: PageModule.Page;
var label: LabelModule.Label;
var handler = function (data) {
page.off(PageModule.Page.navigatedToEvent, handler);
var menuItems = page.actionBar.actionItems.getItems();
var i;
for (i = menuItems.length - 1; i >= 0; i--) {
page.actionBar.actionItems.removeItem(menuItems[i]);
}
}
var pageFactory = function (): PageModule.Page {
page = new PageModule.Page();
page.on(PageModule.Page.navigatedToEvent, handler);
var mi = new actionBar.ActionItem();
mi.text = "B";
page.actionBar.actionItems.addItem(mi);
label = new LabelModule.Label();
label.text = "Text";
page.content = label;
return page;
};
helper.navigate(pageFactory);
try {
var navigationItem: UINavigationItem = ((<UIViewController>page.ios).navigationItem);
var rightBarButtonItemsCount = navigationItem.rightBarButtonItems ? navigationItem.rightBarButtonItems.count : 0;
TKUnit.assertEqual(rightBarButtonItemsCount, 0, "After remove all items native items should be 0.");
}
finally {
page.off(view.View.loadedEvent, handler);
helper.goBack();
}
}

View File

@@ -7,7 +7,7 @@ import TKUnit = require("../TKUnit");
import utils = require("utils/utils");
import types = require("utils/types");
import styling = require("ui/styling");
import platform = require("platform");
import platform = require("platform");
var DELTA = 0.1;
@@ -25,7 +25,7 @@ export function do_PageTest(test: (views: Array<view.View>) => void, content: vi
navigate(pageFactory);
try {
test([newPage, content, secondView, thirdView]);
test([newPage, content, secondView, thirdView, newPage.actionBar]);
}
finally {
goBack();
@@ -45,7 +45,7 @@ export function do_PageTest_WithButton(test: (views: Array<view.View>) => void)
navigate(pageFactory);
try {
test([newPage, btn]);
test([newPage, btn, newPage.actionBar]);
}
finally {
goBack();
@@ -69,7 +69,7 @@ export function do_PageTest_WithStackLayout_AndButton(test: (views: Array<view.V
navigate(pageFactory);
try {
test([newPage, stackLayout, btn]);
test([newPage, stackLayout, btn, newPage.actionBar]);
}
finally {
goBack();
@@ -94,14 +94,14 @@ export function do_PageTest_WithStackLayout_AndButton_NavigatedBack(test: (views
navigate(pageFactory);
try {
test([newPage, stackLayout, btn]);
test([newPage, stackLayout, btn, newPage.actionBar]);
}
finally {
goBack();
}
try {
assert([newPage, stackLayout, btn]);
assert([newPage, stackLayout, btn, newPage.actionBar]);
}
finally {
// wait to ensure asynchronous navigation
@@ -198,7 +198,7 @@ export function buildUIWithWeakRefAndInteract<T extends view.View>(createFunc: (
}
}
export function navigate(pageFactory: () => page.Page, navigationContext?: any) {
export function navigate(pageFactory: () => page.Page, navigationContext?: any) {
var currentPage = frame.topmost().currentPage;
frame.topmost().navigate({ create: pageFactory, animated: false, context: navigationContext });
TKUnit.waitUntilReady(() => { return frame.topmost().currentPage !== currentPage; });

View File

@@ -27,8 +27,6 @@ import LabelModule = require("ui/label");
import stackLayoutModule = require("ui/layouts/stack-layout");
import helper = require("../helper");
import view = require("ui/core/view");
import builder = require("ui/builder");
import actionBar = require("ui/action-bar");
export function addLabelToPage(page: PageModule.Page, text?: string) {
var label = new LabelModule.Label();
@@ -36,82 +34,6 @@ export function addLabelToPage(page: PageModule.Page, text?: string) {
page.content = label;
}
export function test_menuItem_inherit_bindingContext() {
var page: PageModule.Page;
var label: LabelModule.Label;
var context = { text: "item" };
var pageFactory = function (): PageModule.Page {
page = new PageModule.Page();
page.bindingContext = context;
var menuItem = new actionBar.ActionItem();
menuItem.bind({
sourceProperty: "text",
targetProperty: "text"
});
page.actionBar.actionItems.addItem(menuItem);
label = new LabelModule.Label();
label.text = "Text";
page.content = label;
return page;
};
helper.navigate(pageFactory);
try {
TKUnit.assertEqual(page.actionBar.actionItems.getItemAt(0).text, "item", "menuItem.text should equal to 'item'");
}
finally {
helper.goBack();
}
}
export function test_menuItem_inherit_bindingContext_inXML() {
var p = <PageModule.Page>builder.parse("<Page><Page.actionItems><ActionItem text=\"{{ myProp }} \" /></Page.actionItems></Page>");
p.bindingContext = { myProp: "success" };
var menuItem = p.actionBar.actionItems.getItemAt(0);
TKUnit.assertEqual(menuItem.text, "success", "menuItem.text");
};
export function test_Setting_ActionItems_doesnt_thrown() {
var page: PageModule.Page;
var label: LabelModule.Label;
var gotException = false;
var pageFactory = function (): PageModule.Page {
page = new PageModule.Page();
var menuItem = new actionBar.ActionItem();
menuItem.text = "Item";
page.actionBar.actionItems.addItem(menuItem);
label = new LabelModule.Label();
label.text = "Text";
page.content = label;
return page;
};
try {
helper.navigate(pageFactory);
}
catch (e) {
gotException = true;
}
try {
TKUnit.assert(!gotException, "Expected: false, Actual: " + gotException);
}
finally {
helper.goBack();
}
}
export function test_AfterPageLoaded_is_called_NativeInstance_is_created() {
var page: PageModule.Page;

View File

@@ -3,8 +3,6 @@ import PageModule = require("ui/page");
import TKUnit = require("../../TKUnit");
import LabelModule = require("ui/label");
import helper = require("../helper");
import view = require("ui/core/view");
import actionBar = require("ui/action-bar");
declare var exports;
require("utils/module-merge").merge(PageTestCommon, exports);
@@ -26,77 +24,3 @@ export function test_NavigateToNewPage_InnerControl() {
TKUnit.assert(label.android === undefined, "InnerControl.android should be undefined after navigate back.");
TKUnit.assert(label.isLoaded === false, "InnerControl.isLoaded should become false after navigating back");
}
export function test_NavBar_isVisible_when_MenuItems_areSet() {
var page: PageModule.Page;
var label: LabelModule.Label;
var navBarIsVisible = false;
var handler = function (data) {
page.off(PageModule.Page.navigatedToEvent, handler);
navBarIsVisible = (<any>page.frame.ios).showNavigationBar;
}
var pageFactory = function (): PageModule.Page {
page = new PageModule.Page();
page.on(PageModule.Page.navigatedToEvent, handler);
var mi = new actionBar.ActionItem();
mi.text = "B";
page.actionBar.actionItems.addItem(mi);
label = new LabelModule.Label();
label.text = "Text";
page.content = label;
return page;
};
helper.navigate(pageFactory);
try {
TKUnit.assert(navBarIsVisible, "Expected: true, Actual: " + navBarIsVisible);
}
finally {
page.off(view.View.loadedEvent, handler);
helper.goBack();
}
}
export function test_NavBarItemsAreClearedFromNativeWhenClearedFromNativeScript() {
var page: PageModule.Page;
var label: LabelModule.Label;
var handler = function (data) {
page.off(PageModule.Page.navigatedToEvent, handler);
var menuItems = page.actionBar.actionItems.getItems();
var i;
for (i = menuItems.length - 1; i >= 0; i--) {
page.actionBar.actionItems.removeItem(menuItems[i]);
}
}
var pageFactory = function (): PageModule.Page {
page = new PageModule.Page();
page.on(PageModule.Page.navigatedToEvent, handler);
var mi = new actionBar.ActionItem();
mi.text = "B";
page.actionBar.actionItems.addItem(mi);
label = new LabelModule.Label();
label.text = "Text";
page.content = label;
return page;
};
helper.navigate(pageFactory);
try {
var navigationItem: UINavigationItem = ((<UIViewController>page.ios).navigationItem);
var rightBarButtonItemsCount = navigationItem.rightBarButtonItems ? navigationItem.rightBarButtonItems.count : 0;
TKUnit.assertEqual(rightBarButtonItemsCount, 0, "After remove all items native items should be 0.");
}
finally {
page.off(view.View.loadedEvent, handler);
helper.goBack();
}
}

View File

@@ -27,7 +27,8 @@ export var test_eachDescendant = function () {
}
viewModule.eachDescendant(frame.topmost(), callback);
TKUnit.assert(counter === 2);
// Descendants: page, actionBar, button
TKUnit.assertEqual(counter, 3, "descendants");
}
helper.do_PageTest_WithButton(test);

View File

@@ -21,7 +21,8 @@ export var test_event_onAttached_IsRaised = function () {
trace.addEventListener(listener);
var test = function (views: Array<view.View>) {
TKUnit.assertEqual(listener.receivedEvents.length, views.length, "onAttached calls");
// 4 onAttached calls: page, stack, button, actionBar
TKUnit.assertEqual(listener.receivedEvents.length, 4, "onAttached calls");
var i;
for (i = 0; i < listener.receivedEvents.length; i++) {
@@ -58,7 +59,8 @@ export var test_event_onContextChanged_IsRaised_WhenAttached = function () {
trace.addEventListener(listener);
var test = function (views: Array<view.View>) {
TKUnit.assertEqual(listener.receivedEvents.length, views.length, "onContextChanged calls");
// 4 onContextChanged calls: page, stack, button, actionBar
TKUnit.assertEqual(listener.receivedEvents.length, 4, "onContextChanged calls");
var i;
for (i = 0; i < listener.receivedEvents.length; i++) {
@@ -91,7 +93,7 @@ export var test_event_onContextChanged_IsRaised_WhenAttached_Dynamically = funct
}
export var test_event_onDetached_IsRaised = function () {
var cachedViews;
var cachedViews: Array<view.View>;
var listener: Listener;
var test = function (views: Array<view.View>) {
@@ -104,13 +106,18 @@ export var test_event_onDetached_IsRaised = function () {
helper.do_PageTest_WithStackLayout_AndButton(test);
TKUnit.assertEqual(listener.receivedEvents.length, cachedViews.length, "onDetached calls");
// 4 detached calls: page, stack, button, actionBar
TKUnit.assertEqual(listener.receivedEvents.length, 4, "onDetached calls");
var i
var j;
// _onDetached event is propagated to nested children first
for (i = 0, j = listener.receivedEvents.length - 1; i < listener.receivedEvents.length; i++, j--) {
TKUnit.assertEqual(listener.receivedEvents[i].sender, cachedViews[j]);
for (i = 0, j = listener.receivedEvents.length - 1; i < listener.receivedEvents.length; i++ , j--) {
// check the sender and remove
var index = cachedViews.indexOf(<view.View>listener.receivedEvents[i].sender);
TKUnit.assert(index >= 0, "_onDetached called for unknown sender");
cachedViews.splice(index, 1);
TKUnit.assertEqual(listener.receivedEvents[i].name, "_onDetached");
}
@@ -146,14 +153,14 @@ export var test_events_onDetachedAndRemovedFromNativeVisualTree_AreRaised_WhenNa
};
var assert = function (views: Array<view.View>) {
// one for the Button, one for the StackLayout and one for the Page.
TKUnit.assertEqual(onDetachedListener.receivedEvents.length, 3, "onDetached calls");
// 4 onDetached calls: page, stack, button, actionBar
TKUnit.assertEqual(onDetachedListener.receivedEvents.length, 4, "onDetached calls");
TKUnit.assertEqual(onDetachedListener.receivedEvents[0].name, "_onDetached");
TKUnit.assertEqual(onDetachedListener.receivedEvents[0].sender, views[2]);
TKUnit.assertEqual(onDetachedListener.receivedEvents[1].sender, views[1]);
TKUnit.assertEqual(onDetachedListener.receivedEvents[2].sender, views[0]);
TKUnit.assertEqual(onDetachedListener.receivedEvents[0].sender, views[2]); // Button
TKUnit.assertEqual(onDetachedListener.receivedEvents[1].sender, views[1]); // Stack
TKUnit.assertEqual(onDetachedListener.receivedEvents[2].sender, views[3]); // ActionBar
TKUnit.assertEqual(onDetachedListener.receivedEvents[3].sender, views[0]); // Page
// this is an event fired from CustomLayoutView when a child is removed from the native visual tree
// therefore this event is fired for StackLayout and Button (which is inside StackLayout).
@@ -233,7 +240,7 @@ export var test_StylePropertiesDefaultValuesCache = function () {
var defaultLabelFontSize = (<android.widget.TextView>(testLabel.android)).getTextSize();
var defaultButtonFontSize = (<android.widget.Button>(testButton.android)).getTextSize();
testLabel.style.fontSize = testValue;
testButton.style.fontSize = testValue;
@@ -248,7 +255,7 @@ export var test_StylePropertiesDefaultValuesCache = function () {
actualLabelTextSize = (<android.widget.TextView>(testLabel.android)).getTextSize();
actualButtonTextSize = (<android.widget.Button>(testButton.android)).getTextSize();
TKUnit.assert(actualLabelTextSize === defaultLabelFontSize, "Label text size should be default!");
TKUnit.assert(actualButtonTextSize === defaultButtonFontSize, "Button text size should be default!");
};

View File

@@ -93,13 +93,13 @@ export class ActionBar extends view.View implements dts.ActionBar {
}
this._centerView = value;
if (this._centerView) {
this._centerView.style._setValue(style.horizontalAlignmentProperty, enums.HorizontalAlignment.center, observable.ValueSource.Inherited);
this._centerView.style._setValue(style.verticalAlignmentProperty, enums.VerticalAlignment.center, observable.ValueSource.Inherited);
this._addView(this._centerView);
}
this.updateActionBar();
}
}
@@ -288,11 +288,23 @@ export class ActionItemBase extends bindable.Bindable implements dts.ActionItemB
this._setValue(ActionItemBase.iconProperty, value);
}
private _actionBar: ActionBar;
get actionBar(): ActionBar {
return this._actionBar;
}
set actionBar(value: ActionBar) {
if (value !== this._actionBar) {
this._actionBar = value;
if (this._actionBar) {
this.bindingContext = this._actionBar.bindingContext;
}
}
}
public _raiseTap() {
this._emit(ActionItem.tapEvent);
}
actionBar: ActionBar;
}
export class ActionItem extends ActionItemBase {

View File

@@ -4,8 +4,7 @@
import dependencyObservable = require("ui/core/dependency-observable");
import bindable = require("ui/core/bindable");
import pages = require("ui/page");
import contentView = require("ui/content-view");
export class ActionBar extends view.View implements view.AddArrayFromBuilder, view.AddChildFromBuilder {
title: string;
icon: string;
@@ -21,7 +20,7 @@
updateActionBar();
//@private
//@private
_updateAndroidActionBar(menu: android.view.IMenu);
_onAndroidItemSelected(itemId: number): boolean

View File

@@ -92,9 +92,11 @@ export class Page extends contentView.ContentView implements dts.Page {
if (this._actionBar !== value) {
if (this._actionBar) {
this._actionBar.page = undefined;
this._removeView(this._actionBar);
}
this._actionBar = value;
this._actionBar.page = this;
this._addView(this._actionBar);
}
}
@@ -124,7 +126,7 @@ export class Page extends contentView.ContentView implements dts.Page {
cssFileName = fs.path.join(fs.knownFolders.currentApp().path, cssFileName.replace("~/", ""));
}
if (!this._cssFiles[cssFileName]) {
if (fs.File.exists(cssFileName)) {
if (fs.File.exists(cssFileName)) {
new fileSystemAccess.FileSystemAccess().readText(cssFileName, r => {
this._addCssInternal(r, cssFileName);
this._cssFiles[cssFileName] = true;
@@ -248,4 +250,13 @@ export class Page extends contentView.ContentView implements dts.Page {
resetCssValuesFunc(this);
view.eachDescendant(this, resetCssValuesFunc);
}
public _addViewToNativeVisualTree(view: view.View): boolean {
// ActionBar is added to the native visual tree by default
if (view === this.actionBar) {
return true;
}
return super._addViewToNativeVisualTree(view);
}
}