diff --git a/ui/layouts/grid-layout/grid-layout-common.ts b/ui/layouts/grid-layout/grid-layout-common.ts index 1c4c8a984..71fee88bd 100644 --- a/ui/layouts/grid-layout/grid-layout-common.ts +++ b/ui/layouts/grid-layout/grid-layout-common.ts @@ -202,6 +202,22 @@ export class GridLayout extends layouts.LayoutBase implements definition.GridLay this.onColumnRemoved(itemSpec, index); } + public removeColumns() { + for (var i = 0; i < this._cols.length; i++) { + this._cols[i].index = -1; + } + this._cols.length = 0; + this.invalidate(); + } + + public removeRows() { + for (var i = 0; i < this._rows.length; i++) { + this._rows[i].index = -1; + } + this._rows.length = 0; + this.invalidate(); + } + protected onRowChanged(element: view.View, oldValue: number, newValue: number) { // } diff --git a/ui/layouts/grid-layout/grid-layout.d.ts b/ui/layouts/grid-layout/grid-layout.d.ts index af688603f..325a47c81 100644 --- a/ui/layouts/grid-layout/grid-layout.d.ts +++ b/ui/layouts/grid-layout/grid-layout.d.ts @@ -119,23 +119,33 @@ /** * Adds a column specification to a GridLayout. */ - public addColumn(itemSpec: ItemSpec); + public addColumn(itemSpec: ItemSpec): void; /** * Adds a row specification to a GridLayout. */ - public addRow(itemSpec: ItemSpec); + public addRow(itemSpec: ItemSpec): void; /** * Removes a column specification from a GridLayout. */ public removeColumn(itemSpec: ItemSpec): void; + /** + * Removes all columns specification from a GridLayout. + */ + public removeColumns(): void; + /** * Removes a row specification from a GridLayout. */ public removeRow(itemSpec: ItemSpec): void; + /** + * Removes all rows specification from a GridLayout. + */ + public removeRows(): void; + /** * Gets array of column specifications defined on this instance of GridLayout. */ diff --git a/ui/layouts/grid-layout/grid-layout.ios.ts b/ui/layouts/grid-layout/grid-layout.ios.ts index 1b20a3a3c..d03a6f120 100644 --- a/ui/layouts/grid-layout/grid-layout.ios.ts +++ b/ui/layouts/grid-layout/grid-layout.ios.ts @@ -12,7 +12,7 @@ export class GridLayout extends common.GridLayout { protected onRowAdded(itemSpec: common.ItemSpec) { this.invalidate(); - } + } protected onColumnAdded(itemSpec: common.ItemSpec) { this.invalidate(); diff --git a/ui/layouts/layout-base.d.ts b/ui/layouts/layout-base.d.ts index f36d88968..388bc5390 100644 --- a/ui/layouts/layout-base.d.ts +++ b/ui/layouts/layout-base.d.ts @@ -30,20 +30,25 @@ * Adds the view to children array. * @param view The view to be added to the end of the children array. */ - addChild(view: view.View); + addChild(view: view.View): void; /** * Inserts the view to children array at the specified index. * @param view The view to be added to the end of the children array. * @param atIndex The insertion index. */ - insertChild(child: view.View, atIndex: number); + insertChild(child: view.View, atIndex: number): void; /** * Removes the specified view from the children array. * @param view The view to remove from the children array. */ - removeChild(view: view.View); + removeChild(view: view.View): void; + + /** + * Removes all views in this layout. + */ + removeChildren(): void; /** * Gets or sets padding style property. diff --git a/ui/layouts/layout-base.ts b/ui/layouts/layout-base.ts index 47c0587be..f72613418 100644 --- a/ui/layouts/layout-base.ts +++ b/ui/layouts/layout-base.ts @@ -37,18 +37,18 @@ export class LayoutBase extends view.CustomLayoutView implements definition.Layo return view.getViewById(this, id); } - public addChild(child: view.View) { + public addChild(child: view.View): void { // TODO: Do we need this method since we have the core logic in the View implementation? this._addView(child); this._subViews.push(child); } - public insertChild(child: view.View, atIndex: number) { + public insertChild(child: view.View, atIndex: number): void { this._addView(child, atIndex); this._subViews.splice(atIndex, 0, child); } - public removeChild(child: view.View) { + public removeChild(child: view.View): void { this._removeView(child); // TODO: consider caching the index on the child. @@ -56,7 +56,13 @@ export class LayoutBase extends view.CustomLayoutView implements definition.Layo this._subViews.splice(index, 1); } - public _eachChildView(callback: (child: view.View) => boolean) { + public removeChildren(): void { + while (this.getChildrenCount() !== 0) { + this.removeChild(this._subViews[this.getChildrenCount() - 1]); + } + } + + public _eachChildView(callback: (child: view.View) => boolean): void { var i; var length = this._subViews.length; var retVal: boolean;