If you are using a grouped ListGrid with a detail viewer... and if you are moving you mouse over a group header... a large detail viewer which shows all listGrid records appears (see Screenshot). I guess this should not be. If you are moving over a group header, no details viewer should appear because it is not standard listGridRecord. You can use the Code example to reproduce.
tested on: latestsmartGWT 5.1d LGPL
Browser: Firfox 26
Thanks
Andy
tested on: latestsmartGWT 5.1d LGPL
Browser: Firfox 26
Thanks
Andy
Code:
import java.util.LinkedHashMap; import com.google.gwt.i18n.client.NumberFormat; import com.smartgwt.client.data.Criteria; import com.smartgwt.client.data.DataSource; import com.smartgwt.client.data.Record; import com.smartgwt.client.data.RecordList; import com.smartgwt.client.data.events.DataChangedEvent; import com.smartgwt.client.data.events.DataChangedHandler; import com.smartgwt.client.data.fields.DataSourceFloatField; import com.smartgwt.client.data.fields.DataSourceSequenceField; import com.smartgwt.client.data.fields.DataSourceTextField; import com.smartgwt.client.types.Alignment; import com.smartgwt.client.types.AutoFitWidthApproach; import com.smartgwt.client.types.FetchMode; import com.smartgwt.client.types.GroupStartOpen; import com.smartgwt.client.types.Overflow; import com.smartgwt.client.types.RecordDropAppearance; import com.smartgwt.client.types.SummaryFunctionType; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Window; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.grid.CellFormatter; import com.smartgwt.client.widgets.grid.ListGrid; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.client.widgets.grid.ListGridRecord; import com.smartgwt.client.widgets.layout.VLayout; import com.smartgwt.client.widgets.toolbar.ToolStrip; import com.smartgwt.client.widgets.toolbar.ToolStripButton; import com.smartgwt.client.widgets.viewer.DetailViewer; public class GTestGrid { private ListGrid listGrid; private DynamicForm editorForm; public GTestGrid() { initPopUp(); } private void initPopUp() { initListGrid(); initEditorForm(); VLayout layout = new VLayout(); layout.setSize( "100%", "100%" ); layout.setMembers( editorForm, getToolBar(), listGrid ); layout.setOverflow( Overflow.HIDDEN ); Window window = new Window(); window.setOverflow( Overflow.HIDDEN ); window.setShowShadow( true ); window.setShadowSoftness( 10 ); window.setShadowOffset( 5 ); window.setSize( "100%", "100%" ); window.setCanDragResize( true ); window.setShowMaximizeButton( true ); window.setShowMinimizeButton( true ); window.setShowCloseButton( false ); window.setAnimateMinimize( true ); window.setShowCloseButton( true ); window.setModalMaskOpacity( 50 ); window.setIsModal( true ); window.setShowModalMask( true ); window.centerInPage(); window.addItem( layout ); window.draw(); listGrid.getResultSet().addDataChangedHandler( new DataChangedHandler() { @Override public void onDataChanged( DataChangedEvent event ) { double totalAmount = 0; // Gets all records of the listGrid Record[] records = getAssignments(); for ( int i = 0; i < records.length; i++ ) { totalAmount = totalAmount + records[i].getAttributeAsDouble( CAssignedPaymentsRec.total_amount ); } SC.say( "Total Amount: " + totalAmount ); } } ); } private void initListGrid() { final DataSource dataSource = getDataSource(); listGrid = new ListGrid() { @Override protected Canvas getCellHoverComponent( Record record, Integer rowNum, Integer colNum ) { Criteria criteria = new Criteria(); criteria.addCriteria( dataSource.getPrimaryKeyFieldName(), record.getAttribute( dataSource.getPrimaryKeyFieldName() ) ); DetailViewer viewer = new DetailViewer(); viewer.setEmptyCellValue( "---" ); viewer.setDataSource( dataSource ); viewer.setWrapValues( false ); viewer.setWrapLabel( false ); viewer.setShowShadow( true ); viewer.setShowEmptyField( false ); viewer.setShowHiddenFields( true ); viewer.setShowEmptyField( false ); viewer.setShowDetailFields( true ); viewer.fetchData( criteria ); return viewer; } }; listGrid.setMargin( 25 ); listGrid.setDataSource( dataSource ); listGrid.setAutoFetchData( true ); listGrid.setShowFilterEditor( true ); listGrid.setAllowFilterExpressions( true ); listGrid.setShowRowNumbers( true ); listGrid.setFastCellUpdates( true ); listGrid.setEmptyCellValue( "---" ); listGrid.setAllowFilterExpressions( true ); listGrid.setDataFetchMode( FetchMode.BASIC ); listGrid.setWrapHeaderTitles( true ); listGrid.setCanResizeFields( true ); listGrid.setCellPadding( 4 ); listGrid.setFixedRecordHeights( false ); listGrid.setGroupByMaxRecords( 1000 ); listGrid.setBodyOverflow( Overflow.AUTO ); listGrid.setOverflow( Overflow.AUTO ); listGrid.setLeaveScrollbarGap( false ); listGrid.setAutoFitWidthApproach( AutoFitWidthApproach.BOTH ); listGrid.setAutoFitHeaderHeights( true ); listGrid.setAutoSizeHeaderSpans( true ); listGrid.setCanAutoFitFields( false ); listGrid.setRecordDropAppearance( RecordDropAppearance.BOTH ); listGrid.setCanHover( true ); listGrid.setShowHover( true ); listGrid.setShowHoverComponents( true ); listGrid.setHoverDelay( 100 ); listGrid.setCanAddFormulaFields( true ); listGrid.setCanAddSummaryFields( true ); // Sets Columns setColumns( listGrid ); } private void setColumns( ListGrid listGrid ) { ListGridField idField = new ListGridField( "id" ); idField.setWidth( "10%" ); idField.setAlign( Alignment.CENTER ); idField.setShowGroupSummary( false ); idField.setHidden( true ); idField.setCanEdit( false ); ListGridField descriptionField = new ListGridField( "description" ); descriptionField.setWidth( "60%" ); descriptionField.setCanEdit( false ); ListGridField netField = new ListGridField( "netAmount" ); netField.setSummaryFunction( SummaryFunctionType.SUM ); netField.setShowGroupSummary( true ); netField.setShowGridSummary( true ); netField.setWidth( "10%" ); netField.setAlign( Alignment.CENTER ); netField.setCellFormatter( new CellFormatter() { public String format( Object value, ListGridRecord record, int rowNum, int colNum ) { if ( value == null ) return null; try { NumberFormat fmt = NumberFormat.getFormat( "#,##0.00" ); return fmt.format( Double.valueOf( String.valueOf( value ) ) ); } catch ( Exception e ) { return value.toString(); } } } ); ListGridField taxField = new ListGridField( "taxAmount" ); taxField.setWidth( "10%" ); taxField.setSummaryFunction( SummaryFunctionType.SUM ); taxField.setShowGroupSummary( true ); taxField.setShowGridSummary( true ); taxField.setAlign( Alignment.CENTER ); taxField.setCellFormatter( new CellFormatter() { public String format( Object value, ListGridRecord record, int rowNum, int colNum ) { if ( value == null ) return null; try { NumberFormat fmt = NumberFormat.getFormat( "#,##0.00" ); return fmt.format( Double.valueOf( String.valueOf( value ) ) ); } catch ( Exception e ) { return value.toString(); } } } ); ListGridField grossField = new ListGridField( "grossAmoumnt" ); grossField.setSummaryFunction( SummaryFunctionType.SUM ); grossField.setShowGroupSummary( true ); grossField.setShowGridSummary( true ); grossField.setAlign( Alignment.CENTER ); grossField.setWidth( "10%" ); grossField.setCellFormatter( new CellFormatter() { public String format( Object value, ListGridRecord record, int rowNum, int colNum ) { if ( value == null ) return null; try { NumberFormat fmt = NumberFormat.getFormat( "#,##0.00" ); return fmt.format( Double.valueOf( String.valueOf( value ) ) ); } catch ( Exception e ) { return value.toString(); } } } ); ListGridField currencyField = new ListGridField( "currency" ); currencyField.setAlign( Alignment.CENTER ); currencyField.setWidth( "8%" ); currencyField.setCanEdit( false ); listGrid.setFields( idField, descriptionField, netField, taxField, grossField ); // Group ListGrid listGrid.setGroupByField( "currency" ); listGrid.setGroupStartOpen( GroupStartOpen.ALL ); listGrid.setShowGroupSummary( true ); listGrid.setShowGridSummary( true ); } private DataSource getDataSource() { DataSource ds = new DataSource(); ds.setID( "payments" ); ds.setClientOnly( true ); DataSourceSequenceField idField = new DataSourceSequenceField( "id", "ID" ); idField.setPrimaryKey( true ); idField.setHidden( true ); DataSourceTextField descriptionField = new DataSourceTextField( "description", "Description" ); descriptionField.setRequired( true ); DataSourceFloatField netField = new DataSourceFloatField( "netAmount", "Net Amount" ); netField.setRequired( true ); DataSourceFloatField taxField = new DataSourceFloatField( "taxAmount", "Tax Amount" ); taxField.setRequired( true ); DataSourceFloatField grossField = new DataSourceFloatField( "grossAmoumnt", "Gross Amount" ); grossField.setRequired( true ); DataSourceTextField currencyField = new DataSourceTextField( "currency", "Currency" ); currencyField.setValueMap( getCurrencys() ); currencyField.setRequired( true ); ds.setFields( idField, descriptionField, netField, taxField, grossField, currencyField ); return ds; } private void initEditorForm() { editorForm = new DynamicForm(); editorForm.setDataSource( listGrid.getDataSource() ); editorForm.setAutoFocus( true ); editorForm.setWidth100(); editorForm.setMargin( 25 ); editorForm.setUseAllDataSourceFields( true ); editorForm.editNewRecord(); } private ToolStrip getToolBar() { ToolStrip toolbar = new ToolStrip(); toolbar.setWidth100(); ToolStripButton buttonAddToGrid = new ToolStripButton( "Add To Grid" ); buttonAddToGrid.addClickHandler( new ClickHandler() { public void onClick( ClickEvent event ) { if ( editorForm.validate() == true ) { editorForm.submit(); } } } ); ToolStripButton buttonNewRecord = new ToolStripButton( "New Record" ); buttonNewRecord.addClickHandler( new ClickHandler() { public void onClick( ClickEvent event ) { editorForm.editNewRecord(); } } ); toolbar.addButton( buttonNewRecord ); toolbar.addButton( buttonAddToGrid ); return toolbar; } public Record[] getAssignments() { RecordList recordList = null; if ( listGrid.isGrouped() ) { recordList = listGrid.getOriginalRecordList(); } else { recordList = listGrid.getResultSet(); } Record[] result = (Record[]) recordList.toArray(); return result; } public LinkedHashMap<String, String> getCurrencys() { LinkedHashMap<String, String> items = new LinkedHashMap<String, String>(); items.put( "1", "EUR" ); items.put( "2", "GBP" ); items.put( "3", "CHF" ); items.put( "4", "SEK" ); items.put( "5", "DKK" ); items.put( "6", "PLN" ); items.put( "7", "BGN" ); items.put( "8", "CZK" ); items.put( "9", "HUF" ); items.put( "10", "HRK" ); items.put( "11", "RUB" ); items.put( "12", "RON" ); return items; } }
Comment