UIUtil.bindHelp(parent,IHelpContextIds.COLUMNBINDING_DIALOG_ID);
	protected Control createDialogArea( Composite parent )	{		Composite parentComposite = (Composite) super.createDialogArea( parent );		if ( this.canSelect )		{			/**			 * Label & button			 */			Composite composite = new Composite( parentComposite, SWT.NONE );			composite.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) );			composite.setLayout( UIUtil.createGridLayoutWithoutMargin( 2, false ) );			CLabel warnLabel = new CLabel( composite, SWT.NONE );			warnLabel.setImage( PlatformUI.getWorkbench( )					.getSharedImages( )					.getImage( ISharedImages.IMG_OBJS_WARN_TSK ) );			warnLabel.setText( WARN_COLUMN_BINDINGS );			GridData gd = new GridData( GridData.FILL_HORIZONTAL );			gd.horizontalSpan = 2;			warnLabel.setLayoutData( gd );			Label label = new Label( composite, SWT.NONE );			label.setText( LABEL_COLUMN_BINDINGS );			label.setLayoutData( new GridData( GridData.BEGINNING ) );			// add data set combo selection.			final CCombo combo = new CCombo( composite, SWT.READ_ONLY					| SWT.BORDER );			combo.setBackground( PlatformUI.getWorkbench( )					.getDisplay( )					.getSystemColor( SWT.COLOR_LIST_BACKGROUND ) );			String[] dataSets = ChoiceSetFactory.getDataSets( );			String[] newList = new String[dataSets.length + 1];			newList[0] = NONE;			System.arraycopy( dataSets, 0, newList, 1, dataSets.length );			combo.setItems( newList );			String dataSetName = getDataSetName( );			combo.deselectAll( );			combo.setText( dataSetName );			combo.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) );			gd = new GridData( );			gd.widthHint = 250;			combo.setLayoutData( gd );			combo.addSelectionListener( new SelectionAdapter( ) {				public void widgetSelected( SelectionEvent event )				{					String value = combo.getText( );					if ( value.equals( NONE ) )					{						value = null;					}					int rCode = canChangeDataSet( value );					if ( rCode == 2 )					{						combo.setText( getDataSetName( ) );					}					else					{						try						{							DataSetHandle dataSet = null;							if ( value != null )							{								dataSet = inputElement.getModuleHandle( )										.findDataSet( value );							}							inputElement.setDataSet( dataSet );							getParameterBindingPropertyHandle( ).clearValue( );							if ( rCode == 0 )							{								inputElement.getColumnBindings( ).clearValue( );							}							generateBindingColumns( );							setHihtLightColumn( );						}						catch ( SemanticException e )						{							ExceptionHandler.handle( e );						}					}				}			} );		}		/**		 * 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,				COLUMN_AGGREGATEON		};		columnWidth = new int[]{				canSelect ? 25 : 20, 150, 70, 150, 150,		};		groups = new String[groupList.size( ) + 1];		groups[0] = ALL;		for ( int i = 0; i < groupList.size( ); i++ )		{			groups[i + 1] = ( (GroupHandle) groupList.get( i ) ).getName( );		}		cellEditors = new CellEditor[]{				null,				new TextCellEditor( table ),				new ComboBoxCellEditor( table, dataTypeDisplayNames ),				expressionCellEditor,				new ComboBoxCellEditor( table, groups, SWT.READ_ONLY ),		};		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 == dummyChoice && !existHighLightColumn( ) )					{						bindingTable.refresh( );						setHihtLightColumn( );					}					else if ( obj instanceof ComputedColumnHandle )					{						ComputedColumnHandle column = (ComputedColumnHandle) obj;						BindingExpressionProvider provider = new BindingExpressionProvider( column.getElementHandle( ) );						provider.addFilter( new ComputedColumnExpressionFilter( bindingTable ) );						expressionCellEditor.setExpressionProvider( provider );					}				}			}		} );		// initTableCellColor( );		return parentComposite;	}