Skip to content

Commit

Permalink
Allow filter to be defined in aggregation dialog (T64819)
Browse files Browse the repository at this point in the history
  • Loading branch information
ning.zhang authored and dgao committed Aug 27, 2013
1 parent 168c1f7 commit 15c4001
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 71 deletions.
Expand Up @@ -526,7 +526,7 @@ private void initExpressionButton( ExpressionHandle expressionHandle,

private void initFilter( )
{
if ( binding != null && txtFilter != null)
if ( binding != null )
{
ExpressionHandle expressionHandle = binding.getExpressionProperty( ComputedColumn.FILTER_MEMBER );
initExpressionButton( expressionHandle, txtFilter );
Expand Down Expand Up @@ -1017,10 +1017,7 @@ public void widgetSelected( SelectionEvent e )
cmbType.setEnabled( false );
cmbFunction.setEnabled( false );
// cmbDataField.setEnabled( false );
if(txtFilter != null)
{
txtFilter.setEnabled( false );
}
txtFilter.setEnabled( false );
paramsComposite.setEnabled( false );
cmbGroup.setEnabled( false );
btnTable.setEnabled( false );
Expand All @@ -1030,33 +1027,24 @@ public void widgetSelected( SelectionEvent e )

private void createFilterCondition( Composite composite,GridData gd)
{
if(!isExtendsDataSet())
{
new Label( composite, SWT.NONE ).setText( FILTER_CONDITION );
txtFilter = new Text( composite, SWT.BORDER | SWT.MULTI );
gd = new GridData( GridData.FILL_HORIZONTAL );
gd.heightHint = txtFilter.computeSize( SWT.DEFAULT, SWT.DEFAULT ).y
- txtFilter.getBorderWidth( )
* 2;
gd.horizontalSpan = 2;
txtFilter.setLayoutData( gd );
new Label( composite, SWT.NONE ).setText( FILTER_CONDITION );
txtFilter = new Text( composite, SWT.BORDER | SWT.MULTI );
gd = new GridData( GridData.FILL_HORIZONTAL );
gd.heightHint = txtFilter.computeSize( SWT.DEFAULT, SWT.DEFAULT ).y
- txtFilter.getBorderWidth( )
* 2;
gd.horizontalSpan = 2;
txtFilter.setLayoutData( gd );

txtFilter.addModifyListener( new ModifyListener( ) {

txtFilter.addModifyListener( new ModifyListener( ) {

public void modifyText( ModifyEvent arg0 )
{
modifyDialogContent( );
validate( );
}
} );
createExpressionButton( composite, txtFilter );
}
}


private boolean isExtendsDataSet()
{
return ExtendedDataModelUIAdapterHelper.isBoundToExtendedData(getBindingHolder());
public void modifyText( ModifyEvent arg0 )
{
modifyDialogContent( );
validate( );
}
} );
createExpressionButton( composite, txtFilter );
}

private void createCommonSection( Composite composite )
Expand Down Expand Up @@ -1529,7 +1517,7 @@ public boolean differs( ComputedColumnHandle binding )
{
}

if (txtFilter != null && !expressionEquals( binding.getExpressionProperty( ComputedColumn.FILTER_MEMBER ),
if ( !expressionEquals( binding.getExpressionProperty( ComputedColumn.FILTER_MEMBER ),
txtFilter ) )
return true;
if ( btnTable.getSelection( ) == ( binding.getAggregateOn( ) != null ) )
Expand Down Expand Up @@ -1702,11 +1690,9 @@ public ComputedColumnHandle editBinding( ComputedColumnHandle binding )
// binding.setExpression( cmbDataField.getText( ) );
binding.setAggregateFunction( getFunctionByDisplayName( cmbFunction.getText( ) ).getName( ) );

if(txtFilter != null){
ExpressionButtonUtil.saveExpressionButtonControl( txtFilter,
binding,
ComputedColumn.FILTER_MEMBER );
}
ExpressionButtonUtil.saveExpressionButtonControl( txtFilter,
binding,
ComputedColumn.FILTER_MEMBER );

if ( btnTable.getSelection( ) )
{
Expand Down
Expand Up @@ -44,13 +44,16 @@
import org.eclipse.birt.report.designer.internal.ui.dialogs.ResourceEditDialog;
import org.eclipse.birt.report.designer.internal.ui.dialogs.expression.ExpressionButton;
import org.eclipse.birt.report.designer.internal.ui.extension.ExtendedDataModelUIAdapterHelper;
import org.eclipse.birt.report.designer.internal.ui.extension.IExtendedDataModelUIAdapter;
import org.eclipse.birt.report.designer.internal.ui.swt.custom.CLabel;
import org.eclipse.birt.report.designer.internal.ui.swt.custom.MenuButton;
import org.eclipse.birt.report.designer.internal.ui.util.ExpressionButtonUtil;
import org.eclipse.birt.report.designer.internal.ui.util.UIUtil;
import org.eclipse.birt.report.designer.nls.Messages;
import org.eclipse.birt.report.designer.ui.ReportPlatformUIImages;
import org.eclipse.birt.report.designer.ui.dialogs.ExpressionProvider;
import org.eclipse.birt.report.designer.ui.dialogs.IExpressionProvider;
import org.eclipse.birt.report.designer.ui.expressions.ExpressionFilter;
import org.eclipse.birt.report.designer.ui.util.ExceptionUtil;
import org.eclipse.birt.report.designer.ui.views.attributes.providers.ChoiceSetFactory;
import org.eclipse.birt.report.designer.util.ColorManager;
Expand Down Expand Up @@ -1571,12 +1574,9 @@ private List getCrosstabViewHandleLevels( CrosstabReportItemHandle xtab,

private void initFilter( )
{
if( binding != null && txtFilter != null)
{
ExpressionButtonUtil.initExpressionButtonControl( txtFilter,
binding,
ComputedColumn.FILTER_MEMBER );
}
ExpressionButtonUtil.initExpressionButtonControl( txtFilter,
binding,
ComputedColumn.FILTER_MEMBER );
}

private void initFunction( )
Expand Down Expand Up @@ -1865,7 +1865,6 @@ private IBinding[] getCrosstabBindings( CrosstabReportItemHandle xtabHandle )
ModuleHandle module = ( (ExtendedItemHandle) xtabHandle.getModelHandle( ) ).getModuleHandle( );

List<IBinding> bindingList = new ArrayList<IBinding>( );
boolean isBoundToLinkedDataSet = CrosstabUtil.isBoundToLinkedDataSet( xtabHandle ) ;

if ( bindingItr != null )
{
Expand Down Expand Up @@ -2081,11 +2080,6 @@ public void widgetSelected( SelectionEvent e )

private void createFilterCondition(Composite composite,GridData gridData)
{
//if use link data set , not create the filter expression
if(ExtendedDataModelUIAdapterHelper.isBoundToExtendedData(getBindingHolder()))
{
return;
}
new Label( composite, SWT.NONE ).setText( FILTER_CONDITION );
txtFilter = new Text( composite, SWT.BORDER | SWT.MULTI );
gridData = new GridData( GridData.FILL_HORIZONTAL );
Expand All @@ -2103,30 +2097,61 @@ public void modifyText( ModifyEvent e )
} );

// createExpressionButton( composite, txtFilter );
IExpressionProvider filterExpressionProvider = new CrosstabAggregationExpressionProvider( this.bindingHolder,
this.binding ) {
IExpressionProvider filterExpressionProvider;
IExtendedDataModelUIAdapter adapter = ExtendedDataModelUIAdapterHelper.getInstance( ).getAdapter( );
if(adapter != null && adapter.getBoundExtendedData( this.bindingHolder ) != null)
{
filterExpressionProvider = adapter.getBindingExpressionProvider( this.bindingHolder, this.binding );
((ExpressionProvider)filterExpressionProvider).addFilter( new ExpressionFilter( ) {

protected List getChildrenList( Object parent )
{
List children = super.getChildrenList( parent );
List retValue = new ArrayList( );
retValue.addAll( children );
if ( parent instanceof MeasureGroupHandle )
public boolean select( Object parentElement, Object element )
{
for ( int i = 0; i < children.size( ); i++ )
if ( parentElement instanceof String )
{
Object obj = children.get( i );
if ( obj instanceof MeasureHandle
&& ( (MeasureHandle) obj ).isCalculated( ) )
String parent = (String) parentElement;
if ( ExpressionFilter.CATEGORY.equals( parent ) )
{
retValue.remove( obj );
if ( element instanceof String )
{
String elementString = (String) element;
if ( ExpressionProvider.COLUMN_BINDINGS.equals( elementString ) )
{
return false;
}
}
}
}
return true;
}
} );
}
else
{
filterExpressionProvider = new CrosstabAggregationExpressionProvider( this.bindingHolder,
this.binding ) {

return retValue;
}
};
protected List getChildrenList( Object parent )
{
List children = super.getChildrenList( parent );
List retValue = new ArrayList( );
retValue.addAll( children );
if ( parent instanceof MeasureGroupHandle )
{
for ( int i = 0; i < children.size( ); i++ )
{
Object obj = children.get( i );
if ( obj instanceof MeasureHandle
&& ( (MeasureHandle) obj ).isCalculated( ) )
{
retValue.remove( obj );
}
}
}

return retValue;
}
};
}
ExpressionButtonUtil.createExpressionButton( composite,
txtFilter,
filterExpressionProvider,
Expand Down Expand Up @@ -2536,7 +2561,7 @@ public boolean differs( ComputedColumnHandle binding )
catch ( AdapterException e )
{
}
if (txtFilter != null && !exprEquals( (Expression) binding.getExpressionProperty( ComputedColumn.FILTER_MEMBER )
if (!exprEquals( (Expression) binding.getExpressionProperty( ComputedColumn.FILTER_MEMBER )
.getValue( ),
ExpressionButtonUtil.getExpression( txtFilter ) ) )
return true;
Expand Down Expand Up @@ -2675,11 +2700,9 @@ public ComputedColumnHandle editBinding( ComputedColumnHandle binding )
}

binding.setAggregateFunction( getFunctionByDisplayName( cmbFunction.getText( ) ).getName( ) );
if(txtFilter != null){
ExpressionButtonUtil.saveExpressionButtonControl( txtFilter,
binding,
ComputedColumn.FILTER_MEMBER );
}
ExpressionButtonUtil.saveExpressionButtonControl( txtFilter,
binding,
ComputedColumn.FILTER_MEMBER );

binding.clearAggregateOnList( );
// if (!isTimePeriod( ))
Expand Down

0 comments on commit 15c4001

Please sign in to comment.