/*
* Smart GWT (GWT for SmartClient)
* Copyright 2008 and beyond, Isomorphic Software, Inc.
*
* Smart GWT is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License version 3
* as published by the Free Software Foundation. Smart GWT is also
* available under typical commercial license terms - see
* http://smartclient.com/license
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package com.smartgwt.client.widgets.cube;
import com.smartgwt.client.event.*;
import com.smartgwt.client.core.*;
import com.smartgwt.client.types.*;
import com.smartgwt.client.data.*;
import com.smartgwt.client.data.events.*;
import com.smartgwt.client.rpc.*;
import com.smartgwt.client.widgets.*;
import com.smartgwt.client.widgets.events.*;
import com.smartgwt.client.widgets.form.*;
import com.smartgwt.client.widgets.form.validator.*;
import com.smartgwt.client.widgets.form.fields.*;
import com.smartgwt.client.widgets.tile.*;
import com.smartgwt.client.widgets.tile.events.*;
import com.smartgwt.client.widgets.grid.*;
import com.smartgwt.client.widgets.grid.events.*;
import com.smartgwt.client.widgets.chart.*;
import com.smartgwt.client.widgets.layout.*;
import com.smartgwt.client.widgets.layout.events.*;
import com.smartgwt.client.widgets.menu.*;
import com.smartgwt.client.widgets.tab.*;
import com.smartgwt.client.widgets.toolbar.*;
import com.smartgwt.client.widgets.tree.*;
import com.smartgwt.client.widgets.tree.events.*;
import com.smartgwt.client.widgets.viewer.*;
import com.smartgwt.client.widgets.calendar.*;
import com.smartgwt.client.widgets.calendar.events.*;
import com.smartgwt.client.widgets.cube.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.user.client.Element;
import com.smartgwt.client.util.*;
import com.google.gwt.event.shared.*;
import com.google.gwt.event.shared.HasHandlers;
/**
* The CubeGrid is an interactive grid component that presents very large, multi-dimensional data sets (also known as data
* cubes) for reporting or analytic applications. <P> <var class="SmartGWT"> Note that the CubeGrid is implemented as part
* of the optional Analytics module. Attempting to create a CubeGrid without having the module loaded will throw a
* RuntimeException. <P> </var> CubeGrids are often called crosstabs, for their cross-tabular display of data dimensions in
* stacked/nested rows and columns, or pivot tables, for their ability to "pivot" dimensions between rows and columns to
* view a data cube from different perspectives. They are typically used in the querying and reporting front-ends of data
* warehousing, decision support, OLAP, and business intelligence systems. <P> <B>Multi-Dimensional Data Terminology</B>
* <P> The CubeGrid refers to the dimensions of a data cube as facets, to the possible values in each facet as facet
* values, and to the values within the data cube as data values or cell values. Equivalent terms that are commonly used in
* data warehousing or business intelligence systems include:<br> <b>facet:</b> dimension, attribute, feature<br> <b>facet
* value:</b> dimension member, attribute value, feature value<br> <b>cell value:</b> data value, metric value, measure <P>
* <B>Visual Structure</B> <P> Like the ListGrid and TreeGrid components, the CubeGrid displays data values in a tabular
* "body" with adjacent "headers". While the ListGrid and TreeGrid display rows of records with field values, the CubeGrid
* displays a body of individual cell values, each associated with a combination of facet values. The facet values for a
* cell are displayed in the column headers above the cell and row headers to the left of the cell. CubeGrids can display
* an arbitrary number of facets, by stacking multiple levels of row and/or column headers. <P> Except for the innermost
* column facet, each facet in a CubeGrid has a facet label adjacent to its row or column headers. The facet labels serve
* two main purposes: they display the titles of the facets, and they provide drag-and-drop reordering or pivoting of
* facets within the CubeGrid. The row facet labels also provide interactive selection, resizing, and other operations on
* the columns of row facet values. <P> The innermost column headers provide special behaviors and controls for
* manipulating the columns of data in a CubeGrid. End users may select, resize, reorder, minimize, maximize, or auto-fit
* the columns of data via mouse interactions with these headers. Customizable indicators and controls may be included at
* the top of each innermost column header. <P> If a CubeGrid is not large enough to display all of its cell values,
* horizontal and/or vertical scrollbars will appear below and to the right of the body. The body of the CubeGrid may be
* scrolled on either axis. The headers are "frozen" from scrolling on one axis - row headers only scroll vertically, while
* column headers only scroll horizontally - so the facet values for the visible cells are always displayed. <P> <B>Data
* Loading</B> <P> Data can be provided to the Cube via data as an Array of {@link
* com.smartgwt.client.widgets.cube.CellRecord CellRecords}, each representing the data for one cell. <P> For large
* datasets, {@link com.smartgwt.client.widgets.cube.CubeGrid#getDataSource provide a DataSource} with one field per
* facetId, and the CubeGrid will load data on demand to fill the visible area, including lazily loading data for
* expanding/collapsing tree facets and when facetValues are made visible programmatically or via menus. <P> <B>Picking
* Facets</B> <P> By "facet" we mean an aspect of the data which is orthogonal to other aspects of the data, that is,
* combining values from any two "facets" should make sense. <P> For example, in sales data, two facets might be "quarter"
* and "region" - it makes sense to combine any quarter and region, although for some combinations, there may not be data
* available. <P> An example of two aspects that would <b>not</b> be independent facets are "state" and "city" - it's
* senseless to combine arbitrary states with arbitrary cities - most combinations are invalid. Consider instead a {@link
* com.smartgwt.client.widgets.cube.Facet#getIsTree tree facet} that combines "city" and "state" values. <P> Note that if
* "city" and "state" are represented as facets, they may look correct if they are both on the same axis of the grid and
* {@link com.smartgwt.client.widgets.cube.CubeGrid#getHideEmptyFacetValues hideEmptyFacetValues} is used to trim nonsense
* combinations, but if the data is {@link com.smartgwt.client.widgets.cube.CubeGrid#getCanMoveFacets pivoted} such that
* "state" and "city" are on opposing axes, there will be a roughly diagonal "stripe" of data for combinations of "state"
* and "city" that make sense, and all other space will be blank. This is a strong indication that two facets should be
* represented as a single tree facet instead.
* @see com.smartgwt.client.widgets.cube.Facet
* @see com.smartgwt.client.widgets.cube.FacetValue
*/
public class CubeGrid extends ListGrid implements com.smartgwt.client.widgets.cube.events.HasFacetAddedHandlers, com.smartgwt.client.widgets.cube.events.HasFacetMovedHandlers, com.smartgwt.client.widgets.cube.events.HasFacetRemovedHandlers, com.smartgwt.client.widgets.cube.events.HasFixedFacetValueChangedHandlers, com.smartgwt.client.widgets.cube.events.HasFacetValueSelectionChangedHandlers, com.smartgwt.client.widgets.cube.events.HasSortByFacetIdHandlers, com.smartgwt.client.widgets.cube.events.HasSortByFacetValuesHandlers {
public static CubeGrid getOrCreateRef(JavaScriptObject jsObj) {
if(jsObj == null) return null;
BaseWidget obj = BaseWidget.getRef(jsObj);
if(obj != null) {
return (CubeGrid) obj;
} else {
return new CubeGrid(jsObj);
}
}
public CubeGrid(){
checkAnalyticsLoaded();
setAutoFetchData(false);
scClassName = "CubeGrid";
}
public CubeGrid(JavaScriptObject jsObj){
super(jsObj);
}
protected native JavaScriptObject create()/*-{
var config = this.@com.smartgwt.client.widgets.BaseWidget::getConfig()();
var scClassName = this.@com.smartgwt.client.widgets.BaseWidget::scClassName;
var widget = $wnd.isc[scClassName].create(config);
this.@com.smartgwt.client.widgets.BaseWidget::doInit()();
return widget;
}-*/;
// ********************* Properties / Attributes ***********************
/**
* Whether alternating rows should be drawn in alternating styles, in order to create a "ledger" effect for easier reading.
* If enabled, the cell style for alternate rows will have "Dark" appended to it.
*
* @param alternateRecordStyles alternateRecordStyles Default value is true
* @see com.smartgwt.client.docs.Appearance Appearance overview and related methods
*/
public void setAlternateRecordStyles(Boolean alternateRecordStyles) {
setAttribute("alternateRecordStyles", alternateRecordStyles, true);
}
/**
* Whether alternating rows should be drawn in alternating styles, in order to create a "ledger" effect for easier reading.
* If enabled, the cell style for alternate rows will have "Dark" appended to it.
*
*
* @return Boolean
* @see com.smartgwt.client.docs.Appearance Appearance overview and related methods
*/
public Boolean getAlternateRecordStyles() {
return getAttributeAsBoolean("alternateRecordStyles");
}
/**
* If true, when multiple facets appear on one side in a nested headers presentation, the selection state of parent/child
* headers are automatically kept in sync.
*
* @param autoSelectHeaders autoSelectHeaders Default value is true
*/
public void setAutoSelectHeaders(Boolean autoSelectHeaders) {
setAttribute("autoSelectHeaders", autoSelectHeaders, true);
}
/**
* If true, when multiple facets appear on one side in a nested headers presentation, the selection state of parent/child
* headers are automatically kept in sync.
*
*
* @return Boolean
*/
public Boolean getAutoSelectHeaders() {
return getAttributeAsBoolean("autoSelectHeaders");
}
/**
* Whether to select cells in the body when row or column headers are selected.
*
* @param autoSelectValues autoSelectValues Default value is "both"
* @throws IllegalStateException this property cannot be changed after the component has been created
*/
public void setAutoSelectValues(AutoSelectionModel autoSelectValues) throws IllegalStateException {
setAttribute("autoSelectValues", autoSelectValues == null ? null : autoSelectValues.getValue(), false);
}
/**
* Whether to select cells in the body when row or column headers are selected.
*
*
* @return AutoSelectionModel
*/
public AutoSelectionModel getAutoSelectValues() {
return EnumUtil.getEnum(AutoSelectionModel.values(), getAttribute("autoSelectValues"));
}
/**
* Automatically size row headers to fit wrapped text.
*
* @param autoSizeHeaders autoSizeHeaders Default value is false
*/
public void setAutoSizeHeaders(Boolean autoSizeHeaders) {
setAttribute("autoSizeHeaders", autoSizeHeaders, true);
}
/**
* Automatically size row headers to fit wrapped text.
*
*
* @return Boolean
*/
public Boolean getAutoSizeHeaders() {
return getAttributeAsBoolean("autoSizeHeaders");
}
/**
* {@link com.smartgwt.client.grid.GridRenderer#getBaseStyle base cell style} for this listGrid. If this property is unset,
* base style may be derived from {@link com.smartgwt.client.widgets.grid.ListGrid#getNormalBaseStyle normalBaseStyle} or
* {@link com.smartgwt.client.widgets.grid.ListGrid#getTallBaseStyle tallBaseStyle} as described in {@link
* com.smartgwt.client.widgets.grid.ListGrid#getBaseStyle ListGrid.getBaseStyle}.
*
* @param baseStyle baseStyle Default value is "cubeCell"
* @throws IllegalStateException this property cannot be changed after the component has been created
* @see com.smartgwt.client.docs.Appearance Appearance overview and related methods
*/
public void setBaseStyle(String baseStyle) throws IllegalStateException {
setAttribute("baseStyle", baseStyle, false);
}
/**
* {@link com.smartgwt.client.grid.GridRenderer#getBaseStyle base cell style} for this listGrid. If this property is unset,
* base style may be derived from {@link com.smartgwt.client.widgets.grid.ListGrid#getNormalBaseStyle normalBaseStyle} or
* {@link com.smartgwt.client.widgets.grid.ListGrid#getTallBaseStyle tallBaseStyle} as described in {@link
* com.smartgwt.client.widgets.grid.ListGrid#getBaseStyle ListGrid.getBaseStyle}.
*
*
* @return Return the base stylename for this cell. Default implementation just returns this.baseStyle. See {@link
* com.smartgwt.client.widgets.grid.ListGrid#getCellStyle getCellStyle()} for a general discussion of how to style cells.
* @see com.smartgwt.client.docs.Appearance Appearance overview and related methods
*/
public String getBaseStyle() {
return getAttributeAsString("baseStyle");
}
/**
* Minimum height for the body of this cubeGrid.
* <p><b>Note : </b> This is an advanced setting</p>
*
* @param bodyMinHeight bodyMinHeight Default value is null
*/
public void setBodyMinHeight(Integer bodyMinHeight) {
setAttribute("bodyMinHeight", bodyMinHeight, true);
}
/**
* Minimum height for the body of this cubeGrid.
*
*
* @return Integer
*/
public Integer getBodyMinHeight() {
return getAttributeAsInt("bodyMinHeight");
}
/**
* Minimum width for the body of this cubeGrid.
* <p><b>Note : </b> This is an advanced setting</p>
*
* @param bodyMinWidth bodyMinWidth Default value is null
*/
public void setBodyMinWidth(Integer bodyMinWidth) {
setAttribute("bodyMinWidth", bodyMinWidth, true);
}
/**
* Minimum width for the body of this cubeGrid.
*
*
* @return Integer
*/
public Integer getBodyMinWidth() {
return getAttributeAsInt("bodyMinWidth");
}
/**
* CSS class for the CubeGrid body
*
* @param bodyStyleName bodyStyleName Default value is "cubeGridBody"
* @see com.smartgwt.client.docs.Appearance Appearance overview and related methods
*/
public void setBodyStyleName(String bodyStyleName) {
setAttribute("bodyStyleName", bodyStyleName, true);
}
/**
* CSS class for the CubeGrid body
*
*
* @return String
* @see com.smartgwt.client.docs.Appearance Appearance overview and related methods
*/
public String getBodyStyleName() {
return getAttributeAsString("bodyStyleName");
}
/**
* If true, hierarchical facets will show expand/collapse controls to allow the user to expand and collapse the tree of
* facetValues for that facet.
*
* @param canCollapseFacets canCollapseFacets Default value is false
*/
public void setCanCollapseFacets(Boolean canCollapseFacets) {
setAttribute("canCollapseFacets", canCollapseFacets, true);
}
/**
* If true, hierarchical facets will show expand/collapse controls to allow the user to expand and collapse the tree of
* facetValues for that facet.
*
*
* @return Boolean
*/
public Boolean getCanCollapseFacets() {
return getAttributeAsBoolean("canCollapseFacets");
}
/**
* Whether cells can be edited in this grid. Can be overridden on a per-facetValue basis.
*
* @param canEdit canEdit Default value is false
*/
public void setCanEdit(Boolean canEdit) {
setAttribute("canEdit", canEdit, true);
}
/**
* Whether cells can be edited in this grid. Can be overridden on a per-facetValue basis.
*
*
* @return Boolean
*/
public Boolean getCanEdit() {
return getAttributeAsBoolean("canEdit");
}
/**
* If true, allow columns in the grid body to be minimized (reduced to the width of the minimize control) by clicking on a
* minimize control in the innermost column headers.
*
* @param canMinimizeColumns canMinimizeColumns Default value is null
*/
public void setCanMinimizeColumns(Boolean canMinimizeColumns) {
setAttribute("canMinimizeColumns", canMinimizeColumns, true);
}
/**
* If true, allow columns in the grid body to be minimized (reduced to the width of the minimize control) by clicking on a
* minimize control in the innermost column headers.
*
*
* @return Boolean
*/
public Boolean getCanMinimizeColumns() {
return getAttributeAsBoolean("canMinimizeColumns");
}
/**
* If true, when multiple facets are shown on a side, all facetValues in the second level of headers or higher will show
* controls to "minimize" the values of the next facet. Minimizing means showing only one, or very few, of the next facet's
* values. <P> Set {@link com.smartgwt.client.widgets.cube.FacetValue#getIsMinimizeValue isMinimizeValue} to indicate which
* facetValues should be shown when a facet is minimized.
*
* @param canMinimizeFacets canMinimizeFacets Default value is false
*/
public void setCanMinimizeFacets(Boolean canMinimizeFacets) {
setAttribute("canMinimizeFacets", canMinimizeFacets, true);
}
/**
* If true, when multiple facets are shown on a side, all facetValues in the second level of headers or higher will show
* controls to "minimize" the values of the next facet. Minimizing means showing only one, or very few, of the next facet's
* values. <P> Set {@link com.smartgwt.client.widgets.cube.FacetValue#getIsMinimizeValue isMinimizeValue} to indicate which
* facetValues should be shown when a facet is minimized.
*
*
* @return Boolean
*/
public Boolean getCanMinimizeFacets() {
return getAttributeAsBoolean("canMinimizeFacets");
}
/**
* Whether row and column facets can be rearranged by the user, by dragging and dropping the facet labels.
*
* @param canMoveFacets canMoveFacets Default value is false
*/
public void setCanMoveFacets(Boolean canMoveFacets) {
setAttribute("canMoveFacets", canMoveFacets, true);
}
/**
* Whether row and column facets can be rearranged by the user, by dragging and dropping the facet labels.
*
*
* @return Boolean
*/
public Boolean getCanMoveFacets() {
return getAttributeAsBoolean("canMoveFacets");
}
/**
* If true, body columns can be reordered via the innermost column headers.
*
* @param canReorderColumns canReorderColumns Default value is null
*/
public void setCanReorderColumns(Boolean canReorderColumns) {
setAttribute("canReorderColumns", canReorderColumns, true);
}
/**
* If true, body columns can be reordered via the innermost column headers.
*
*
* @return Boolean
*/
public Boolean getCanReorderColumns() {
return getAttributeAsBoolean("canReorderColumns");
}
/**
* If true, body columns can be resized via the innermost column headers.
*
* @param canResizeColumns canResizeColumns Default value is null
*/
public void setCanResizeColumns(Boolean canResizeColumns) {
setAttribute("canResizeColumns", canResizeColumns, true);
}
/**
* If true, body columns can be resized via the innermost column headers.
*
*
* @return Boolean
*/
public Boolean getCanResizeColumns() {
return getAttributeAsBoolean("canResizeColumns");
}
/**
* Determines whether row or column facetValue headers can be selected.
*
* @param canSelectHeaders canSelectHeaders Default value is true
*/
public void setCanSelectHeaders(Boolean canSelectHeaders) {
setAttribute("canSelectHeaders", canSelectHeaders, true);
}
/**
* Determines whether row or column facetValue headers can be selected.
*
*
* @return Boolean
*/
public Boolean getCanSelectHeaders() {
return getAttributeAsBoolean("canSelectHeaders");
}
/**
* Determines whether cell values in the body can be selected.
*
* @param canSelectValues canSelectValues Default value is true
*/
public void setCanSelectValues(Boolean canSelectValues) {
setAttribute("canSelectValues", canSelectValues, true);
}
/**
* Determines whether cell values in the body can be selected.
*
*
* @return Boolean
*/
public Boolean getCanSelectValues() {
return getAttributeAsBoolean("canSelectValues");
}
/**
* If true, sort controls will be shown on facet values. <P> When clicked, sort controls call {@link
* com.smartgwt.client.widgets.cube.CubeGrid#addSortByFacetValuesHandler CubeGrid.sortByFacetValues}.
*
* @param canSortData canSortData Default value is null
*/
public void setCanSortData(Boolean canSortData) {
setAttribute("canSortData", canSortData, true);
}
/**
* If true, sort controls will be shown on facet values. <P> When clicked, sort controls call {@link
* com.smartgwt.client.widgets.cube.CubeGrid#addSortByFacetValuesHandler CubeGrid.sortByFacetValues}.
*
*
* @return Boolean
*/
public Boolean getCanSortData() {
return getAttributeAsBoolean("canSortData");
}
/**
* If true, sort controls will be shown on FacetHeaders. <P> When clicked, sort controls call {@link
* com.smartgwt.client.widgets.cube.CubeGrid#addSortByFacetIdHandler CubeGrid.sortByFacetId}.
*
* @param canSortFacets canSortFacets Default value is null
*/
public void setCanSortFacets(Boolean canSortFacets) {
setAttribute("canSortFacets", canSortFacets, true);
}
/**
* If true, sort controls will be shown on FacetHeaders. <P> When clicked, sort controls call {@link
* com.smartgwt.client.widgets.cube.CubeGrid#addSortByFacetIdHandler CubeGrid.sortByFacetId}.
*
*
* @return Boolean
*/
public Boolean getCanSortFacets() {
return getAttributeAsBoolean("canSortFacets");
}
/**
* Default align for cell values (in body).
*
* @param cellAlign cellAlign Default value is "center"
*/
public void setCellAlign(Alignment cellAlign) {
setAttribute("cellAlign", cellAlign == null ? null : cellAlign.getValue(), true);
}
/**
* Default align for cell values (in body).
*
*
* @return Alignment
*/
public Alignment getCellAlign() {
return EnumUtil.getEnum(Alignment.values(), getAttribute("cellAlign"));
}
/**
* Name of the property in a cell record that holds it's unique ID. Note cell record IDs are optional.
*
* @param cellIdProperty cellIdProperty Default value is "ID"
* @throws IllegalStateException this property cannot be changed after the component has been created
*/
public void setCellIdProperty(String cellIdProperty) throws IllegalStateException {
setAttribute("cellIdProperty", cellIdProperty, false);
}
/**
* Name of the property in a cell record that holds it's unique ID. Note cell record IDs are optional.
*
*
* @return String
*/
public String getCellIdProperty() {
return getAttributeAsString("cellIdProperty");
}
/**
* If {@link com.smartgwt.client.widgets.cube.CubeGrid#makeChart CubeGrid.makeChart} is called with a chart specification
* that will show more than <code>chartConfirmThreshold</code> data elements, the user will be presented with a {@link
* com.smartgwt.client.util.isc#confirm confirmation dialog}. <P> Set to 0 to disable this confirmation.
*
* @param chartConfirmThreshold chartConfirmThreshold Default value is 2000
* @throws IllegalStateException this property cannot be changed after the component has been created
*/
public void setChartConfirmThreshold(int chartConfirmThreshold) throws IllegalStateException {
setAttribute("chartConfirmThreshold", chartConfirmThreshold, false);
}
/**
* If {@link com.smartgwt.client.widgets.cube.CubeGrid#makeChart CubeGrid.makeChart} is called with a chart specification
* that will show more than <code>chartConfirmThreshold</code> data elements, the user will be presented with a {@link
* com.smartgwt.client.util.isc#confirm confirmation dialog}. <P> Set to 0 to disable this confirmation.
*
*
* @return int
*/
public int getChartConfirmThreshold() {
return getAttributeAsInt("chartConfirmThreshold");
}
/**
* Name of the Smart GWT Class to be used when creating charts. Must support the Chart interface.
*
* @param chartConstructor chartConstructor Default value is "FacetChart"
* @throws IllegalStateException this property cannot be changed after the component has been created
*/
public void setChartConstructor(String chartConstructor) throws IllegalStateException {
setAttribute("chartConstructor", chartConstructor, false);
}
/**
* Name of the Smart GWT Class to be used when creating charts. Must support the Chart interface.
*
*
* @return String
*/
public String getChartConstructor() {
return getAttributeAsString("chartConstructor");
}
/**
* Default type of chart to plot.
*
* @param chartType chartType Default value is "Column"
*/
public void setChartType(ChartType chartType) {
setAttribute("chartType", chartType == null ? null : chartType.getValue(), true);
}
/**
* Default type of chart to plot.
*
*
* @return ChartType
*/
public ChartType getChartType() {
return EnumUtil.getEnum(ChartType.values(), getAttribute("chartType"));
}
/**
* {@link com.smartgwt.client.widgets.Button#getBaseStyle baseStyle} for the buttons in this grid's column headers. <P>
* Exception: The innermost column header will always be styled using {@link
* com.smartgwt.client.widgets.cube.CubeGrid#getInnerHeaderBaseStyle innerHeaderBaseStyle}.
*
* @param colHeaderBaseStyle colHeaderBaseStyle Default value is colHeader
* @throws IllegalStateException this property cannot be changed after the component has been created
* @see com.smartgwt.client.docs.Appearance Appearance overview and related methods
*/
public void setColHeaderBaseStyle(String colHeaderBaseStyle) throws IllegalStateException {
setAttribute("colHeaderBaseStyle", colHeaderBaseStyle, false);
}
/**
* {@link com.smartgwt.client.widgets.Button#getBaseStyle baseStyle} for the buttons in this grid's column headers. <P>
* Exception: The innermost column header will always be styled using {@link
* com.smartgwt.client.widgets.cube.CubeGrid#getInnerHeaderBaseStyle innerHeaderBaseStyle}.
*
*
* @return String
* @see com.smartgwt.client.docs.Appearance Appearance overview and related methods
*/
public String getColHeaderBaseStyle() {
return getAttributeAsString("colHeaderBaseStyle");
}
/**
* The list of {@link com.smartgwt.client.widgets.cube.Facet#getId ids} for facets that will appear on top of the body.
*
* @param columnFacets columnFacets Default value is null
* @throws IllegalStateException this property cannot be changed after the component has been created
*/
public void setColumnFacets(String... columnFacets) throws IllegalStateException {
setAttribute("columnFacets", columnFacets, false);
}
/**
* The list of {@link com.smartgwt.client.widgets.cube.Facet#getId ids} for facets that will appear on top of the body.
*
*
* @return String
*/
public String[] getColumnFacets() {
return getAttributeAsStringArray("columnFacets");
}
/**
* Default width of inner column headers.
*
* @param defaultFacetWidth defaultFacetWidth Default value is 100
*/
public void setDefaultFacetWidth(int defaultFacetWidth) {
setAttribute("defaultFacetWidth", defaultFacetWidth, true);
}
/**
* Default width of inner column headers.
*
*
* @return int
*/
public int getDefaultFacetWidth() {
return getAttributeAsInt("defaultFacetWidth");
}
/**
* CubeGrids only support editing by cell.
*
* <b>Note :</b> This method should be called only after the widget has been rendered.
*
* @return Boolean
* @throws IllegalStateException if widget has not yet been rendered.
*/
public Boolean getEditByCell() throws IllegalStateException {
errorIfNotCreated("editByCell");
return getAttributeAsBoolean("editByCell");
}
/**
* Allows the developer to override the horizontal text alignment of hover tips shown for facetLabels. If unspecified the
* hover canvas content alignment will be set by <code>this.hoverAlign</code> if specified.
* <p><b>Note : </b> This is an advanced setting</p>
*
* @param facetLabelHoverAlign facetLabelHoverAlign Default value is null
* @see com.smartgwt.client.widgets.Canvas#setHoverAlign
*/
public void setFacetLabelHoverAlign(Alignment facetLabelHoverAlign) {
setAttribute("facetLabelHoverAlign", facetLabelHoverAlign == null ? null : facetLabelHoverAlign.getValue(), true);
}
/**
* Allows the developer to override the horizontal text alignment of hover tips shown for facetLabels. If unspecified the
* hover canvas content alignment will be set by <code>this.hoverAlign</code> if specified.
*
*
* @return Alignment
* @see com.smartgwt.client.widgets.Canvas#getHoverAlign
*/
public Alignment getFacetLabelHoverAlign() {
return EnumUtil.getEnum(Alignment.values(), getAttribute("facetLabelHoverAlign"));
}
/**
* If specified and <code>this.showHover</code> is true, this is the default height to apply to hover tips shown for
* facetLabels. If unset, the hover canvas will be sized to <code>this.hoverHeight</code> if specified instead.
* <p><b>Note : </b> This is an advanced setting</p>
*
* @param facetLabelHoverHeight facetLabelHoverHeight Default value is null
* @see com.smartgwt.client.widgets.Canvas#setHoverHeight
*/
public void setFacetLabelHoverHeight(Integer facetLabelHoverHeight) {
setAttribute("facetLabelHoverHeight", facetLabelHoverHeight, true);
}
/**
* If specified and <code>this.showHover</code> is true, this is the default height to apply to hover tips shown for
* facetLabels. If unset, the hover canvas will be sized to <code>this.hoverHeight</code> if specified instead.
*
*
* @return Integer
* @see com.smartgwt.client.widgets.Canvas#getHoverHeight
*/
public Integer getFacetLabelHoverHeight() {
return getAttributeAsInt("facetLabelHoverHeight");
}
/**
* Allows the developer to override the css class applied to hover tips shown for facet labels. If unspecified, and
* <code>this.hoverStyle</code> is not null, that css class will be applied to facet label hovers instead.
* <p><b>Note : </b> This is an advanced setting</p>
*
* @param facetLabelHoverStyle facetLabelHoverStyle Default value is null
* @see com.smartgwt.client.widgets.Canvas#setHoverStyle
*/
public void setFacetLabelHoverStyle(String facetLabelHoverStyle) {
setAttribute("facetLabelHoverStyle", facetLabelHoverStyle, true);
}
/**
* Allows the developer to override the css class applied to hover tips shown for facet labels. If unspecified, and
* <code>this.hoverStyle</code> is not null, that css class will be applied to facet label hovers instead.
*
*
* @return String
* @see com.smartgwt.client.widgets.Canvas#getHoverStyle
*/
public String getFacetLabelHoverStyle() {
return getAttributeAsString("facetLabelHoverStyle");
}
/**
* Allows the developer to override the vertical text alignment of hover tips shown for facetLabels. If unspecified the
* hover canvas content alignment will be set by <code>this.hoverVAlign</code> if specified.
* <p><b>Note : </b> This is an advanced setting</p>
*
* @param facetLabelHoverVAlign facetLabelHoverVAlign Default value is null
* @see com.smartgwt.client.widgets.Canvas#setHoverVAlign
*/
public void setFacetLabelHoverVAlign(VerticalAlignment facetLabelHoverVAlign) {
setAttribute("facetLabelHoverVAlign", facetLabelHoverVAlign == null ? null : facetLabelHoverVAlign.getValue(), true);
}
/**
* Allows the developer to override the vertical text alignment of hover tips shown for facetLabels. If unspecified the
* hover canvas content alignment will be set by <code>this.hoverVAlign</code> if specified.
*
*
* @return VerticalAlignment
* @see com.smartgwt.client.widgets.Canvas#getHoverVAlign
*/
public VerticalAlignment getFacetLabelHoverVAlign() {
return EnumUtil.getEnum(VerticalAlignment.values(), getAttribute("facetLabelHoverVAlign"));
}
/**
* If specified and <code>this.showHover</code> is true, this is the default width to apply to hover tips shown for
* facetLabels. If unset, the hover canvas will be sized to <code>this.hoverWidth</code> if specified instead.
* <p><b>Note : </b> This is an advanced setting</p>
*
* @param facetLabelHoverWidth facetLabelHoverWidth Default value is null
* @see com.smartgwt.client.widgets.Canvas#setHoverWidth
*/
public void setFacetLabelHoverWidth(Integer facetLabelHoverWidth) {
setAttribute("facetLabelHoverWidth", facetLabelHoverWidth, true);
}
/**
* If specified and <code>this.showHover</code> is true, this is the default width to apply to hover tips shown for
* facetLabels. If unset, the hover canvas will be sized to <code>this.hoverWidth</code> if specified instead.
*
*
* @return Integer
* @see com.smartgwt.client.widgets.Canvas#getHoverWidth
*/
public Integer getFacetLabelHoverWidth() {
return getAttributeAsInt("facetLabelHoverWidth");
}
/**
* Facet definitions for this CubeGrid. Facets, also called "dimensions", are orthogonal aspects of the data model. <P>
* For example, you can look at profit by the facets "plant and product" or by "product and plant" and it's the same
* number, because the facets - plant and product - are the same. What would change the profit numbers would be to remove a
* facet, called "summarizing", or add a new facet, called "drilling down". For example, showing profit by plant and
* product, you could "drill down" by adding the region facet, which would divide profit among each region. Or you could
* remove the "plant" facet, showing total profit for each "product", summed across all plants.
*
* @param facets facets Default value is null
* @throws IllegalStateException this property cannot be changed after the component has been created
* @see com.smartgwt.client.widgets.cube.CubeGrid#getFacet
* @see com.smartgwt.client.widgets.cube.Facet
* @see com.smartgwt.client.widgets.cube.CubeGrid#getFacetValue
* @see com.smartgwt.client.widgets.cube.FacetValue
*/
public void setFacets(Facet... facets) throws IllegalStateException {
setAttribute("facets", facets, false);
}
/**
* Default alignment for facet labels.
*
* <br><br>If this method is called after the component has been drawn/initialized:
* Set the align of a facet title (appears in facet label).
*
* @param facetTitleAlign facet to update. Default value is "center"
*/
public void setFacetTitleAlign(Alignment facetTitleAlign) {
setAttribute("facetTitleAlign", facetTitleAlign == null ? null : facetTitleAlign.getValue(), true);
}
/**
* Default alignment for facet labels.
*
*
* @return Alignment
*/
public Alignment getFacetTitleAlign() {
return EnumUtil.getEnum(Alignment.values(), getAttribute("facetTitleAlign"));
}
/**
* Default alignment for facet values (in headers).
*
* @param facetValueAlign facetValueAlign Default value is "center"
*/
public void setFacetValueAlign(Alignment facetValueAlign) {
setAttribute("facetValueAlign", facetValueAlign == null ? null : facetValueAlign.getValue(), true);
}
/**
* Default alignment for facet values (in headers).
*
*
* @return Alignment
*/
public Alignment getFacetValueAlign() {
return EnumUtil.getEnum(Alignment.values(), getAttribute("facetValueAlign"));
}
/**
* Allows the developer to override the horizontal text alignment of hover tips shown for facet values. If unspecified the
* hover canvas content alignment will be set by <code>this.hoverAlign</code> if specified.
* <p><b>Note : </b> This is an advanced setting</p>
*
* @param facetValueHoverAlign facetValueHoverAlign Default value is null
* @see com.smartgwt.client.widgets.Canvas#setHoverAlign
*/
public void setFacetValueHoverAlign(Alignment facetValueHoverAlign) {
setAttribute("facetValueHoverAlign", facetValueHoverAlign == null ? null : facetValueHoverAlign.getValue(), true);
}
/**
* Allows the developer to override the horizontal text alignment of hover tips shown for facet values. If unspecified the
* hover canvas content alignment will be set by <code>this.hoverAlign</code> if specified.
*
*
* @return Alignment
* @see com.smartgwt.client.widgets.Canvas#getHoverAlign
*/
public Alignment getFacetValueHoverAlign() {
return EnumUtil.getEnum(Alignment.values(), getAttribute("facetValueHoverAlign"));
}
/**
* If specified and <code>this.showHover</code> is true, this is the default height to apply to hover tips shown for
* facetValues. If unset, the hover canvas will be sized to <code>this.hoverHeight</code> if specified instead.
* <p><b>Note : </b> This is an advanced setting</p>
*
* @param facetValueHoverHeight facetValueHoverHeight Default value is null
* @see com.smartgwt.client.widgets.Canvas#setHoverHeight
*/
public void setFacetValueHoverHeight(Integer facetValueHoverHeight) {
setAttribute("facetValueHoverHeight", facetValueHoverHeight, true);
}
/**
* If specified and <code>this.showHover</code> is true, this is the default height to apply to hover tips shown for
* facetValues. If unset, the hover canvas will be sized to <code>this.hoverHeight</code> if specified instead.
*
*
* @return Integer
* @see com.smartgwt.client.widgets.Canvas#getHoverHeight
*/
public Integer getFacetValueHoverHeight() {
return getAttributeAsInt("facetValueHoverHeight");
}
/**
* Allows the developer to override the css class applied to hover tips shown for facet values. If unspecified, and
* <code>this.hoverStyle</code> is not null, that css class will be applied to facet value hovers instead.
* <p><b>Note : </b> This is an advanced setting</p>
*
* @param facetValueHoverStyle facetValueHoverStyle Default value is null
* @see com.smartgwt.client.widgets.Canvas#setHoverStyle
*/
public void setFacetValueHoverStyle(String facetValueHoverStyle) {
setAttribute("facetValueHoverStyle", facetValueHoverStyle, true);
}
/**
* Allows the developer to override the css class applied to hover tips shown for facet values. If unspecified, and
* <code>this.hoverStyle</code> is not null, that css class will be applied to facet value hovers instead.
*
*
* @return String
* @see com.smartgwt.client.widgets.Canvas#getHoverStyle
*/
public String getFacetValueHoverStyle() {
return getAttributeAsString("facetValueHoverStyle");
}
/**
* Allows the developer to override the vertical text alignment of hover tips shown for facet values. If unspecified the
* hover canvas content alignment will be set by <code>this.hoverVAlign</code> if specified.
* <p><b>Note : </b> This is an advanced setting</p>
*
* @param facetValueHoverVAlign facetValueHoverVAlign Default value is null
* @see com.smartgwt.client.widgets.Canvas#setHoverVAlign
*/
public void setFacetValueHoverVAlign(VerticalAlignment facetValueHoverVAlign) {
setAttribute("facetValueHoverVAlign", facetValueHoverVAlign == null ? null : facetValueHoverVAlign.getValue(), true);
}
/**
* Allows the developer to override the vertical text alignment of hover tips shown for facet values. If unspecified the
* hover canvas content alignment will be set by <code>this.hoverVAlign</code> if specified.
*
*
* @return VerticalAlignment
* @see com.smartgwt.client.widgets.Canvas#getHoverVAlign
*/
public VerticalAlignment getFacetValueHoverVAlign() {
return EnumUtil.getEnum(VerticalAlignment.values(), getAttribute("facetValueHoverVAlign"));
}
/**
* If specified and <code>this.showHover</code> is true, this is the default width to apply to hover tips shown for
* facetValues. If unset, the hover canvas will be sized to <code>this.hoverWidth</code> if specified instead.
* <p><b>Note : </b> This is an advanced setting</p>
*
* @param facetValueHoverWidth facetValueHoverWidth Default value is null
* @see com.smartgwt.client.widgets.Canvas#setHoverWidth
*/
public void setFacetValueHoverWidth(Integer facetValueHoverWidth) {
setAttribute("facetValueHoverWidth", facetValueHoverWidth, true);
}
/**
* If specified and <code>this.showHover</code> is true, this is the default width to apply to hover tips shown for
* facetValues. If unset, the hover canvas will be sized to <code>this.hoverWidth</code> if specified instead.
*
*
* @return Integer
* @see com.smartgwt.client.widgets.Canvas#getHoverWidth
*/
public Integer getFacetValueHoverWidth() {
return getAttributeAsInt("facetValueHoverWidth");
}
/**
* A {@link com.smartgwt.client.widgets.cube.FacetValueMap} describing the set of facet values that should be regarded as
* "fixed" in this cubeGrid. These are used as fixed criteria for load on demand, and also allow using a dataset with more
* facets in it than are currently shown in the grid.
*
* @param fixedFacetValues fixedFacetValues Default value is null
* @throws IllegalStateException this property cannot be changed after the component has been created
* @see com.smartgwt.client.widgets.cube.CubeGrid#addFacet
* @see com.smartgwt.client.widgets.cube.CubeGrid#removeFacet
*/
public void setFixedFacetValues(FacetValueMap fixedFacetValues) throws IllegalStateException {
setAttribute("fixedFacetValues", fixedFacetValues.getJsObj(), false);
}
/**
* A {@link com.smartgwt.client.widgets.cube.FacetValueMap} describing the set of facet values that should be regarded as
* "fixed" in this cubeGrid. These are used as fixed criteria for load on demand, and also allow using a dataset with more
* facets in it than are currently shown in the grid.
*
*
* @return FacetValueMap
* @see com.smartgwt.client.widgets.cube.CubeGrid#addFacet
* @see com.smartgwt.client.widgets.cube.CubeGrid#removeFacet
*/
public FacetValueMap getFixedFacetValues() {
return new FacetValueMap(getAttributeAsJavaScriptObject("fixedFacetValues"));
}
/**
* With {@link com.smartgwt.client.widgets.cube.CubeGrid#getHideEmptyFacetValues hideEmptyFacetValues}, controls on which
* axis hiding of empty values is applied, "row" (only empty rows are hidden), "column" (only empty columns are hidden) or
* both (the default).
*
* @param hideEmptyAxis hideEmptyAxis Default value is null
* @throws IllegalStateException this property cannot be changed after the component has been created
*/
public void setHideEmptyAxis(Axis hideEmptyAxis) throws IllegalStateException {
setAttribute("hideEmptyAxis", hideEmptyAxis == null ? null : hideEmptyAxis.getValue(), false);
}
/**
* With {@link com.smartgwt.client.widgets.cube.CubeGrid#getHideEmptyFacetValues hideEmptyFacetValues}, controls on which
* axis hiding of empty values is applied, "row" (only empty rows are hidden), "column" (only empty columns are hidden) or
* both (the default).
*
*
* @return Axis
*/
public Axis getHideEmptyAxis() {
return EnumUtil.getEnum(Axis.values(), getAttribute("hideEmptyAxis"));
}
/**
* This causes the headers for any combination of facetValues for which there are no cellRecords to be suppressed. (Note:
* Valid only for CubeGrids that specify the complete dataset upfront - don't use load on demand)
*
* @param hideEmptyFacetValues hideEmptyFacetValues Default value is null
* @throws IllegalStateException this property cannot be changed after the component has been created
*/
public void setHideEmptyFacetValues(Boolean hideEmptyFacetValues) throws IllegalStateException {
setAttribute("hideEmptyFacetValues", hideEmptyFacetValues, false);
}
/**
* This causes the headers for any combination of facetValues for which there are no cellRecords to be suppressed. (Note:
* Valid only for CubeGrids that specify the complete dataset upfront - don't use load on demand)
*
*
* @return Boolean
*/
public Boolean getHideEmptyFacetValues() {
return getAttributeAsBoolean("hideEmptyFacetValues");
}
/**
* Hilites to be applied to the data for this component. See {@link com.smartgwt.client.docs.Hiliting}.
*
* @param hilites hilites Default value is null
* @see com.smartgwt.client.docs.Hiliting Hiliting overview and related methods
*/
public void setHilites(Hilite... hilites) {
setAttribute("hilites", hilites, true);
}
/**
* Hilites to be applied to the data for this component. See {@link com.smartgwt.client.docs.Hiliting}.
*
*
* @return Hilite
* @see com.smartgwt.client.docs.Hiliting Hiliting overview and related methods
*/
public Hilite[] getHilites() {
return Hilite.convertToHiliteArray(getAttributeAsJavaScriptObject("hilites"));
}
/**
* {@link com.smartgwt.client.widgets.Button#getBaseStyle baseStyle} for the buttons in the innermost column header for
* this cubeGrid.
*
* @param innerHeaderBaseStyle innerHeaderBaseStyle Default value is innerHeader
* @throws IllegalStateException this property cannot be changed after the component has been created
* @see com.smartgwt.client.docs.Appearance Appearance overview and related methods
*/
public void setInnerHeaderBaseStyle(String innerHeaderBaseStyle) throws IllegalStateException {
setAttribute("innerHeaderBaseStyle", innerHeaderBaseStyle, false);
}
/**
* {@link com.smartgwt.client.widgets.Button#getBaseStyle baseStyle} for the buttons in the innermost column header for
* this cubeGrid.
*
*
* @return String
* @see com.smartgwt.client.docs.Appearance Appearance overview and related methods
*/
public String getInnerHeaderBaseStyle() {
return getAttributeAsString("innerHeaderBaseStyle");
}
/**
* In a CubeGrid that displays values of different types (eg "Revenue" and "Income"), the different types of values on
* display are enumerated as the facet values of the "metric facet". <P> The metric facet is treated identically to any
* other facet by the CubeGrid: it can be represented as row or column headers, can be innermost or have other facets under
* it, can be moved around, etc. However when a metric facet is used, {@link
* com.smartgwt.client.widgets.cube.CubeGrid#getMetricFacetId metricFacetId} must be set to allow the CubeGrid to generate
* meaningful descriptions of values shown in cells for use in hovers and other situations; see {@link
* com.smartgwt.client.widgets.cube.CubeGrid#getValueTitle valueTitle} for a full explanation.
*
* @param metricFacetId metricFacetId Default value is "metric"
* @throws IllegalStateException this property cannot be changed after the component has been created
*/
public void setMetricFacetId(String metricFacetId) throws IllegalStateException {
setAttribute("metricFacetId", metricFacetId, false);
}
/**
* In a CubeGrid that displays values of different types (eg "Revenue" and "Income"), the different types of values on
* display are enumerated as the facet values of the "metric facet". <P> The metric facet is treated identically to any
* other facet by the CubeGrid: it can be represented as row or column headers, can be innermost or have other facets under
* it, can be moved around, etc. However when a metric facet is used, {@link
* com.smartgwt.client.widgets.cube.CubeGrid#getMetricFacetId metricFacetId} must be set to allow the CubeGrid to generate
* meaningful descriptions of values shown in cells for use in hovers and other situations; see {@link
* com.smartgwt.client.widgets.cube.CubeGrid#getValueTitle valueTitle} for a full explanation.
*
*
* @return String
*/
public String getMetricFacetId() {
return getAttributeAsString("metricFacetId");
}
/**
* Whether to pad titles so they aren't flush with header borders.
*
* @param padTitles padTitles Default value is true
*/
public void setPadTitles(Boolean padTitles) {
setAttribute("padTitles", padTitles, true);
}
/**
* Whether to pad titles so they aren't flush with header borders.
*
*
* @return Boolean
*/
public Boolean getPadTitles() {
return getAttributeAsBoolean("padTitles");
}
/**
* facetValueId of the default rollupValue for each facet. Can be overridden per facet via facet.rollupValue.
*
* @param rollupValue rollupValue Default value is "sum"
* @throws IllegalStateException this property cannot be changed after the component has been created
*/
public void setRollupValue(String rollupValue) throws IllegalStateException {
setAttribute("rollupValue", rollupValue, false);
}
/**
* facetValueId of the default rollupValue for each facet. Can be overridden per facet via facet.rollupValue.
*
*
* @return Get the facetValue definition for the facetValue to show when this facet is "rolled up" under another facet, during a
* breakout.<br><br> A facet is not required to have a rollup value, and if it does not have one, then rollups will simply
* be blank rows. The facetValueId of the rollup value can be declared as cubeGrid.rollupValue or facet.rollupValue.
*/
public String getRollupValue() {
return getAttributeAsString("rollupValue");
}
/**
* The list of {@link com.smartgwt.client.widgets.cube.Facet#getId ids} for facets that will appear to the left of the
* body.
*
* @param rowFacets rowFacets Default value is null
* @throws IllegalStateException this property cannot be changed after the component has been created
*/
public void setRowFacets(String... rowFacets) throws IllegalStateException {
setAttribute("rowFacets", rowFacets, false);
}
/**
* The list of {@link com.smartgwt.client.widgets.cube.Facet#getId ids} for facets that will appear to the left of the
* body.
*
*
* @return String
*/
public String[] getRowFacets() {
return getAttributeAsStringArray("rowFacets");
}
/**
* {@link com.smartgwt.client.widgets.Button#getBaseStyle baseStyle} for the buttons in this grid's row headers.
*
* @param rowHeaderBaseStyle rowHeaderBaseStyle Default value is rowHeader
* @throws IllegalStateException this property cannot be changed after the component has been created
* @see com.smartgwt.client.docs.Appearance Appearance overview and related methods
*/
public void setRowHeaderBaseStyle(String rowHeaderBaseStyle) throws IllegalStateException {
setAttribute("rowHeaderBaseStyle", rowHeaderBaseStyle, false);
}
/**
* {@link com.smartgwt.client.widgets.Button#getBaseStyle baseStyle} for the buttons in this grid's row headers.
*
*
* @return String
* @see com.smartgwt.client.docs.Appearance Appearance overview and related methods
*/
public String getRowHeaderBaseStyle() {
return getAttributeAsString("rowHeaderBaseStyle");
}
/**
* If enabled row headers for this cubeGrid will be rendered using a {@link com.smartgwt.client.grid.GridRenderer}
* component. This improves performance for very large cubeGrids.
* <p><b>Note : </b> This is an advanced setting</p>
*
* @param rowHeaderGridMode rowHeaderGridMode Default value is false
* @throws IllegalStateException this property cannot be changed after the component has been created
*/
public void setRowHeaderGridMode(Boolean rowHeaderGridMode) throws IllegalStateException {
setAttribute("rowHeaderGridMode", rowHeaderGridMode, false);
}
/**
* If enabled row headers for this cubeGrid will be rendered using a {@link com.smartgwt.client.grid.GridRenderer}
* component. This improves performance for very large cubeGrids.
*
*
* @return Boolean
*/
public Boolean getRowHeaderGridMode() {
return getAttributeAsBoolean("rowHeaderGridMode");
}
/**
* CubeGrids only support editing by cell.
*
* <b>Note :</b> This method should be called only after the widget has been rendered.
*
* @return Boolean
* @throws IllegalStateException if widget has not yet been rendered.
*/
public Boolean getSaveByCell() throws IllegalStateException {
errorIfNotCreated("saveByCell");
return getAttributeAsBoolean("saveByCell");
}
/**
* If true, clicking on the existing selection causes it to be entirely deselected.
*
* @param simpleDeselect simpleDeselect Default value is false
*/
public void setSimpleDeselect(Boolean simpleDeselect) {
setAttribute("simpleDeselect", simpleDeselect, true);
}
/**
* If true, clicking on the existing selection causes it to be entirely deselected.
*
*
* @return Boolean
*/
public Boolean getSimpleDeselect() {
return getAttributeAsBoolean("simpleDeselect");
}
/**
* Default directory for skin images (those defined by the class), relative to the Page-wide {@link
* com.smartgwt.client.util.Page#getSkinDir skinDir}.
*
* @param skinImgDir skinImgDir Default value is "images/CubeGrid/"
* @throws IllegalStateException this property cannot be changed after the component has been created
* @see com.smartgwt.client.docs.Images Images overview and related methods
*/
public void setSkinImgDir(String skinImgDir) throws IllegalStateException {
setAttribute("skinImgDir", skinImgDir, false);
}
/**
* Default directory for skin images (those defined by the class), relative to the Page-wide {@link
* com.smartgwt.client.util.Page#getSkinDir skinDir}.
*
*
* @return String
* @see com.smartgwt.client.docs.Images Images overview and related methods
*/
public String getSkinImgDir() {
return getAttributeAsString("skinImgDir");
}
/**
* Direction of sorting if sortedFacet or sortedFacetValues is specified.
*
* @param sortDirection sortDirection Default value is Array.ASCENDING
*/
public void setSortDirection(SortDirection sortDirection) {
setAttribute("sortDirection", sortDirection == null ? null : sortDirection.getValue(), true);
}
/**
* Direction of sorting if sortedFacet or sortedFacetValues is specified.
*
*
* @return SortDirection
*/
public SortDirection getSortDirection() {
return EnumUtil.getEnum(SortDirection.values(), getAttribute("sortDirection"));
}
/**
* {@link com.smartgwt.client.widgets.cube.FacetValueMap} of facet values representing a set of facetValues by which the
* cubeGrid data is sorted.
*
* @param sortedFacetValues sortedFacetValues Default value is null
*/
public void setSortedFacetValues(FacetValueMap sortedFacetValues) {
setAttribute("sortedFacetValues", sortedFacetValues.getJsObj(), true);
}
/**
* {@link com.smartgwt.client.widgets.cube.FacetValueMap} of facet values representing a set of facetValues by which the
* cubeGrid data is sorted.
*
*
* @return FacetValueMap
*/
public FacetValueMap getSortedFacetValues() {
return new FacetValueMap(getAttributeAsJavaScriptObject("sortedFacetValues"));
}
/**
* CSS class for the CubeGrid as a whole
*
* @param styleName styleName Default value is "normal"
* @see com.smartgwt.client.docs.Appearance Appearance overview and related methods
*/
public void setStyleName(String styleName) {
setAttribute("styleName", styleName, true);
}
/**
* CSS class for the CubeGrid as a whole
*
*
* @return String
* @see com.smartgwt.client.docs.Appearance Appearance overview and related methods
*/
public String getStyleName() {
return getAttributeAsString("styleName");
}
/**
* Name of the property in a cell record that holds the cell value.
*
* @param valueProperty valueProperty Default value is "_value"
* @throws IllegalStateException this property cannot be changed after the component has been created
*/
public void setValueProperty(String valueProperty) throws IllegalStateException {
setAttribute("valueProperty", valueProperty, false);
}
/**
* Name of the property in a cell record that holds the cell value.
*
*
* @return String
*/
public String getValueProperty() {
return getAttributeAsString("valueProperty");
}
/**
* A label for the data values shown in cells, such as "Sales in Thousands", typically used
* when the CubeGrid must generate a description for a cell value or set of cell values.
* <P>
* For example, in a CubeGrid showing "Revenue" by region and product, a cell with a
* CellRecord like:
* <pre>
* {product:"chairs", region:"northwest", _value:"$5k"}
* </pre>
* Should be described as "Revenue for Chairs for Northwest Region", not "Chairs for
* Revenue for Northwest Region".
* <P>
* For CubeGrids that show multiple types of values at once (eg both "Revenue" and
* "Income") see {@link com.smartgwt.client.widgets.cube.CubeGrid#getMetricFacetId metricFacetId}.
*
* @param valueTitle valueTitle Default value is null
* @throws IllegalStateException this property cannot be changed after the component has been created
*/
public void setValueTitle(String valueTitle) throws IllegalStateException {
setAttribute("valueTitle", valueTitle, false);
}
/**
* A label for the data values shown in cells, such as "Sales in Thousands", typically used
* when the CubeGrid must generate a description for a cell value or set of cell values.
* <P>
* For example, in a CubeGrid showing "Revenue" by region and product, a cell with a
* CellRecord like:
* <pre>
* {product:"chairs", region:"northwest", _value:"$5k"}
* </pre>
* Should be described as "Revenue for Chairs for Northwest Region", not "Chairs for
* Revenue for Northwest Region".
* <P>
* For CubeGrids that show multiple types of values at once (eg both "Revenue" and
* "Income") see {@link com.smartgwt.client.widgets.cube.CubeGrid#getMetricFacetId metricFacetId}.
*
*
* @return String
*/
public String getValueTitle() {
return getAttributeAsString("valueTitle");
}
/**
* Whether to allow text wrapping on facet titles.
*
* @param wrapFacetTitles wrapFacetTitles Default value is false
*/
public void setWrapFacetTitles(Boolean wrapFacetTitles) {
setAttribute("wrapFacetTitles", wrapFacetTitles, true);
}
/**
* Whether to allow text wrapping on facet titles.
*
*
* @return Boolean
*/
public Boolean getWrapFacetTitles() {
return getAttributeAsBoolean("wrapFacetTitles");
}
/**
* Whether to allow text wrapping on facet value titles.
*
* @param wrapFacetValueTitles wrapFacetValueTitles Default value is false
*/
public void setWrapFacetValueTitles(Boolean wrapFacetValueTitles) {
setAttribute("wrapFacetValueTitles", wrapFacetValueTitles, true);
}
/**
* Whether to allow text wrapping on facet value titles.
*
*
* @return Boolean
*/
public Boolean getWrapFacetValueTitles() {
return getAttributeAsBoolean("wrapFacetValueTitles");
}
// ********************* Methods ***********************
/**
* Add a column facet to the view at index "index". Handles the facet already being in the view (does a pivot).<br><br>
* The facet being added should currently have a fixed facet value (unless it's already part of the view), which will be
* removed from cubeGrid.fixedFacetValues. <br><i>methodType</i> action
* @param facetId facetId to add. Definition must have been provided at init time.
*/
public native void addColumnFacet(String facetId) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.addColumnFacet(facetId);
}-*/;
/**
* Add a column facet to the view at index "index". Handles the facet already being in the view (does a pivot).<br><br>
* The facet being added should currently have a fixed facet value (unless it's already part of the view), which will be
* removed from cubeGrid.fixedFacetValues. <br><i>methodType</i> action
* @param facetId facetId to add. Definition must have been provided at init time.
* @param index index to add the facet at. 0 = outermost (default innermost)
* @see com.smartgwt.client.widgets.cube.CubeGrid#removeFacet
* @see com.smartgwt.client.widgets.cube.CubeGrid#getFixedFacetValues
*/
public native void addColumnFacet(String facetId, int index) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.addColumnFacet(facetId, index);
}-*/;
/**
* Add a facet to the view, into the row or column facets (intoRows true or false), at index "index". Handles the facet
* already being in the view (does a pivot). <P> The facet being added should currently have a fixed facet value (unless
* it's already part of the view), which will be removed from cubeGrid.fixedFacetValues.
* @param facetId facetId to add. Definition must have been provided at init time.
*/
public native void addFacet(String facetId) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.addFacet(facetId);
}-*/;
/**
* Add a facet to the view, into the row or column facets (intoRows true or false), at index "index". Handles the facet
* already being in the view (does a pivot). <P> The facet being added should currently have a fixed facet value (unless
* it's already part of the view), which will be removed from cubeGrid.fixedFacetValues.
* @param facetId facetId to add. Definition must have been provided at init time.
* @param intoRows whether to add facet as a row facet
* @param index index to add the facet at. 0 = outermost (default innermost)
* @see com.smartgwt.client.widgets.cube.CubeGrid#removeFacet
* @see com.smartgwt.client.widgets.cube.CubeGrid#getFixedFacetValues
*/
public native void addFacet(String facetId, boolean intoRows, int index) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.addFacet(facetId, intoRows, index);
}-*/;
/**
* Add a row facet to the view at index "index". Handles the facet already being in the view (does a pivot).<br><br> The
* facet being added should currently have a fixed facet value (unless it's already part of the view), which will be
* removed from cubeGrid.fixedFacetValues. <br><i>methodType</i> action
* @param facetId facetId to add. Definition must have been provided at init time.
*/
public native void addRowFacet(String facetId) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.addRowFacet(facetId);
}-*/;
/**
* Add a row facet to the view at index "index". Handles the facet already being in the view (does a pivot).<br><br> The
* facet being added should currently have a fixed facet value (unless it's already part of the view), which will be
* removed from cubeGrid.fixedFacetValues. <br><i>methodType</i> action
* @param facetId facetId to add. Definition must have been provided at init time.
* @param index index to add the facet at. 0 = outermost (default innermost)
* @see com.smartgwt.client.widgets.cube.CubeGrid#removeFacet
* @see com.smartgwt.client.widgets.cube.CubeGrid#getFixedFacetValues
*/
public native void addRowFacet(String facetId, int index) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.addRowFacet(facetId, index);
}-*/;
/**
* Determine whether any cells are selected in this cubeGrid. <br><i>methodType</i> tester
*
* @return true if any cells are selected
* @see com.smartgwt.client.docs.Selection Selection overview and related methods
*/
public native Boolean anyCellSelected() /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var retVal =self.anyCellSelected();
if(retVal == null || retVal === undefined) {
return null;
} else {
return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal);
}
}-*/;
/**
* Determine whether the cell passed in is selected in this cubeGrid. <br><i>methodType</i> tester
* @param cell cell to test
*
* @return true if any cells are selected
* @see com.smartgwt.client.docs.Selection Selection overview and related methods
*/
public native Boolean cellIsSelected(CellRecord cell) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var retVal =self.cellIsSelected(cell.@com.smartgwt.client.core.DataClass::getJsObj()());
if(retVal == null || retVal === undefined) {
return null;
} else {
return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal);
}
}-*/;
/**
* Handler fired when facet is closed <br><i>methodType</i> handler
* @param facetId ID of facet that was closed
*/
public native void closeFacet(String facetId) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.closeFacet(facetId);
}-*/;
/**
* Deselect all cells and facetValues. <br><i>methodType</i> action
*/
public native void deselectAll() /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.deselectAll();
}-*/;
/**
* Deselect all cells. <br><i>methodType</i> action
*/
public native void deselectAllCells() /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.deselectAllCells();
}-*/;
/**
* Deselect all headers in a headerBar (specified by facetId) or all headerBars (if no facetId). <br><i>methodType</i>
* action
*/
public native void deselectAllFacetValues() /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.deselectAllFacetValues();
}-*/;
/**
* Deselect all headers in a headerBar (specified by facetId) or all headerBars (if no facetId). <br><i>methodType</i>
* action
* @param facetId ID of facet - if null, selects all headerbars' headers
* @see com.smartgwt.client.docs.Selection Selection overview and related methods
*/
public native void deselectAllFacetValues(String facetId) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.deselectAllFacetValues(facetId);
}-*/;
/**
* Deselect the header for a given facet value. <br><i>methodType</i> action
* @param facetId ID of facet
* @param facetValueId ID of facetValue to select
*/
public native void deselectFacetValue(String facetId, String facetValueId) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.deselectFacetValue(facetId, facetValueId);
}-*/;
/**
* Add a facetAdded handler.
* <p>
* Notification fired when a new facet is added.
*
* @param handler the facetAdded handler
* @return {@link HandlerRegistration} used to remove this handler
*/
public HandlerRegistration addFacetAddedHandler(com.smartgwt.client.widgets.cube.events.FacetAddedHandler handler) {
if(getHandlerCount(com.smartgwt.client.widgets.cube.events.FacetAddedEvent.getType()) == 0) setupFacetAddedEvent();
return doAddHandler(handler, com.smartgwt.client.widgets.cube.events.FacetAddedEvent.getType());
}
private native void setupFacetAddedEvent() /*-{
var obj = null;
var selfJ = this;
if(this.@com.smartgwt.client.widgets.BaseWidget::isCreated()()) {
obj = this.@com.smartgwt.client.widgets.BaseWidget::getJsObj()();
obj.addProperties({facetAdded:$entry(function(){
var param = {"facetId" : arguments[0]};
var event = @com.smartgwt.client.widgets.cube.events.FacetAddedEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param);
selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event);
})
});
} else {
obj = this.@com.smartgwt.client.widgets.BaseWidget::getConfig()();
obj.facetAdded = $entry(function(){
var param = {"facetId" : arguments[0]};
var event = @com.smartgwt.client.widgets.cube.events.FacetAddedEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param);
selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event);
});
}
}-*/;
/**
* Return whether any facet value for this facet is selected in headers. If no facetId passed, return whether any facet
* has a selection. <br><i>methodType</i> tester
* @param facetId Id for facet to test
*
* @return true if any facet value in this header is selected
* @see com.smartgwt.client.docs.Selection Selection overview and related methods
*/
public native Boolean facetHasSelection(String facetId) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var retVal =self.facetHasSelection(facetId);
if(retVal == null || retVal === undefined) {
return null;
} else {
return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal);
}
}-*/;
/**
* Add a facetMoved handler.
* <p>
* Notification fired when a facet is moved.
*
* @param handler the facetMoved handler
* @return {@link HandlerRegistration} used to remove this handler
*/
public HandlerRegistration addFacetMovedHandler(com.smartgwt.client.widgets.cube.events.FacetMovedHandler handler) {
if(getHandlerCount(com.smartgwt.client.widgets.cube.events.FacetMovedEvent.getType()) == 0) setupFacetMovedEvent();
return doAddHandler(handler, com.smartgwt.client.widgets.cube.events.FacetMovedEvent.getType());
}
private native void setupFacetMovedEvent() /*-{
var obj = null;
var selfJ = this;
if(this.@com.smartgwt.client.widgets.BaseWidget::isCreated()()) {
obj = this.@com.smartgwt.client.widgets.BaseWidget::getJsObj()();
obj.addProperties({facetMoved:$entry(function(){
var param = {"facetId" : arguments[0]};
var event = @com.smartgwt.client.widgets.cube.events.FacetMovedEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param);
selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event);
})
});
} else {
obj = this.@com.smartgwt.client.widgets.BaseWidget::getConfig()();
obj.facetMoved = $entry(function(){
var param = {"facetId" : arguments[0]};
var event = @com.smartgwt.client.widgets.cube.events.FacetMovedEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param);
selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event);
});
}
}-*/;
/**
* Add a facetRemoved handler.
* <p>
* Notification fired when a facet is removed.
*
* @param handler the facetRemoved handler
* @return {@link HandlerRegistration} used to remove this handler
*/
public HandlerRegistration addFacetRemovedHandler(com.smartgwt.client.widgets.cube.events.FacetRemovedHandler handler) {
if(getHandlerCount(com.smartgwt.client.widgets.cube.events.FacetRemovedEvent.getType()) == 0) setupFacetRemovedEvent();
return doAddHandler(handler, com.smartgwt.client.widgets.cube.events.FacetRemovedEvent.getType());
}
private native void setupFacetRemovedEvent() /*-{
var obj = null;
var selfJ = this;
if(this.@com.smartgwt.client.widgets.BaseWidget::isCreated()()) {
obj = this.@com.smartgwt.client.widgets.BaseWidget::getJsObj()();
obj.addProperties({facetRemoved:$entry(function(){
var param = {"facetId" : arguments[0]};
var event = @com.smartgwt.client.widgets.cube.events.FacetRemovedEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param);
selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event);
})
});
} else {
obj = this.@com.smartgwt.client.widgets.BaseWidget::getConfig()();
obj.facetRemoved = $entry(function(){
var param = {"facetId" : arguments[0]};
var event = @com.smartgwt.client.widgets.cube.events.FacetRemovedEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param);
selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event);
});
}
}-*/;
/**
* Add a facetValueSelectionChanged handler.
* <p>
* Handler/Notification function for facetValue selection change (no default implementation).
*
* @param handler the facetValueSelectionChanged handler
* @return {@link HandlerRegistration} used to remove this handler
*/
public HandlerRegistration addFacetValueSelectionChangedHandler(com.smartgwt.client.widgets.cube.events.FacetValueSelectionChangedHandler handler) {
if(getHandlerCount(com.smartgwt.client.widgets.cube.events.FacetValueSelectionChangedEvent.getType()) == 0) setupFacetValueSelectionChangedEvent();
return doAddHandler(handler, com.smartgwt.client.widgets.cube.events.FacetValueSelectionChangedEvent.getType());
}
private native void setupFacetValueSelectionChangedEvent() /*-{
var obj = null;
var selfJ = this;
if(this.@com.smartgwt.client.widgets.BaseWidget::isCreated()()) {
obj = this.@com.smartgwt.client.widgets.BaseWidget::getJsObj()();
obj.addProperties({facetValueSelectionChanged:$entry(function(){
var param = {"facetValues" : arguments[0], "newState" : arguments[1]};
var event = @com.smartgwt.client.widgets.cube.events.FacetValueSelectionChangedEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param);
selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event);
})
});
} else {
obj = this.@com.smartgwt.client.widgets.BaseWidget::getConfig()();
obj.facetValueSelectionChanged = $entry(function(){
var param = {"facetValues" : arguments[0], "newState" : arguments[1]};
var event = @com.smartgwt.client.widgets.cube.events.FacetValueSelectionChangedEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param);
selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event);
});
}
}-*/;
/**
* Add a fixedFacetValueChanged handler.
* <p>
* Notification fired when a fixed facet value is set for some facet.
*
* @param handler the fixedFacetValueChanged handler
* @return {@link HandlerRegistration} used to remove this handler
*/
public HandlerRegistration addFixedFacetValueChangedHandler(com.smartgwt.client.widgets.cube.events.FixedFacetValueChangedHandler handler) {
if(getHandlerCount(com.smartgwt.client.widgets.cube.events.FixedFacetValueChangedEvent.getType()) == 0) setupFixedFacetValueChangedEvent();
return doAddHandler(handler, com.smartgwt.client.widgets.cube.events.FixedFacetValueChangedEvent.getType());
}
private native void setupFixedFacetValueChangedEvent() /*-{
var obj = null;
var selfJ = this;
if(this.@com.smartgwt.client.widgets.BaseWidget::isCreated()()) {
obj = this.@com.smartgwt.client.widgets.BaseWidget::getJsObj()();
obj.addProperties({fixedFacetValueChanged:$entry(function(){
var param = {"facetId" : arguments[0], "facetValueId" : arguments[1]};
var event = @com.smartgwt.client.widgets.cube.events.FixedFacetValueChangedEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param);
selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event);
})
});
} else {
obj = this.@com.smartgwt.client.widgets.BaseWidget::getConfig()();
obj.fixedFacetValueChanged = $entry(function(){
var param = {"facetId" : arguments[0], "facetValueId" : arguments[1]};
var event = @com.smartgwt.client.widgets.cube.events.FixedFacetValueChangedEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param);
selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event);
});
}
}-*/;
/**
* Given a record in this grid, this method returns the colNum in which the record is displayed.
* @param cellRecord record to find coordinates for
*
* @return Column number for the record. Returns -1 if the record is not found.
*/
public native int getCellColumn(CellRecord cellRecord) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
return self.getCellColumn(cellRecord.@com.smartgwt.client.core.DataClass::getJsObj()());
}-*/;
/**
* Given a cell coordinate within this CubeGrid return a {@link com.smartgwt.client.widgets.cube.FacetValueMap
* FacetValueMap} indicating the facet values for the cell.
* @param rowNum row index of the cell
* @param colNum column index of the cell
*
* @return facet values for the specified cell. Returns null if the specified cell is not present in the grid.
*/
public native FacetValueMap getCellFacetValues(int rowNum, int colNum) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var ret = self.getCellFacetValues(rowNum, colNum);
if(ret == null || ret === undefined) return null;
return @com.smartgwt.client.widgets.cube.FacetValueMap::new(Lcom/google/gwt/core/client/JavaScriptObject;)(ret);
}-*/;
/**
* Return the pointer to a particular record by record and column number.<br>
* @param rowNum row index of record to return.
* @param colNum column index of record to return.
*
* @return Record object for the row.
* @see com.smartgwt.client.widgets.grid.ListGrid#getRecord
* @see com.smartgwt.client.widgets.grid.ListGrid#getEditedRecord
*/
public native ListGridRecord getCellRecord(int rowNum, int colNum) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var ret = self.getCellRecord(rowNum, colNum);
if(ret == null || ret === undefined) return null;
var retVal = @com.smartgwt.client.core.RefDataClass::getRef(Lcom/google/gwt/core/client/JavaScriptObject;)(ret);
if(retVal == null) {
retVal = @com.smartgwt.client.widgets.grid.ListGridRecord::new(Lcom/google/gwt/core/client/JavaScriptObject;)(ret);
}
return retVal;
}-*/;
/**
* Given a record in this grid, this method returns the rowNum on which the record is displayed.
* @param cellRecord record to find coordinates for
*
* @return Row number for the record. Returns -1 if the record is not found.
*/
public native int getCellRow(CellRecord cellRecord) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
return self.getCellRow(cellRecord.@com.smartgwt.client.core.DataClass::getJsObj()());
}-*/;
/**
* Return a {@link com.smartgwt.client.widgets.cube.FacetValueMap FacetValueMap} indicating the facet values for a specific
* column in the grid.
* @param colNum index of the column
*
* @return facet values for the specified column. Returns null if the specified column is not present in the grid.
*/
public native FacetValueMap getColumnFacetValues(int colNum) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var ret = self.getColumnFacetValues(colNum);
if(ret == null || ret === undefined) return null;
return @com.smartgwt.client.widgets.cube.FacetValueMap::new(Lcom/google/gwt/core/client/JavaScriptObject;)(ret);
}-*/;
/**
* Returns the current temporary locally stored edit value for a cell being edited. Note this is the {@link
* com.smartgwt.client.widgets.cube.CubeGrid#getValueProperty valueProperty} that will be saved for the cell in question.
* @param rowNum index of the row for which the editValue should be returned
* @param colNum index of the column for which value should be returned
*
* @return edit value for the cell
* @see com.smartgwt.client.docs.Editing Editing overview and related methods
*/
public native Object getEditValue(int rowNum, int colNum) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var ret = self.getEditValue(rowNum, colNum);
return $wnd.SmartGWT.convertToJavaType(ret);
}-*/;
/**
* Returns the column number of the most recent mouse event.
*
* @return column number, or -2 if beyond last drawn column
* @see com.smartgwt.client.docs.Selection Selection overview and related methods
*/
public native int getEventColumn() /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
return self.getEventColumn();
}-*/;
/**
* Returns the column number of the most recent mouse event.
* @param x optional x-coordinate to obtain column number for, in lieu of the x coordinate of the last mouse
* event
*
* @return column number, or -2 if beyond last drawn column
* @see com.smartgwt.client.docs.Selection Selection overview and related methods
*/
public native int getEventColumn(int x) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
return self.getEventColumn(x);
}-*/;
/**
* Returns the row number of the most recent mouse event.
*
* @return row number, or -2 if beyond last drawn row
* @see com.smartgwt.client.docs.Selection Selection overview and related methods
*/
public native int getEventRow() /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
return self.getEventRow();
}-*/;
/**
* Returns the row number of the most recent mouse event.
* @param y optional y-coordinate to obtain row number, in lieu of the y coordinate of the last mouse event
*
* @return row number, or -2 if beyond last drawn row
* @see com.smartgwt.client.docs.Selection Selection overview and related methods
*/
public native int getEventRow(int y) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
return self.getEventRow(y);
}-*/;
/**
* Get a facet definition by facetId. Constant time.
* @param facetId the id of the facet to retrieve
*
* @return the Facet if found, or null
* @see com.smartgwt.client.widgets.cube.Facet
*/
public native Facet getFacet(String facetId) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var ret = self.getFacet(facetId);
if(ret == null || ret === undefined) return null;
var retVal = @com.smartgwt.client.core.RefDataClass::getRef(Lcom/google/gwt/core/client/JavaScriptObject;)(ret);
if(retVal == null) {
retVal = @com.smartgwt.client.widgets.cube.Facet::new(Lcom/google/gwt/core/client/JavaScriptObject;)(ret);
}
return retVal;
}-*/;
/**
* Get a facet value definition by facetId and facetValueId. Constant time.
* @param facetId the id of the facet to retrieve
* @param facetValueId the id of the facet value to retrieve
*
* @return the FacetValue if found, or null
* @see com.smartgwt.client.widgets.cube.FacetValue
*/
public native FacetValue getFacetValue(String facetId, String facetValueId) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var ret = self.getFacetValue(facetId, facetValueId);
if(ret == null || ret === undefined) return null;
var retVal = @com.smartgwt.client.core.RefDataClass::getRef(Lcom/google/gwt/core/client/JavaScriptObject;)(ret);
if(retVal == null) {
retVal = @com.smartgwt.client.widgets.cube.FacetValue::new(Lcom/google/gwt/core/client/JavaScriptObject;)(ret);
}
return retVal;
}-*/;
/**
* Get the index of the first column in the grid that matches the specified FacetValueMap. <P> The facetValues passed in
* should contain values for at least one column facet. It may contain properties other than column facets, which will be
* ignored. If values are sparse (values not specified for every column facet), the first column matching the specified
* facet values will be returned.
* @param facetValues facet values to find
*
* @return index of first column in the grid that matches the facet values passed in, or -1 if not found
*/
public native int getFacetValuesColumn(FacetValueMap facetValues) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
return self.getFacetValuesColumn(facetValues.@com.smartgwt.client.core.DataClass::getJsObj()());
}-*/;
/**
* Get the index of the first row in the grid that matches the specified FacetValueMap. <P> The facetValues passed in
* should contain values for at least one row facet. It may contain properties other than row facets, which will be
* ignored. If values are sparse (values not specified for every row facet), the first row matching the specified facet
* values will be returned.
* @param facetValues facet values to find
*
* @return index of first row in the grid that matches the facet values passed in, or -1 if not found
*/
public native int getFacetValuesRow(FacetValueMap facetValues) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
return self.getFacetValuesRow(facetValues.@com.smartgwt.client.core.DataClass::getJsObj()());
}-*/;
/**
* Return a {@link com.smartgwt.client.widgets.cube.FacetValueMap FacetValueMap} indicating the facet values for a specific
* row in the grid.
* @param rowNum index of the row
*
* @return facet values for the specified row. Returns null if the specified row is not present in the grid.
*/
public native FacetValueMap getRowFacetValues(int rowNum) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var ret = self.getRowFacetValues(rowNum);
if(ret == null || ret === undefined) return null;
return @com.smartgwt.client.widgets.cube.FacetValueMap::new(Lcom/google/gwt/core/client/JavaScriptObject;)(ret);
}-*/;
/**
* Determines whether any cells in this cubeGrid have been edited but not yet saved to the underlying data set.
*
* @return true if any record in the grid has been edited but not yet saved
* @see com.smartgwt.client.docs.Editing Editing overview and related methods
*/
public native Boolean hasChanges() /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var retVal =self.hasChanges();
if(retVal == null || retVal === undefined) {
return null;
} else {
return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal);
}
}-*/;
/**
* Apply a hilite to all cells corresponding to a facetValue. <br><i>methodType</i> action
* @param facetID facet ID
* @param facetValueID facet value ID
* @param hiliteID hilite ID
*
* @return true if the cells were successfully hilited.
* @see com.smartgwt.client.docs.Hiliting Hiliting overview and related methods
*/
public native Boolean hiliteFacetValue(String facetID, String facetValueID, String hiliteID) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var retVal =self.hiliteFacetValue(facetID, facetValueID, hiliteID);
if(retVal == null || retVal === undefined) {
return null;
} else {
return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal);
}
}-*/;
/**
* If this cubeGrid can be edited, this method will return true if the record passed in has been edited, but the edits have
* not yet been saved to the CubeGrid's data object.
* @param rowNum row index of record to check for changes
* @param colNum column index of the record to check for changes
*
* @return true if the record has been edited but not yet saved
* @see com.smartgwt.client.docs.Editing Editing overview and related methods
*/
public native Boolean recordHasChanges(int rowNum, int colNum) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var retVal =self.recordHasChanges(rowNum, colNum);
if(retVal == null || retVal === undefined) {
return null;
} else {
return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal);
}
}-*/;
/**
* Remove a facet from the current view, using a fixed value from that facet. For example, remove the "months" facet from
* the view, collapsing to just January, or total for all months.
* @param facetId facetId to remove
*/
public native void removeFacet(String facetId) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.removeFacet(facetId);
}-*/;
/**
* Remove a facet from the current view, using a fixed value from that facet. For example, remove the "months" facet from
* the view, collapsing to just January, or total for all months.
* @param facetId facetId to remove
* @param fixedFacetValueId New fixed value for the facet, to be added to cubeGrid.fixedFacetValues. Default is the rollup value for the facet.
* @see com.smartgwt.client.widgets.cube.CubeGrid#addFacet
* @see com.smartgwt.client.widgets.cube.CubeGrid#getFixedFacetValues
*/
public native void removeFacet(String facetId, String fixedFacetValueId) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.removeFacet(facetId, fixedFacetValueId);
}-*/;
/**
* Resizes all columns for the provided facetValueId, which must be a facetValueId from the innermost column facet.
* @param facetValueId facetValueId of columns to be resized
* @param newWidth column's new width
*/
public native void resizeFacetValue(String facetValueId, int newWidth) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.resizeFacetValue(facetValueId, newWidth);
}-*/;
/**
* Select all cells. <br><i>methodType</i> action
*/
public native void selectAllCells() /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.selectAllCells();
}-*/;
/**
* Select/deselect all headers in a headerBar (specified by facetId) or all headerBars (if no facetId).
* <br><i>methodType</i> action
*/
public native void selectAllFacetValues() /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.selectAllFacetValues();
}-*/;
/**
* Select/deselect all headers in a headerBar (specified by facetId) or all headerBars (if no facetId).
* <br><i>methodType</i> action
* @param facetId ID of facet - if null, selects all headerbars' headers
* @param newState new selection state - if null defaults to true
* @see com.smartgwt.client.docs.Selection Selection overview and related methods
*/
public native void selectAllFacetValues(String facetId, boolean newState) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.selectAllFacetValues(facetId, newState);
}-*/;
/**
* Select/deselect the header for a given facet value. <br><i>methodType</i> action
* @param facetId ID of facet
* @param facetValueId ID of facetValue to select
*/
public native void selectFacetValue(String facetId, String facetValueId) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.selectFacetValue(facetId, facetValueId);
}-*/;
/**
* Select/deselect the header for a given facet value. <br><i>methodType</i> action
* @param facetId ID of facet
* @param facetValueId ID of facetValue to select
* @param newState new selection state - if null defaults to true
* @see com.smartgwt.client.docs.Selection Selection overview and related methods
*/
public native void selectFacetValue(String facetId, String facetValueId, boolean newState) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.selectFacetValue(facetId, facetValueId, newState);
}-*/;
/**
* Set the edit value for some cell in the cube grid.<p> Note that cubeGrids display one record per cell - the value passed
* in should be the desired edit value for the {@link com.smartgwt.client.widgets.cube.CubeGrid#getValueProperty
* valueProperty} of the record.
* @param rowNum Row number
* @param colNum Column number
* @param value New value for the record
*/
public native void setEditValue(int rowNum, int colNum, Object value) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.setEditValue(rowNum, colNum, value);
}-*/;
/**
* Set the title of a facet (appears in facet label).
* @param facetId facet to update
* @param newTitle title for the facet
*/
public native void setFacetTitle(String facetId, String newTitle) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.setFacetTitle(facetId, newTitle);
}-*/;
/**
* Set the title for a facet value.
* @param facetId facet to update
* @param facetValueId facetValue to update
* @param newTitle title for the facet
*/
public native void setFacetValueTitle(String facetId, String facetValueId, String newTitle) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.setFacetValueTitle(facetId, facetValueId, newTitle);
}-*/;
/**
* Set the align for the title for a facet value.
* @param facetId facet to update
* @param facetValueId facetValue to update
* @param align new alignment for facet value title
*/
public native void setFacetValueTitleAlign(String facetId, String facetValueId, Alignment align) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.setFacetValueTitleAlign(facetId, facetValueId, align.@com.smartgwt.client.types.Alignment::getValue()());
}-*/;
/**
* Modify fixedFacetValues for this cubeGrid.
* @param facetId facetId
* @param fixedFacetValueId fixedFacetValue New fixed value for the facet, to be added to cubeGrid.fixedFacetValues. Default is the rollup
* value for the facet.
*/
public native void setFixedFacetValue(String facetId, String fixedFacetValueId) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.setFixedFacetValue(facetId, fixedFacetValueId);
}-*/;
/**
* Add a sortByFacetId handler.
* <p>
* Called when a sort control is clicked on a FacetHeader. Does nothing by default.
*
* @param handler the sortByFacetId handler
* @return {@link HandlerRegistration} used to remove this handler
*/
public HandlerRegistration addSortByFacetIdHandler(com.smartgwt.client.widgets.cube.events.SortByFacetIdHandler handler) {
if(getHandlerCount(com.smartgwt.client.widgets.cube.events.SortByFacetIdEvent.getType()) == 0) setupSortByFacetIdEvent();
return doAddHandler(handler, com.smartgwt.client.widgets.cube.events.SortByFacetIdEvent.getType());
}
private native void setupSortByFacetIdEvent() /*-{
var obj = null;
var selfJ = this;
if(this.@com.smartgwt.client.widgets.BaseWidget::isCreated()()) {
obj = this.@com.smartgwt.client.widgets.BaseWidget::getJsObj()();
obj.addProperties({sortByFacetId:$entry(function(){
var param = {"facetId" : arguments[0], "sortDirection" : arguments[1]};
var event = @com.smartgwt.client.widgets.cube.events.SortByFacetIdEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param);
selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event);
})
});
} else {
obj = this.@com.smartgwt.client.widgets.BaseWidget::getConfig()();
obj.sortByFacetId = $entry(function(){
var param = {"facetId" : arguments[0], "sortDirection" : arguments[1]};
var event = @com.smartgwt.client.widgets.cube.events.SortByFacetIdEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param);
selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event);
});
}
}-*/;
/**
* Add a sortByFacetValues handler.
* <p>
* Called when a sort control is clicked on a FacetValueHeader. Does nothing by default.
*
* @param handler the sortByFacetValues handler
* @return {@link HandlerRegistration} used to remove this handler
*/
public HandlerRegistration addSortByFacetValuesHandler(com.smartgwt.client.widgets.cube.events.SortByFacetValuesHandler handler) {
if(getHandlerCount(com.smartgwt.client.widgets.cube.events.SortByFacetValuesEvent.getType()) == 0) setupSortByFacetValuesEvent();
return doAddHandler(handler, com.smartgwt.client.widgets.cube.events.SortByFacetValuesEvent.getType());
}
private native void setupSortByFacetValuesEvent() /*-{
var obj = null;
var selfJ = this;
if(this.@com.smartgwt.client.widgets.BaseWidget::isCreated()()) {
obj = this.@com.smartgwt.client.widgets.BaseWidget::getJsObj()();
obj.addProperties({sortByFacetValues:$entry(function(){
var param = {"facetValues" : arguments[0], "sortDirection" : arguments[1]};
var event = @com.smartgwt.client.widgets.cube.events.SortByFacetValuesEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param);
selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event);
})
});
} else {
obj = this.@com.smartgwt.client.widgets.BaseWidget::getConfig()();
obj.sortByFacetValues = $entry(function(){
var param = {"facetValues" : arguments[0], "sortDirection" : arguments[1]};
var event = @com.smartgwt.client.widgets.cube.events.SortByFacetValuesEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param);
selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event);
});
}
}-*/;
// ********************* Static Methods ***********************
/**
* Class level method to set the default properties of this class. If set, then all subsequent instances of this
* class will automatically have the default properties that were set when this method was called. This is a powerful
* feature that eliminates the need for users to create a separate hierarchy of subclasses that only alter the default
* properties of this class. Can also be used for skinning / styling purposes.
* <P>
* <b>Note:</b> This method is intended for setting default attributes only and will effect all instances of the
* underlying class (including those automatically generated in JavaScript).
* This method should not be used to apply standard EventHandlers or override methods for
* a class - use a custom subclass instead.
*
* @param cubeGridProperties properties that should be used as new defaults when instances of this class are created
*/
public static native void setDefaultProperties(CubeGrid cubeGridProperties) /*-{
var properties = $wnd.isc.addProperties({},cubeGridProperties.@com.smartgwt.client.widgets.BaseWidget::getConfig()());
delete properties.ID;
$wnd.isc.CubeGrid.addProperties(properties);
}-*/;
// ***********************************************************
/**
* An array of "cellRecords", each of which represents data for one cell of the body area.
*
* @param data data Default value is null
* @see com.smartgwt.client.widgets.cube.CubeGrid#setFixedFacetValues
*/
public void setData(CellRecord[] data) {
setAttribute("data", data, true);
}
/**
* An array of "cellRecords", each of which represents data for one cell of the body area.
*
*
* @return CellRecord
* @see com.smartgwt.client.widgets.cube.CubeGrid#getFixedFacetValues
*/
public CellRecord[] getData() {
return convertToCellRecordArray(getAttributeAsJavaScriptObject("data"));
}
/**
* Deselect a single cell - accepts cell ID.
* @param cell cell to deselect
*/
public native void deselectCell(String cell) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.deselectCell(cell);
}-*/;
/**
* Deselect a single cell - accepts cellRecord.
* @param cell cell to deselect
*/
public native void deselectCell(CellRecord cell) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.deselectCell(cell.@com.smartgwt.client.widgets.cube.CellRecord::getJsObj()());
}-*/;
/**
* Deselect cells that match a list of facetValues. Also supports an explicit list of cells or cellIds.
* <br><i>methodType</i> action
* @param cellList cells to deselect
*/
public native void deselectCells(String... cellList) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.deselectCells(cellList);
}-*/;
/**
* Deselect cells that match a list of facetValues. Also supports an explicit list of cells or cellIds.
* <br><i>methodType</i> action
* @param cellList cells to deselect
*/
public native void deselectCells(FacetValueMap cellList) /*-{
if (cellList == null) return;
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.deselectCells(cellList.@com.smartgwt.client.widgets.cube.FacetValueMap::getJsObj()());
}-*/;
/**
* Select a single cell - accepts cell ID or cell record. <br><i>methodType</i> action
* @param cell cell to select
*/
public native void selectCell(String ID) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.selectCell(cell);
}-*/;
/**
* Select a single cell - accepts cell ID or cell record. <br><i>methodType</i> action
* @param cell cell to select
*/
public native void selectCell(Record cell) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.selectCell(cell.@com.smartgwt.client.data.Record::getJsObj()());
}-*/;
/**
* Select cells that match a list of facetValues. Also supports an explicit list of cells or cellIds.
* <br><i>methodType</i> action
* @param cellList cells to select
*/
public native void selectCells(String... cellList) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
self.selectCells(cellList);
}-*/;
/**
* Given a record in this grid, this method returns the coordinates of the cell in which the record is displayed as a 2
* element array.
* @param cellRecord record to find coordinates for
*
* @return 2 element array containing <code>[rowNum,colNum]</code> for the cell, or <code>null</code> if the
* record is not found.
*/
public int[] getCellCoordinates(CellRecord cellRecord) {
com.google.gwt.core.client.JsArrayInteger cellCoodJS = doGetCellCoordinates(cellRecord.getJsObj());
return new int[]{cellCoodJS.get(0), cellCoodJS.get(1)};
}
private native com.google.gwt.core.client.JsArrayInteger doGetCellCoordinates(JavaScriptObject cellRecord) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var coords = self.getCellCoordinates(cellRecord);
if (coords == null) return [-1,-1];
return coords;
}-*/;
/**
* Returns the current value of a cell. If the cell has an outstanding edit value, this will be returned, otherwise the
* underlying value of the record will be returned.
* @param rowNum rowNum of the record being edited
* @param colNum colNum of the cell
*
* @return Current edit value, or underlying value for the cell.
* @see com.smartgwt.client.docs.Editing Editing overview and related methods
*/
public native Object getEditedCell(int rowNum, int colNum) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var ret = self.getEditedCell(rowNum, colNum);
return $wnd.SmartGWT.convertToJavaType(ret);
}-*/;
/**
* Returns the current value of a cell. If the cell has an outstanding edit value, this will be returned, otherwise the
* underlying value of the record will be returned.
* @param record rowNum of the record being edited, or an Object containing values for all the
* record's primary keys
* @param colNum colNum of the cell. Only required if the first parameter is a rowNum
*
* @return Current edit value, or underlying value for the cell.
* @see com.smartgwt.client.docs.Editing Editing overview and related methods
*/
public native Object getEditedCell(Record record) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var ret = self.getEditedCell(record.@com.smartgwt.client.data.Record::getJsObj()());
return $wnd.SmartGWT.convertToJavaType(ret);
}-*/;
/**
* Returns the combination of unsaved edits (if any) and original values (if any) for a given cell being edited. <P> The
* returned value is never null, and can be freely modified.
* @param rowNum of the record being edited
* @param colNum colNum of the record being edited
*
* @return A copy of the record with unsaved edits included
* @see com.smartgwt.client.docs.Editing Editing overview and related methods
*/
public native CellRecord getEditedRecord(int rowNum, int colNum) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var record = self.getEditedRecord(rowNum, colNum);
if (record == null) return null;
return @com.smartgwt.client.widgets.cube.CellRecord::getOrCreateRef(Lcom/google/gwt/core/client/JavaScriptObject;)(record);
}-*/;
/**
* Returns the combination of unsaved edits (if any) and original values (if any) for a given cell being edited. <P> The
* returned value is never null, and can be freely modified.
* @param record being edited
*
* @return A copy of the record with unsaved edits included
* @see com.smartgwt.client.docs.Editing Editing overview and related methods
*/
public native CellRecord getEditedRecord(Record baseRecord) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var record = self.getEditedRecord(baseRecord.@com.smartgwt.client.data.Record::getJsObj()());
if (record == null) return null;
return @com.smartgwt.client.widgets.cube.CellRecord::getOrCreateRef(Lcom/google/gwt/core/client/JavaScriptObject;)(record);
}-*/;
/**
* Apply a hilite to a specific cell. Note: can be called either as hiliteCell(cellObject, hiliteID) or
* hiliteCell(row, column, hiliteID) <br><i>methodType</i> action
* @param row of cell to hilite
* @param column of cell to hilite
* @param hilite id
*
* @return true if the cell was successfully hilited.
* @see com.smartgwt.client.docs.Hiliting Hiliting overview and related methods
*/
public native Boolean hiliteCell(int rowNum, int colNum, String hiliteID) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var retVal =self.hiliteCell(cellObj, hiliteID);
if(retVal == null || retVal === undefined) {
return null;
} else {
return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal);
}
}-*/;
/**
* Return the list of facets that have any selection in their headers. <br><i>methodType</i> getter
*
* @return list of facets that have any selection in their headers
* @see com.smartgwt.client.docs.Selection Selection overview and related methods
*/
public native String[] getFacetsHavingSelection() /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var facets = self.getFacetsHavingSelection();
if (facets == null) return null;
return @com.smartgwt.client.util.JSOHelper::convertToArray(Lcom/google/gwt/core/client/JavaScriptObject;)(facets);
}-*/;
/**
* Returns an array of the IDs of all selected cell records. <br><i>methodType</i> getter
*
* @return array of the selected cell IDs
* @see com.smartgwt.client.docs.Selection Selection overview and related methods
*/
public native String[] getSelectedCellIds() /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var cells = self.getSelectedCellIds();
if (cells == null) return null;
return @com.smartgwt.client.util.JSOHelper::convertToArray(Lcom/google/gwt/core/client/JavaScriptObject;)(cells);
}-*/;
/**
* Returns an array of the selected cell records. <br><i>methodType</i> getter
*
* @return array of the selected cell records
* @see com.smartgwt.client.docs.Selection Selection overview and related methods
*/
public native CellRecord[] getSelectedCells() /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var cells = self.getSelectedCells();
if (cells == null) return cells;
return @com.smartgwt.client.widgets.cube.CubeGrid::convertToCellRecordArray(Lcom/google/gwt/core/client/JavaScriptObject;)(cells);
}-*/;
/**
* Returns an array of facetValues objects indicating the headers that are selected in the headerBar for this facet. If
* facetId is not passed, returns selection for all facets. <br><i>methodType</i> getter
* @param facetId Id for facet for which we are getting selected facetValues.
*
* @return selected facetValues
* @see com.smartgwt.client.docs.Selection Selection overview and related methods
*/
public native FacetValueMap[] getSelectedFacetValues(String facetId) /*-{
var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var fvs = self.getSelectedFacetValues(facetId);
if (fvs == null) return null;
return @com.smartgwt.client.widgets.cube.CubeGrid::convertToFacetValueMapArray(Lcom/google/gwt/core/client/JavaScriptObject;)(fvs);
}-*/;
private static CellRecord[] convertToCellRecordArray(JavaScriptObject nativeArray) {
if (nativeArray == null) {
return new CellRecord[]{};
}
JavaScriptObject[] componentsj = JSOHelper.toArray(nativeArray);
CellRecord[] objects = new CellRecord[componentsj.length];
for (int i = 0; i < componentsj.length; i++) {
JavaScriptObject componentJS = componentsj[i];
CellRecord obj = (CellRecord) RefDataClass.getRef(componentJS);
if (obj == null) obj = new CellRecord(componentJS);
objects[i] = obj;
}
return objects;
}
private static FacetValueMap[] convertToFacetValueMapArray(JavaScriptObject nativeArray) {
if (nativeArray == null) {
return new FacetValueMap[]{};
}
JavaScriptObject[] componentsj = JSOHelper.toArray(nativeArray);
FacetValueMap[] objects = new FacetValueMap[componentsj.length];
for (int i = 0; i < componentsj.length; i++) {
JavaScriptObject componentJS = componentsj[i];
FacetValueMap obj = new FacetValueMap(componentJS);
objects[i] = obj;
}
return objects;
}
/**
* If set to true, context menu items will be included on the cells and headers providing the user with an option to create
* a chart of the cubeGrid's data set. See {@link com.smartgwt.client.widgets.cube.CubeGrid#getChartData chartData} for
* more information.
*
* @param enableCharting enableCharting Default value is false
*/
public void setEnableCharting(Boolean enableCharting) {
if (!SC.hasDrawing()) {
String errorMessage = "setEnableCharting(): Charting requires " +
"the Drawing module which is not present in this build.";
SC.logWarn(errorMessage);
throw new UnsupportedOperationException(errorMessage);
}
setAttribute("enableCharting", enableCharting, true);
}
/**
* If set to true, context menu items will be included on the cells and headers providing the user with an option to create
* a chart of the cubeGrid's data set. See {@link com.smartgwt.client.widgets.cube.CubeGrid#getChartData chartData} for
* more information.
*
*
* @return Boolean
*/
public Boolean getEnableCharting() {
return getAttributeAsBoolean("enableCharting");
}
private void checkAnalyticsLoaded () {
if (!analyticsLoaded()) {
String errorMessage = "Attempt to create CubeGrid. This class requires the optional " +
"Analytics module which is not present in this build.";
SC.logWarn(errorMessage);
throw new UnsupportedOperationException(errorMessage);
}
}
/**
* Static method indicating whether the optional Analytics module is loaded for the page.
* The CubeGrid component requires this module.
* @return true if the Analytics module is present
*/
public static native boolean analyticsLoaded() /*-{
return ($wnd.isc.CubeGrid != null);
}-*/;
}