Bug 214572 Implement IAggregationCellViewProvider for crosstab/chart integration
This interface implements the model logic for the designer UI, when the users design a crosstab with charts. Note that it is independent from the multi-view feature. /** * Return the name of this view */ String getViewName( ); // this should simply return "chart" /** * Returns if the given aggregation cell matches this view */ boolean matchView( AggregationCellHandle cell ); Returns true if chart is supported in this type of aggregation cell /** * Switches given aggregation cell to this view */ void switchView( AggregationCellHandle cell ); create a chart inside the aggregation cell (and remove the data elements). This method is called when the UI tries to switch the cell contents from data element to chart. /** * Restores given aggregation cell to previous view */ void restoreView( AggregationCellHandle cell );
chart/org.eclipse.birt.chart.reportitem.ui/src/org/eclipse/birt/chart/reportitem/ui/ChartReportItemBuilderImpl.java
throw new RuntimeException( e );
		}
		finally
		{
			iInstanceCount--;
			
			
			this.extendedHandle = null;
		}
	}
	private void updateModel( ExtendedItemHandle eih, ChartWizard chartBuilder,
			ChartReportItemImpl crii, Chart cmOld, Chart cmNew,
			String outputFormat )
	{
		try
		{
			
			eih.setProperty( ChartReportItemUtil.PROPERTY_OUTPUT, outputFormat );
			
			
			crii.executeSetModelCommand( eih, cmOld, cmNew );
			
			chartBuilder.resizeChart( cmNew );
			final Bounds bo = cmNew.getBlock( ).getBounds( );
			
			NumberFormat nf = ChartUIUtil.getDefaultNumberFormatInstance( );
			if ( eih.getWidth( ).getStringValue( ) == null )
			{
				eih.setWidth( nf.format( bo.getWidth( ) ) + "pt" ); 
			}