/* * Copyright 2011 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package org.drools.workbench.screens.guided.dtable.client.widget.table.model.converters.column.impl; import java.math.BigDecimal; import java.math.BigInteger; import java.util.Arrays; import java.util.Date; import java.util.List; import com.google.gwt.event.dom.client.BlurEvent; import com.google.gwt.event.dom.client.BlurHandler; import com.google.gwt.user.client.ui.ListBox; import org.drools.workbench.models.datamodel.oracle.DataType; import org.drools.workbench.models.datamodel.oracle.OperatorsOracle; import org.drools.workbench.models.guided.dtable.shared.model.ActionCol52; import org.drools.workbench.models.guided.dtable.shared.model.BaseColumn; import org.drools.workbench.models.guided.dtable.shared.model.ConditionCol52; import org.drools.workbench.models.guided.dtable.shared.model.GuidedDecisionTable52; import org.drools.workbench.screens.guided.dtable.client.widget.table.GuidedDecisionTablePresenter; import org.drools.workbench.screens.guided.dtable.client.widget.table.GuidedDecisionTableView; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.BigDecimalUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.BigIntegerUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.BooleanUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.ByteUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.DateUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.DoubleUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.EnumMultiSelectUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.EnumSingleSelectBigDecimalUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.EnumSingleSelectBigIntegerUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.EnumSingleSelectByteUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.EnumSingleSelectDateUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.EnumSingleSelectDoubleUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.EnumSingleSelectFloatUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.EnumSingleSelectIntegerUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.EnumSingleSelectLongUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.EnumSingleSelectNumericUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.EnumSingleSelectShortUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.EnumSingleSelectStringUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.FloatUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.IntegerUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.LongUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.PriorityListUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.SalienceUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.ShortUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.StringUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.ValueListUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.datepicker.DatePickerSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.listbox.ListBoxBigDecimalSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.listbox.ListBoxBigIntegerSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.listbox.ListBoxByteSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.listbox.ListBoxDOMElement; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.listbox.ListBoxDateSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.listbox.ListBoxDoubleSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.listbox.ListBoxFloatSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.listbox.ListBoxIntegerSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.listbox.ListBoxLongSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.listbox.ListBoxNumericSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.listbox.ListBoxShortSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.listbox.ListBoxSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.listbox.ListBoxStringSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.textbox.TextBoxBigDecimalSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.textbox.TextBoxBigIntegerSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.textbox.TextBoxByteSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.textbox.TextBoxDoubleSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.textbox.TextBoxFloatSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.textbox.TextBoxIntegerSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.textbox.TextBoxLongSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.textbox.TextBoxNumericSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.textbox.TextBoxShortSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.dom.textbox.TextBoxStringSingletonDOMElementFactory; import org.drools.workbench.screens.guided.dtable.client.widget.table.model.converters.column.BaseColumnConverter; import org.drools.workbench.screens.guided.dtable.client.widget.table.utilities.ColumnUtilities; import org.gwtbootstrap3.client.ui.CheckBox; import org.kie.workbench.common.widgets.client.datamodel.AsyncPackageDataModelOracle; import org.uberfire.commons.validation.PortablePreconditions; import org.uberfire.ext.wires.core.grids.client.model.GridCell; import org.uberfire.ext.wires.core.grids.client.model.GridColumn; import org.uberfire.ext.wires.core.grids.client.widget.context.GridBodyCellRenderContext; import org.uberfire.ext.wires.core.grids.client.widget.dom.multiple.impl.CheckBoxDOMElementFactory; import org.uberfire.ext.wires.core.grids.client.widget.grid.GridWidget; import org.uberfire.ext.wires.core.grids.client.widget.layer.GridLayer; import org.uberfire.ext.wires.core.grids.client.widget.layer.impl.GridLienzoPanel; /** * Generic Handler for different BaseUiColumn types */ public abstract class BaseColumnConverterImpl implements BaseColumnConverter { protected static final int DEFAULT_COLUMN_WIDTH = 100; protected GuidedDecisionTable52 model; protected AsyncPackageDataModelOracle oracle; protected ColumnUtilities columnUtilities; protected GuidedDecisionTableView.Presenter presenter; protected GridLienzoPanel gridPanel; protected GridLayer gridLayer; @Override public int priority() { return 0; } @Override public void initialise( final GuidedDecisionTable52 model, final AsyncPackageDataModelOracle oracle, final ColumnUtilities columnUtilities, final GuidedDecisionTableView.Presenter presenter ) { this.model = PortablePreconditions.checkNotNull( "model", model ); this.oracle = PortablePreconditions.checkNotNull( "oracle", oracle ); this.columnUtilities = PortablePreconditions.checkNotNull( "columnUtilities", columnUtilities ); this.presenter = PortablePreconditions.checkNotNull( "presenter", presenter ); this.gridLayer = presenter.getModellerPresenter().getView().getGridLayerView(); this.gridPanel = presenter.getModellerPresenter().getView().getGridPanel(); } protected GridColumn<?> newColumn( final BaseColumn column, final GuidedDecisionTablePresenter.Access access, final GuidedDecisionTableView gridWidget ) { //Get a column based upon the data-type final String type = columnUtilities.getType( column ); if ( DataType.TYPE_NUMERIC.equals( type ) ) { return newNumericColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, gridWidget ); } else if ( DataType.TYPE_NUMERIC_BIGDECIMAL.equals( type ) ) { return newBigDecimalColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, gridWidget ); } else if ( DataType.TYPE_NUMERIC_BIGINTEGER.equals( type ) ) { return newBigIntegerColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, gridWidget ); } else if ( DataType.TYPE_NUMERIC_BYTE.equals( type ) ) { return newByteColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, gridWidget ); } else if ( DataType.TYPE_NUMERIC_DOUBLE.equals( type ) ) { return newDoubleColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, gridWidget ); } else if ( DataType.TYPE_NUMERIC_FLOAT.equals( type ) ) { return newFloatColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, gridWidget ); } else if ( DataType.TYPE_NUMERIC_INTEGER.equals( type ) ) { return newIntegerColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, gridWidget ); } else if ( DataType.TYPE_NUMERIC_LONG.equals( type ) ) { return newLongColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, gridWidget ); } else if ( DataType.TYPE_NUMERIC_SHORT.equals( type ) ) { return newShortColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, gridWidget ); } else if ( DataType.TYPE_BOOLEAN.equals( type ) ) { return newBooleanColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, gridWidget ); } else if ( DataType.TYPE_DATE.equals( type ) ) { return newDateColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, gridWidget ); } else { return newStringColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, gridWidget ); } } protected GridColumn<?> newValueListColumn( final ConditionCol52 column, final GuidedDecisionTablePresenter.Access access, final GuidedDecisionTableView gridWidget ) { final boolean isMultipleSelect = OperatorsOracle.operatorRequiresList( column.getOperator() ); return new ValueListUiColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, new ListBoxSingletonDOMElementFactory<String, ListBox>( gridPanel, gridLayer, gridWidget ) { @Override public ListBox createWidget() { final ListBox listBox = new ListBox(); listBox.setMultipleSelect( isMultipleSelect ); return listBox; } @Override public ListBoxDOMElement<String, ListBox> createDomElement( final GridLayer gridLayer, final GridWidget gridWidget, final GridBodyCellRenderContext context ) { this.widget = createWidget(); this.widget.addKeyDownHandler( ( e ) -> e.stopPropagation() ); this.widget.addMouseDownHandler( ( e ) -> e.stopPropagation() ); widget.addBlurHandler( new BlurHandler() { @Override public void onBlur( final BlurEvent event ) { destroyResources(); gridLayer.batch(); gridPanel.setFocus( true ); } } ); this.e = new ListBoxDOMElement<String, ListBox>( widget, gridLayer, gridWidget ); return e; } @Override public void toWidget( final GridCell<String> cell, final ListBox widget ) { if ( cell == null || cell.getValue() == null || cell.getValue().getValue() == null ) { if ( widget.getItemCount() > 0 ) { widget.setSelectedIndex( 0 ); } } else { final String value = cell.getValue().getValue(); if ( isMultipleSelect ) { final List<String> values = Arrays.asList( value.split( "," ) ); for ( int i = 0; i < widget.getItemCount(); i++ ) { widget.setItemSelected( i, values.contains( widget.getValue( i ) ) ); } } else { for ( int i = 0; i < widget.getItemCount(); i++ ) { if ( widget.getValue( i ).equals( value ) ) { widget.setSelectedIndex( i ); break; } } } } } @Override public String fromWidget( final ListBox widget ) { final StringBuilder sb = new StringBuilder(); if ( isMultipleSelect ) { for ( int i = 0; i < widget.getItemCount(); i++ ) { if ( widget.isItemSelected( i ) ) { if ( i == 0 ) { sb.append( widget.getValue( i ) ); } else { sb.append( "," ).append( widget.getValue( i ) ); } } } } else { int selectedIndex = widget.getSelectedIndex(); if ( selectedIndex >= 0 ) { sb.append( widget.getValue( selectedIndex ) ); } } return sb.toString(); } @Override public String convert( final String value ) { return value; } }, presenter.getValueListLookups( column ), isMultipleSelect ); } protected GridColumn<?> newValueListColumn( final ActionCol52 column, final GuidedDecisionTablePresenter.Access access, final GuidedDecisionTableView gridWidget ) { return new ValueListUiColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, new ListBoxStringSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), presenter.getValueListLookups( column ) ); } protected GridColumn<?> newMultipleSelectEnumColumn( final String factType, final String factField, final BaseColumn column, final GuidedDecisionTablePresenter.Access access, final GuidedDecisionTableView gridWidget ) { return new EnumMultiSelectUiColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, new ListBoxSingletonDOMElementFactory<String, ListBox>( gridPanel, gridLayer, gridWidget ) { @Override public ListBox createWidget() { final ListBox listBox = new ListBox(); listBox.setMultipleSelect( true ); return listBox; } @Override public ListBoxDOMElement<String, ListBox> createDomElement( final GridLayer gridLayer, final GridWidget gridWidget, final GridBodyCellRenderContext context ) { this.widget = createWidget(); this.widget.addKeyDownHandler( ( e ) -> e.stopPropagation() ); this.widget.addMouseDownHandler( ( e ) -> e.stopPropagation() ); widget.addBlurHandler( new BlurHandler() { @Override public void onBlur( final BlurEvent event ) { destroyResources(); gridLayer.batch(); gridPanel.setFocus( true ); } } ); this.e = new ListBoxDOMElement<String, ListBox>( widget, gridLayer, gridWidget ); return e; } @Override public String convert( final String value ) { return value; } @Override public void toWidget( final GridCell<String> cell, final ListBox widget ) { final String value = cell.getValue().getValue(); if ( value == null ) { return; } final List<String> values = Arrays.asList( value.split( "," ) ); for ( int i = 0; i < widget.getItemCount(); i++ ) { widget.setItemSelected( i, values.contains( widget.getValue( i ) ) ); } } @Override public String fromWidget( final ListBox widget ) { final StringBuilder sb = new StringBuilder(); for ( int i = 0; i < widget.getItemCount(); i++ ) { if ( widget.isItemSelected( i ) ) { if ( i == 0 ) { sb.append( widget.getValue( i ) ); } else { sb.append( "," ).append( widget.getValue( i ) ); } } } return sb.toString(); } }, presenter, factType, factField ); } protected GridColumn<?> newSingleSelectionEnumColumn( final String factType, final String factField, final DataType.DataTypes dataType, final BaseColumn column, final GuidedDecisionTablePresenter.Access access, final GuidedDecisionTableView gridWidget ) { if ( dataType.equals( DataType.DataTypes.NUMERIC ) ) { return new EnumSingleSelectNumericUiColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, new ListBoxNumericSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), new TextBoxNumericSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), presenter, factType, factField ); } else if ( dataType.equals( DataType.DataTypes.NUMERIC_BIGDECIMAL ) ) { return new EnumSingleSelectBigDecimalUiColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, new ListBoxBigDecimalSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), new TextBoxBigDecimalSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), presenter, factType, factField ); } else if ( dataType.equals( DataType.DataTypes.NUMERIC_BIGINTEGER ) ) { return new EnumSingleSelectBigIntegerUiColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, new ListBoxBigIntegerSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), new TextBoxBigIntegerSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), presenter, factType, factField ); } else if ( dataType.equals( DataType.DataTypes.NUMERIC_BYTE ) ) { return new EnumSingleSelectByteUiColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, new ListBoxByteSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), new TextBoxByteSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), presenter, factType, factField ); } else if ( dataType.equals( DataType.DataTypes.NUMERIC_DOUBLE ) ) { return new EnumSingleSelectDoubleUiColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, new ListBoxDoubleSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), new TextBoxDoubleSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), presenter, factType, factField ); } else if ( dataType.equals( DataType.DataTypes.NUMERIC_FLOAT ) ) { return new EnumSingleSelectFloatUiColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, new ListBoxFloatSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), new TextBoxFloatSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), presenter, factType, factField ); } else if ( dataType.equals( DataType.DataTypes.NUMERIC_INTEGER ) ) { return new EnumSingleSelectIntegerUiColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, new ListBoxIntegerSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), new TextBoxIntegerSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), presenter, factType, factField ); } else if ( dataType.equals( DataType.DataTypes.NUMERIC_LONG ) ) { return new EnumSingleSelectLongUiColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, new ListBoxLongSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), new TextBoxLongSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), presenter, factType, factField ); } else if ( dataType.equals( DataType.DataTypes.NUMERIC_SHORT ) ) { return new EnumSingleSelectShortUiColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, new ListBoxShortSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), new TextBoxShortSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), presenter, factType, factField ); } else if ( dataType.equals( DataType.DataTypes.BOOLEAN ) ) { return newBooleanColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, gridWidget ); } else if ( dataType.equals( DataType.DataTypes.DATE ) ) { return new EnumSingleSelectDateUiColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, new ListBoxDateSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), new DatePickerSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), presenter, factType, factField ); } else { return new EnumSingleSelectStringUiColumn( makeHeaderMetaData( column ), Math.max( column.getWidth(), DEFAULT_COLUMN_WIDTH ), true, !column.isHideColumn(), access, new ListBoxStringSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), new TextBoxStringSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ), presenter, factType, factField ); } } protected GridColumn<BigDecimal> newNumericColumn( final List<GridColumn.HeaderMetaData> headerMetaData, final double width, final boolean isResizable, final boolean isVisible, final GuidedDecisionTablePresenter.Access access, final GuidedDecisionTableView gridWidget ) { return new BigDecimalUiColumn( headerMetaData, width, isResizable, isVisible, access, new TextBoxBigDecimalSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ) ); } protected GridColumn<BigDecimal> newBigDecimalColumn( final List<GridColumn.HeaderMetaData> headerMetaData, final double width, final boolean isResizable, final boolean isVisible, final GuidedDecisionTablePresenter.Access access, final GuidedDecisionTableView gridWidget ) { return new BigDecimalUiColumn( headerMetaData, width, isResizable, isVisible, access, new TextBoxBigDecimalSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ) ); } protected GridColumn<BigInteger> newBigIntegerColumn( final List<GridColumn.HeaderMetaData> headerMetaData, final double width, final boolean isResizable, final boolean isVisible, final GuidedDecisionTablePresenter.Access access, final GuidedDecisionTableView gridWidget ) { return new BigIntegerUiColumn( headerMetaData, width, isResizable, isVisible, access, new TextBoxBigIntegerSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ) ); } protected GridColumn<Byte> newByteColumn( final List<GridColumn.HeaderMetaData> headerMetaData, final double width, final boolean isResizable, final boolean isVisible, final GuidedDecisionTablePresenter.Access access, final GuidedDecisionTableView gridWidget ) { return new ByteUiColumn( headerMetaData, width, isResizable, isVisible, access, new TextBoxByteSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ) ); } protected GridColumn<Double> newDoubleColumn( final List<GridColumn.HeaderMetaData> headerMetaData, final double width, final boolean isResizable, final boolean isVisible, final GuidedDecisionTablePresenter.Access access, final GuidedDecisionTableView gridWidget ) { return new DoubleUiColumn( headerMetaData, width, isResizable, isVisible, access, new TextBoxDoubleSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ) ); } protected GridColumn<Float> newFloatColumn( final List<GridColumn.HeaderMetaData> headerMetaData, final double width, final boolean isResizable, final boolean isVisible, final GuidedDecisionTablePresenter.Access access, final GuidedDecisionTableView gridWidget ) { return new FloatUiColumn( headerMetaData, width, isResizable, isVisible, access, new TextBoxFloatSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ) { } ); } protected GridColumn<Integer> newIntegerColumn( final List<GridColumn.HeaderMetaData> headerMetaData, final double width, final boolean isResizable, final boolean isVisible, final GuidedDecisionTablePresenter.Access access, final GuidedDecisionTableView gridWidget ) { return new IntegerUiColumn( headerMetaData, width, isResizable, isVisible, access, new TextBoxIntegerSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ) ); } protected GridColumn<Long> newLongColumn( final List<GridColumn.HeaderMetaData> headerMetaData, final double width, final boolean isResizable, final boolean isVisible, final GuidedDecisionTablePresenter.Access access, final GuidedDecisionTableView gridWidget ) { return new LongUiColumn( headerMetaData, width, isResizable, isVisible, access, new TextBoxLongSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ) ); } protected GridColumn<Short> newShortColumn( final List<GridColumn.HeaderMetaData> headerMetaData, final double width, final boolean isResizable, final boolean isVisible, final GuidedDecisionTablePresenter.Access access, final GuidedDecisionTableView gridWidget ) { return new ShortUiColumn( headerMetaData, width, isResizable, isVisible, access, new TextBoxShortSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ) ); } protected GridColumn<Date> newDateColumn( final List<GridColumn.HeaderMetaData> headerMetaData, final double width, final boolean isResizable, final boolean isVisible, final GuidedDecisionTablePresenter.Access access, final GuidedDecisionTableView gridWidget ) { return new DateUiColumn( headerMetaData, width, isResizable, isVisible, access, new DatePickerSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ) ); } protected GridColumn<Boolean> newBooleanColumn( final List<GridColumn.HeaderMetaData> headerMetaData, final double width, final boolean isResizable, final boolean isVisible, final GuidedDecisionTablePresenter.Access access, final GuidedDecisionTableView gridWidget ) { return new BooleanUiColumn( headerMetaData, width, isResizable, isVisible, access, new CheckBoxDOMElementFactory( gridLayer, gridWidget ) { @Override public CheckBox createWidget() { final CheckBox checkBox = super.createWidget(); checkBox.setEnabled( access.isEditable() ); checkBox.addKeyDownHandler( ( e ) -> e.stopPropagation() ); checkBox.addMouseDownHandler( ( e ) -> e.stopPropagation() ); return checkBox; } } ); } protected GridColumn<String> newStringColumn( final List<GridColumn.HeaderMetaData> headerMetaData, final double width, final boolean isResizable, final boolean isVisible, final GuidedDecisionTablePresenter.Access access, final GuidedDecisionTableView gridWidget ) { return new StringUiColumn( headerMetaData, width, isResizable, isVisible, access, new TextBoxStringSingletonDOMElementFactory( gridPanel, gridLayer, gridWidget ) ); } }