From 2c509f9108fcbba383a936cdd43b67938664fa83 Mon Sep 17 00:00:00 2001 From: dgao Date: Tue, 20 Mar 2012 16:04:19 +0800 Subject: [PATCH] - Summary:Support the crosstab multiple cell. - Bugzilla Bug (s) Resolved: - Description: - Project ID: - Tests Description : Manual test - Notes to Build Team: None - Notes to Developers: None - Notes to QA: None - Notes to Documentation: None - Files Edited: - Files Added: - Files Deleted: --- .../core/de/CrosstabReportItemHandle.java | 3 -- .../core/de/internal/CrosstabModelUtil.java | 47 ++++++++++--------- .../de/internal/CrosstabReportItemTask.java | 5 +- .../item/crosstab/core/util/CrosstabUtil.java | 8 +++- .../plugin.xml | 5 ++ .../ui/CrosstabCellMenuAdapterFactory.java | 5 -- .../AddDimensionViewHandleCommand.java | 2 + .../ui/editors/model/CrosstabAdaptUtil.java | 14 ++++++ .../ui/views/provider/AreaNodeProvider.java | 6 +++ .../views/provider/CrossTabNodeProvider.java | 9 ++-- .../CrosstabPropertyHandleWrapper.java | 14 ++++++ ...osstabPropertyHandleWrapperTypeTester.java | 3 +- 12 files changed, 77 insertions(+), 44 deletions(-) diff --git a/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/de/CrosstabReportItemHandle.java b/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/de/CrosstabReportItemHandle.java index 5acfb210860..1930c8fe5b4 100644 --- a/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/de/CrosstabReportItemHandle.java +++ b/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/de/CrosstabReportItemHandle.java @@ -35,10 +35,7 @@ import org.eclipse.birt.report.model.api.LibraryHandle; import org.eclipse.birt.report.model.api.PropertyHandle; import org.eclipse.birt.report.model.api.ReportItemHandle; -import org.eclipse.birt.report.model.api.activity.NotificationEvent; import org.eclipse.birt.report.model.api.activity.SemanticException; -import org.eclipse.birt.report.model.api.command.PropertyEvent; -import org.eclipse.birt.report.model.api.core.Listener; import org.eclipse.birt.report.model.api.extension.CompatibilityStatus; import org.eclipse.birt.report.model.api.extension.ExtendedElementException; import org.eclipse.birt.report.model.api.metadata.DimensionValue; diff --git a/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/de/internal/CrosstabModelUtil.java b/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/de/internal/CrosstabModelUtil.java index 9aceb49f89c..fd374e26e4e 100644 --- a/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/de/internal/CrosstabModelUtil.java +++ b/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/de/internal/CrosstabModelUtil.java @@ -18,7 +18,6 @@ import org.eclipse.birt.core.data.ExpressionUtil; import org.eclipse.birt.core.exception.BirtException; import org.eclipse.birt.data.engine.api.aggregation.AggregationManager; -import org.eclipse.birt.data.engine.script.DataRow; import org.eclipse.birt.report.data.adapter.api.DataAdapterUtil; import org.eclipse.birt.report.data.adapter.api.DataRequestSession; import org.eclipse.birt.report.data.adapter.api.DataSessionContext; @@ -41,7 +40,6 @@ import org.eclipse.birt.report.model.api.DataItemHandle; import org.eclipse.birt.report.model.api.DesignElementHandle; import org.eclipse.birt.report.model.api.ExtendedItemHandle; -import org.eclipse.birt.report.model.api.LabelHandle; import org.eclipse.birt.report.model.api.PropertyHandle; import org.eclipse.birt.report.model.api.ReportItemHandle; import org.eclipse.birt.report.model.api.StructureFactory; @@ -1563,6 +1561,9 @@ public static int computeAllMeasureHeaderCount( } // add support multiple header + /**Validate the crosstab header cell + * @param crosstab + */ public static void validateCrosstabHeader( CrosstabReportItemHandle crosstab ) { int headerCellCount = crosstab.getHeaderCount( ); @@ -1593,24 +1594,6 @@ public static void validateCrosstabHeader( CrosstabReportItemHandle crosstab ) } else if ( columnLevelList.size( ) == 0 && rowLevelList.size( ) > 0 ) { - for ( int i = 0; i < headerCellCount; i++ ) - { - CrosstabCellHandle temp = crosstab.getHeader( i ); - LabelHandle labelHandle = crosstab.getModuleHandle( ) - .getElementFactory( ) - .newLabel( null ); - try - { - labelHandle.setText( rowLevelList.get( i ) - .getCubeLevel( ) - .getName( ) ); - temp.addContent( labelHandle ); - } - catch ( SemanticException e ) - { - // Do nothing - } - } if ( headerCellCount < rowSize ) { for ( int i = 0; i < rowSize - headerCellCount; i++ ) @@ -1669,17 +1652,35 @@ public static List getLevelList( // pos < 0 means , is n't add or remove lever cause the update header cell, // (hide measer header cell) + /**Update the header cell + * @param crosstab + * @param pos + * @param axisType + */ public static void updateHeaderCell( CrosstabReportItemHandle crosstab, int pos, int axisType ) { - updateHeaderCell( crosstab, pos, axisType, false ); + updateHeaderCell( crosstab, pos, axisType, false, 0); } public static void updateHeaderCell( CrosstabReportItemHandle crosstab, - int pos, int axisType, boolean isMoveDimension ) + int pos, int axisType, boolean isMoveDimension, int adjustCount ) { HeaderData data = caleHeaderData( crosstab ); + + if (isMoveDimension) + { + if ( ICrosstabConstants.COLUMN_AXIS_TYPE == axisType ) + { + data.rowNumber = data.rowNumber - adjustCount; + } + else + { + data.columnNumber = data.columnNumber - adjustCount; + } + } + int total = data.rowNumber * data.columnNumber; PropertyHandle headerHandle = crosstab.getModelHandle( ) @@ -1749,7 +1750,7 @@ else if ( pos == -2 axisType = ICrosstabConstants.COLUMN_AXIS_TYPE; } } - + boolean isAdd = total - crosstab.getHeaderCount( ) > 0; if ( !isMoveDimension && !needUpdateHeaderCell( crosstab, isAdd ) ) { diff --git a/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/de/internal/CrosstabReportItemTask.java b/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/de/internal/CrosstabReportItemTask.java index fd1dee7b678..7cfb4cfc9fb 100644 --- a/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/de/internal/CrosstabReportItemTask.java +++ b/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/de/internal/CrosstabReportItemTask.java @@ -39,8 +39,6 @@ import org.eclipse.birt.report.model.api.olap.DimensionHandle; import org.eclipse.birt.report.model.api.olap.LevelHandle; -import com.ibm.icu.util.TaiwanCalendar; - /** * CrosstabReportItemTask */ @@ -755,7 +753,8 @@ private void moveDimension( DimensionViewHandle dimensionView, int pos = CrosstabModelUtil.findPreLevelCount( clonedDimensionView ); for (int i=0; i + + diff --git a/xtab/org.eclipse.birt.report.item.crosstab.ui/src/org/eclipse/birt/report/item/crosstab/internal/ui/CrosstabCellMenuAdapterFactory.java b/xtab/org.eclipse.birt.report.item.crosstab.ui/src/org/eclipse/birt/report/item/crosstab/internal/ui/CrosstabCellMenuAdapterFactory.java index b0f0afa26bb..326c9a74ea4 100644 --- a/xtab/org.eclipse.birt.report.item.crosstab.ui/src/org/eclipse/birt/report/item/crosstab/internal/ui/CrosstabCellMenuAdapterFactory.java +++ b/xtab/org.eclipse.birt.report.item.crosstab.ui/src/org/eclipse/birt/report/item/crosstab/internal/ui/CrosstabCellMenuAdapterFactory.java @@ -134,11 +134,6 @@ protected void buildShowMenu( IMenuManager menu, } - private void createCrosstabHeaderCellMenu(IMenuManager menu, Object firstSelectedObj, - IContributionItem beforeThis) - { - - } private void createLevelMenu( IMenuManager menu, Object firstSelectedObj, IContributionItem beforeThis ) { diff --git a/xtab/org.eclipse.birt.report.item.crosstab.ui/src/org/eclipse/birt/report/item/crosstab/internal/ui/editors/commands/AddDimensionViewHandleCommand.java b/xtab/org.eclipse.birt.report.item.crosstab.ui/src/org/eclipse/birt/report/item/crosstab/internal/ui/editors/commands/AddDimensionViewHandleCommand.java index 8492f8e86a1..e9406b169f9 100644 --- a/xtab/org.eclipse.birt.report.item.crosstab.ui/src/org/eclipse/birt/report/item/crosstab/internal/ui/editors/commands/AddDimensionViewHandleCommand.java +++ b/xtab/org.eclipse.birt.report.item.crosstab.ui/src/org/eclipse/birt/report/item/crosstab/internal/ui/editors/commands/AddDimensionViewHandleCommand.java @@ -177,6 +177,8 @@ public void execute( ) List newAction = ModelUtil.cloneStructList( source ); dataHandle.setAction( (Action) newAction.get( 0 ) ); } + + CrosstabAdaptUtil.addLabelToHeader( levelViewHandle ); } } diff --git a/xtab/org.eclipse.birt.report.item.crosstab.ui/src/org/eclipse/birt/report/item/crosstab/internal/ui/editors/model/CrosstabAdaptUtil.java b/xtab/org.eclipse.birt.report.item.crosstab.ui/src/org/eclipse/birt/report/item/crosstab/internal/ui/editors/model/CrosstabAdaptUtil.java index 06f87ca76b0..561b783a5c2 100644 --- a/xtab/org.eclipse.birt.report.item.crosstab.ui/src/org/eclipse/birt/report/item/crosstab/internal/ui/editors/model/CrosstabAdaptUtil.java +++ b/xtab/org.eclipse.birt.report.item.crosstab.ui/src/org/eclipse/birt/report/item/crosstab/internal/ui/editors/model/CrosstabAdaptUtil.java @@ -678,6 +678,9 @@ else if (DesignChoiceConstants.COLUMN_DATA_TYPE_STRING.equals( type )) } } + /**Add all the label to the header cell + * @param reportHandle + */ public static void addAllHeaderLabel(CrosstabReportItemHandle reportHandle) { for (int i=0; i