null, COLUMN_NAME, COLUMN_DATATYPE, COLUMN_EXPRESSION
null, COLUMN_NAME, COLUMN_DATATYPE, COLUMN_EXPRESSION, COLUMN_AGGREGATEON
	protected Control createDialogArea( Composite parent )	{		Composite parentComposite = (Composite) super.createDialogArea( parent );		/**		 * Label & button		 */		Composite composite = new Composite( parentComposite, SWT.NONE );		composite.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) );		composite.setLayout( UIUtil.createGridLayoutWithoutMargin( 2, false ) );		Label label = new Label( composite, SWT.NONE );		label.setText( LABEL_COLUMN_BINDINGS );		label.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) );		generateButton = new Button( composite, SWT.PUSH );		generateButton.setText( BUTTON_GENERATE );		generateButton.setLayoutData( new GridData( ) );		generateButton.addSelectionListener( new SelectionAdapter( ) {			public void widgetSelected( SelectionEvent e )			{				try				{					generateBindingColumns( );				}				catch ( SemanticException e1 )				{					ExceptionHandler.handle( e1 );				}			}		} );		/**		 * Binding table		 */		Table table = new Table( parentComposite, SWT.SINGLE				| SWT.FULL_SELECTION				| SWT.BORDER				| ( canSelect ? SWT.CHECK : 0 ) );		GridData gd = new GridData( GridData.FILL_BOTH );		gd.heightHint = 200;		table.setLayoutData( gd );		table.setLinesVisible( true );		table.setHeaderVisible( true );		table.addKeyListener( new KeyAdapter( ) {			/**			 * @see org.eclipse.swt.events.KeyAdapter#keyReleased(org.eclipse.swt.events.KeyEvent)			 */			public void keyReleased( KeyEvent e )			{				// If Delete pressed, delete the selected row				if ( e.keyCode == SWT.DEL )				{					IStructuredSelection selection = (IStructuredSelection) bindingTable.getSelection( );					if ( selection.getFirstElement( ) instanceof ComputedColumnHandle )					{						deleteRow( (ComputedColumnHandle) selection.getFirstElement( ) );					}				}			}		} );		String[] columns = null;		int[] columnWidth = null;		CellEditor[] cellEditors;		expressionCellEditor = new ExpressionCellEditor( table );		columns = new String[]{				null, COLUMN_NAME, COLUMN_DATATYPE, COLUMN_EXPRESSION		};		columnWidth = new int[]{				canSelect ? 25 : 20, 150, 70, 150,		};		cellEditors = new CellEditor[]{				null,				new TextCellEditor( table ),				new ComboBoxCellEditor( table, dataTypeDisplayNames ),				expressionCellEditor		};		for ( int i = 0; i < columns.length; i++ )		{			TableColumn column = new TableColumn( table, SWT.LEFT );			column.setResizable( columns[i] != null );			if ( columns[i] != null )			{				column.setText( columns[i] );			}			column.setWidth( columnWidth[i] );		}		if ( canSelect )		{			bindingTable = new CheckboxTableViewer( table );			( (CheckboxTableViewer) bindingTable ).addCheckStateListener( new ICheckStateListener( ) {				public void checkStateChanged( CheckStateChangedEvent event )				{					if ( event.getElement( ) instanceof ComputedColumnHandle )					{						ComputedColumnHandle handle = (ComputedColumnHandle) event.getElement( );						if ( handle.getName( ).equals( selectedColumnName ) )						{							selectedColumnName = null;						}						else						{							selectedColumnName = handle.getName( );						}						updateSelection( );						updateButtons( );					}					else					{						( (CheckboxTableViewer) bindingTable ).setChecked( dummyChoice,								false );					}				}			} );		}		else		{			bindingTable = new TableViewer( table );		}		bindingTable.setCellEditors( cellEditors );		bindingTable.setColumnProperties( columns );		bindingTable.setContentProvider( contentProvider );		bindingTable.setLabelProvider( labelProvider );		bindingTable.setCellModifier( cellModifier );		bindingTable.setInput( inputElement );		bindingTable.addSelectionChangedListener( new ISelectionChangedListener( ) {			public void selectionChanged( SelectionChangedEvent event )			{				// updateTableButtons( );				if ( !bindingTable.getSelection( ).isEmpty( ) )				{					Object obj = ( (IStructuredSelection) bindingTable.getSelection( ) ).getFirstElement( );					if ( obj instanceof ComputedColumnHandle )					{						ComputedColumnHandle column = (ComputedColumnHandle) obj;						BindingExpressionProvider provider = new BindingExpressionProvider( column.getElementHandle( ) );						provider.addFilter( new ComputedColumnExpressionFilter( bindingTable ) );						expressionCellEditor.setExpressionProvider( provider );					}				}			}		} );		return parentComposite;	}