[190067] Truncated string in Axis2 preference page.
diff --git a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/plugin/messages/Axis2CoreUI.properties b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/plugin/messages/Axis2CoreUI.properties
index 1a689e8..3d0c145 100644
--- a/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/plugin/messages/Axis2CoreUI.properties
+++ b/bundles/org.eclipse.jst.ws.axis2.core/src/org/eclipse/jst/ws/axis2/core/plugin/messages/Axis2CoreUI.properties
@@ -17,6 +17,7 @@
 # 20070511   186440 sandakith@wso2.com - Lahiru Sandakith fix 186440
 # 20070510   172926 sandakith@wso2.com - Lahiru Sandakith, Fix 172926 Use Util Classes
 # 20070517   187307 sandakith@wso2.com - Lahiru Sandakith, Fix 187307 Property File Fix
+# 20070604   190067 pmoogk@ca.ibm.com - Peter Moogk
 ###############################################################################
 
 LABEL_BROUSE=Browse
@@ -26,7 +27,7 @@
 LABEL_DATABINDING=Default Databinding
 LABEL_AAR_EXTENTION=AAR default extension
 LABEL_AXIS2_RUNTIME_LOAD=Axis2 runtime loaded successfully  !!!
-LABEL_AXIS2_RUNTIME_LOAD_ERROR=Error occurred during loading Axis2 Runtime\n Please select the correct Axis2 runtime folder !!
+LABEL_AXIS2_RUNTIME_LOAD_ERROR=Error occurred during loading Axis2 Runtime. Please select the correct Axis2 runtime folder !!
 LABEL_GENERATE_TESTCASE_CAPTION=Generate test case to test the service
 LABEL_GENERATE_SERVERSIDE_INTERFACE=Generate an interface for skeleton
 LABEL_GENERATE_ALL=Generate all types for all elements referred by schemas
diff --git a/bundles/org.eclipse.jst.ws.axis2.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/preferences/Axis2RuntimePreferencePage.java b/bundles/org.eclipse.jst.ws.axis2.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/preferences/Axis2RuntimePreferencePage.java
index 8445604..664150a 100644
--- a/bundles/org.eclipse.jst.ws.axis2.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/preferences/Axis2RuntimePreferencePage.java
+++ b/bundles/org.eclipse.jst.ws.axis2.ui/src/org/eclipse/jst/ws/internal/axis2/consumption/ui/preferences/Axis2RuntimePreferencePage.java
@@ -10,14 +10,17 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20070130   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduse the Axis2 
- * 										  runtime to the framework for 168762
+ *                      runtime to the framework for 168762
  * 20070425   183046 sandakith@wso2.com - Lahiru Sandakith
  * 20070501   180284 sandakith@wso2.com - Lahiru Sandakith
  * 20070511   186440 sandakith@wso2.com - Lahiru Sandakith fix 186440
  * 20070513   186430 sandakith@wso2.com - Lahiru Sandakith, fix for 186430
- *										  Text not accessible on AXIS2 wizard pages.
+ *                      Text not accessible on AXIS2 wizard pages.
  * 20070516   183147 sandakith@wso2.com - Lahiru Sandakith Fix for the persisting DBCS paths
  * 20070523   174876 sandakith@wso2.com - Lahiru Sandakith, Persist Preferences inside Framework
+ * 20070603   188740 sandakith@wso2.com - Lahiru Sandakith, 
+ * 20070604   190505 sandakith@wso2.com - Lahiru Sandakith, 
+ * 20070604   190067 pmoogk@ca.ibm.com - Peter Moogk
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis2.consumption.ui.preferences;
 
@@ -37,11 +40,13 @@
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.DirectoryDialog;
-import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.TabFolder;
@@ -51,405 +56,458 @@
 import org.eclipse.ui.IWorkbenchPreferencePage;
 
 public class Axis2RuntimePreferencePage extends PreferencePage implements
-		IWorkbenchPreferencePage {
+    IWorkbenchPreferencePage {
 
-	private Button browseButton; 
-	private Text axis2Path; 
-	private Text statusLabel;
-	@SuppressWarnings("unused")
-	private IStatus status = Status.OK_STATUS;
-	private boolean webappExist = false;
-	private boolean isWar = false;
-	private String statusBanner = null;
-	Axis2EmitterContext context;
-	
+  private Button browseButton; 
+  private Text axis2Path; 
+  private Text statusLabel;
+  @SuppressWarnings("unused")
+  private IStatus status = Status.OK_STATUS;
+  private boolean webappExist = false;
+  private boolean isWar = false;
+  private String statusBanner = null;
+  Axis2EmitterContext context;
+  private Combo aarExtensionCombo; 
+  private Combo serviceDatabindingCombo;
+  private Combo clientDatabindingCombo;
+  
 
-	  
-	protected Control createContents(Composite superparent) {
-		context = WebServiceAxis2CorePlugin.getDefault().getAxisEmitterContext();
-		status = Status.OK_STATUS;
-		
-		final Composite  mainComp = new Composite( superparent, SWT.NONE );
-		
-		TabFolder axis2PreferenceTab = new TabFolder(mainComp, SWT.NONE);
-		TabItem runtimeInstalLocationItem = new TabItem(axis2PreferenceTab, SWT.NONE);
-		runtimeInstalLocationItem.setText(Axis2CoreUIMessages.AXIS2_RUNTIME);
-		runtimeInstalLocationItem.setToolTipText(Axis2CoreUIMessages.AXIS2_RUNTIME_TOOLTIP);
-		
-		//-----------------------------Axis2 Rintume Location Group------------------------------//
-		Group runtimeGroup = new Group(axis2PreferenceTab, SWT.NONE);
-		runtimeGroup.setText(Axis2CoreUIMessages.AXIS2_RUNTIME_LOCATION);
-		runtimeInstalLocationItem.setControl(runtimeGroup);
-		runtimeGroup.setToolTipText(Axis2CoreUIMessages.AXIS2_RUNTIME_TOOLTIP);
-		
-		Label label = new Label( runtimeGroup, SWT.NONE );
-		label.setText( Axis2CoreUIMessages.AXIS2_LOCATION );
-		label.setLocation(10,30);
-		label.setSize(100,20);
-		
-		axis2Path = new Text( runtimeGroup, SWT.BORDER );
-		String serverPath = null;
-		if (!(context.getAxis2RuntimeLocation()==null)){
-		    	serverPath = context.getAxis2RuntimeLocation();
-		    	axis2Path.setText(serverPath);
-		}else{
-			//never come here
-		}
+    
+  protected Control createContents(Composite superparent) {
+    context = WebServiceAxis2CorePlugin.getDefault().getAxisEmitterContext();
+    status = Status.OK_STATUS;
+    
+    final Composite  mainComp = new Composite( superparent, SWT.NONE );
+    
+    mainComp.setLayout( new GridLayout() );
+    mainComp.setLayoutData( new GridData( GridData.FILL_BOTH ) );
+    
+    TabFolder axis2PreferenceTab = new TabFolder(mainComp, SWT.NONE);
+    
+    axis2PreferenceTab.setLayoutData( new GridData( GridData.FILL_BOTH ) );
+    
+    //-----------------------------Axis2 Runtime Location Group------------------------------//
+    TabItem runtimeInstalLocationItem = new TabItem(axis2PreferenceTab, SWT.NONE);
+    runtimeInstalLocationItem.setText(Axis2CoreUIMessages.AXIS2_RUNTIME);
+    runtimeInstalLocationItem.setToolTipText(Axis2CoreUIMessages.AXIS2_RUNTIME_TOOLTIP);
+    
+    final Composite runtimeGroup = new Composite(axis2PreferenceTab, SWT.NONE);
+    
+    runtimeInstalLocationItem.setControl(runtimeGroup);
+    runtimeGroup.setToolTipText(Axis2CoreUIMessages.AXIS2_RUNTIME_TOOLTIP);
+    
+    GridLayout layout = new GridLayout();
+    
+    layout.numColumns = 3;
+    layout.marginHeight = 10;
+    runtimeGroup.setLayout( layout );
+    runtimeGroup.setLayoutData( new GridData( GridData.FILL_BOTH ) );
 
-		webappExist =runtimeExist(serverPath);
-		if(isWar){
-			updateWarStatus(true);
-		}else{
-			updateWarStatus(false);
-		}
-		axis2Path.setLocation(110,30);
-		axis2Path.setSize(400, 20);
-		axis2Path.addModifyListener( new ModifyListener(){
-			public void modifyText(ModifyEvent e){
-				context.setAxis2RuntimeLocation( axis2Path.getText() );
-				webappExist =runtimeExist(axis2Path.getText());
-				storeValues();
-				status = RuntimePropertyUtils.writeServerPathToPropertiesFile(
-						axis2Path.getText());
-				if (webappExist) {
-					status = Status.OK_STATUS;
-					statusUpdate(true);
-				}else{
-					status = Status.CANCEL_STATUS;
-					statusUpdate(false);
-				}
-			}
-		});
-		browseButton = new Button( runtimeGroup, SWT.NONE );
-		browseButton.setText(Axis2CoreUIMessages.LABEL_BROUSE);
-		browseButton.setLocation(520,30);
-		browseButton.setSize(70, 20);
-		browseButton.addSelectionListener( new SelectionAdapter()
-		{
-			public void widgetSelected(SelectionEvent e)
-			{
-				handleBrowse(mainComp.getShell());
-			}     
-		}); 
-	
-		if(axis2Path.getText().equals(Axis2CoreUIMessages.NULL)){
-			status = new Status( IStatus.ERROR, 
-					"id", 
-					0, 
-					Axis2CoreUIMessages.ERROR_INVALID_AXIS2_SERVER_LOCATION, 
-					null ); 
-		}
-		
-		
-		statusLabel = new Text(runtimeGroup,SWT.BACKGROUND | SWT.READ_ONLY | SWT.CENTER);
-		statusLabel.setLocation(20,100);
-		statusLabel.setSize(560,40);
-		
-		if (axis2Path.getText().equals("")) {
-			statusBanner = Axis2CoreUIMessages.LABEL_AXIS2_RUNTIME_NOT_EXIT;
-		} else if ( !axis2Path.getText().equals("") && (!webappExist)) {
-			statusBanner = Axis2CoreUIMessages.LABEL_AXIS2_RUNTIME_LOAD_ERROR;
-		}else{
-			statusBanner = Axis2CoreUIMessages.LABEL_AXIS2_RUNTIME_LOAD;
-		}
-		statusLabel.setText(statusBanner);
-		
-		webappExist =runtimeExist(axis2Path.getText());
-		
-		TabItem codegenPreferencesItem = new TabItem(axis2PreferenceTab, SWT.NONE);
-		codegenPreferencesItem.setText(Axis2CoreUIMessages.AXIS2_PREFERENCES);
-		codegenPreferencesItem.setToolTipText(Axis2CoreUIMessages.AXIS2_PREFERENCES_TOOLTIP);
-		
-		//--------------------------------Axis2 Runtime Preferences------------------------------//
-		
-		Group codegenGroup = new Group(axis2PreferenceTab, SWT.NONE);
-		codegenGroup.setText(Axis2CoreUIMessages.AXIS2_RUNTIME_PREFERENCES);
-		codegenPreferencesItem.setControl(codegenGroup);
-		codegenGroup.setToolTipText(Axis2CoreUIMessages.AXIS2_PREFERENCES_TOOLTIP);
-		
-		//Service Codegen Options
-		Text serviceCodegenLabel = new Text(codegenGroup,SWT.BACKGROUND | SWT.READ_ONLY);
-		serviceCodegenLabel.setText( Axis2CoreUIMessages.LABEL_WEB_SERVICE_CODEGEN);
-		serviceCodegenLabel.setLocation(10,30);
-		serviceCodegenLabel.setSize(220,20);
-		
-		//Data binding
-		Label databindingLabel = new Label( codegenGroup, SWT.NONE );
-		databindingLabel.setText( Axis2CoreUIMessages.LABEL_DATABINDING);
-		databindingLabel.setLocation(10,60);
-		databindingLabel.setSize(200,20);
-		
-		final Text databindingText = new Text( codegenGroup,SWT.BORDER );
-		databindingText.setText(context.getServiceDatabinding());
-		databindingText.addModifyListener( new ModifyListener() {
-			public void modifyText(ModifyEvent e){
-				context.setServiceDatabinding(databindingText.getText() );
-			}
-		});
-		databindingText.setLocation(220,60);
-		databindingText.setSize(100,20);
-		
-		//model.setServerXMLCheck(true);
+        
+    Label label = new Label( runtimeGroup, SWT.NONE );
+    label.setText( Axis2CoreUIMessages.AXIS2_RUNTIME_LOCATION );
+    
+    axis2Path = new Text( runtimeGroup, SWT.BORDER );
+    String serverPath = null;
+    if (!(context.getAxis2RuntimeLocation()==null)){
+          serverPath = context.getAxis2RuntimeLocation();
+          axis2Path.setText(serverPath);
+    }else{
+      //never come here
+    }
 
-		//the server side interface option
-		final Button generateServerSideInterfaceCheckBoxButton = 
-							new Button(codegenGroup, SWT.CHECK);
-		generateServerSideInterfaceCheckBoxButton.setText(
-				Axis2CoreUIMessages.LABEL_GENERATE_SERVERSIDE_INTERFACE);
-		generateServerSideInterfaceCheckBoxButton.setSelection(
-									context.isServiceInterfaceSkeleton());
-		generateServerSideInterfaceCheckBoxButton.addSelectionListener(new SelectionListener() {
-			public void widgetSelected(SelectionEvent e) {
-				context.setServiceInterfaceSkeleton(
-						generateServerSideInterfaceCheckBoxButton.getSelection());
-			}
-			public void widgetDefaultSelected(SelectionEvent e) {
-			}
-		});
-		generateServerSideInterfaceCheckBoxButton.setLocation(10, 90);
-		generateServerSideInterfaceCheckBoxButton.setSize(300, 15);
+    webappExist =runtimeExist(serverPath);
+    if(isWar){
+      updateWarStatus(true);
+    }else{
+      updateWarStatus(false);
+    }
+    
+    GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+    
+    gd.minimumWidth = 40;
+    axis2Path.setLayoutData(gd);
+    axis2Path.addModifyListener( new ModifyListener(){
+      public void modifyText(ModifyEvent e){
+        context.setAxis2RuntimeLocation( axis2Path.getText() );
+        webappExist =runtimeExist(axis2Path.getText());
+        storeValues();
+        status = RuntimePropertyUtils.writeServerPathToPropertiesFile(
+            axis2Path.getText());
+        if (webappExist) {
+          status = Status.OK_STATUS;
+          statusUpdate(true);
+        }else{
+          status = Status.CANCEL_STATUS;
+          statusUpdate(false);
+        }
+        
+        runtimeGroup.layout();
+      }
+    });
+    
+    browseButton = new Button( runtimeGroup, SWT.NONE );
+    browseButton.setText(Axis2CoreUIMessages.LABEL_BROUSE);
+    
+    browseButton.addSelectionListener( new SelectionAdapter()
+    {
+      public void widgetSelected(SelectionEvent e)
+      {
+        handleBrowse(mainComp.getShell());
+      }     
+    }); 
+  
+    if(axis2Path.getText().equals(Axis2CoreUIMessages.NULL)){
+      status = new Status( IStatus.ERROR, 
+          "id", 
+          0, 
+          Axis2CoreUIMessages.ERROR_INVALID_AXIS2_SERVER_LOCATION, 
+          null ); 
+    }
+    
+    Label separator = new Label( runtimeGroup, SWT.NONE);  // Leave some vertical space.
+    
+    gd = new GridData();
+    gd.horizontalSpan = 3;
+    separator.setText( " " );
+    separator.setLayoutData( gd );
+    
+    statusLabel = new Text(runtimeGroup,SWT.BACKGROUND | SWT.READ_ONLY | SWT.CENTER);
+    gd = new GridData();
+    gd.horizontalSpan = 3;
+    gd.horizontalAlignment = GridData.CENTER;
+    statusLabel.setLayoutData( gd );
+    
+    if (axis2Path.getText().equals("")) {
+      statusBanner = Axis2CoreUIMessages.LABEL_AXIS2_RUNTIME_NOT_EXIT;
+    } else if ( !axis2Path.getText().equals("") && (!webappExist)) {
+      statusBanner = Axis2CoreUIMessages.LABEL_AXIS2_RUNTIME_LOAD_ERROR;
+    }else{
+      statusBanner = Axis2CoreUIMessages.LABEL_AXIS2_RUNTIME_LOAD;
+    }
+    statusLabel.setText(statusBanner);
+    
+    webappExist =runtimeExist(axis2Path.getText());
+    
+    //--------------------------------Axis2 Runtime Preferences------------------------------//
+    
+    TabItem codegenPreferencesItem = new TabItem(axis2PreferenceTab, SWT.NONE);
+    codegenPreferencesItem.setText(Axis2CoreUIMessages.AXIS2_PREFERENCES);
+    codegenPreferencesItem.setToolTipText(Axis2CoreUIMessages.AXIS2_PREFERENCES_TOOLTIP);
+    
+    Composite codegenGroup = new Composite(axis2PreferenceTab, SWT.NONE);
+    codegenPreferencesItem.setControl(codegenGroup);
+    codegenGroup.setToolTipText(Axis2CoreUIMessages.AXIS2_PREFERENCES_TOOLTIP);
+    
+    layout = new GridLayout();
+    codegenGroup.setLayout(layout);
+    layout.numColumns = 2;
+    layout.marginHeight = 10;
+    gd = new GridData(GridData.FILL_BOTH);
+    codegenGroup.setLayoutData( gd );
+    
+    //Service Codegen Options
+    Text serviceCodegenLabel = new Text(codegenGroup,SWT.BACKGROUND | SWT.READ_ONLY);
+    serviceCodegenLabel.setText( Axis2CoreUIMessages.LABEL_WEB_SERVICE_CODEGEN);
+    
+    gd = new GridData(GridData.FILL_HORIZONTAL);
+    gd.horizontalSpan = 2;
+    serviceCodegenLabel.setLayoutData(gd);
 
-		// generate all
-		final Button generateAllCheckBoxButton = new Button(codegenGroup, SWT.CHECK);
-		generateAllCheckBoxButton.setSelection(context.isServiceGenerateAll());
-		generateAllCheckBoxButton.setText(Axis2CoreUIMessages.LABEL_GENERATE_ALL);
-		generateAllCheckBoxButton.addSelectionListener(new SelectionListener() {
-			public void widgetSelected(SelectionEvent e) {
-				context.setServiceGenerateAll(generateAllCheckBoxButton.getSelection());
-			}
-			public void widgetDefaultSelected(SelectionEvent e) {
-			}
-		});
-		generateAllCheckBoxButton.setLocation(10, 120);
-		generateAllCheckBoxButton.setSize(350, 15);
-		
-		///////////////////////////////////////////////////////////////////////////////////////////
-		
-		//seperator
-		Label seperatorLabel0 = new Label( codegenGroup, SWT.SEPARATOR|SWT.BORDER);
-		seperatorLabel0.setLocation(10,155);
-		seperatorLabel0.setSize(570,1);
-		
-		///Client Codegen Options
-		Text clientCodegenLabel = new Text(codegenGroup,SWT.BACKGROUND | SWT.READ_ONLY);
-		clientCodegenLabel.setText( Axis2CoreUIMessages.LABEL_WEB_SERVICE_CLIENT_CODEGEN);
-		clientCodegenLabel.setLocation(10,170);
-		clientCodegenLabel.setSize(220,20);
-		
-		//Client type label 
-		Label clientLabel = new Label(codegenGroup, SWT.HORIZONTAL | SWT.NULL);
-		clientLabel.setText(Axis2CoreUIMessages.LABEL_CLIENT_SIDE);
-		clientLabel.setLocation(10,210);
-		clientLabel.setSize(70,20); 
-		
-		//client side buttons
-		final Button syncAndAsyncRadioButton = new Button(codegenGroup, SWT.RADIO);
-		syncAndAsyncRadioButton.setText(Axis2CoreUIMessages.LABEL_SYNC_AND_ASYNC);
-		syncAndAsyncRadioButton.setVisible(true);
-		syncAndAsyncRadioButton.setSelection(
-				((context.isSync() || context.isAsync())==false)
-				?true
-				:(context.isSync()) && context.isAsync());
-		//context.setAsync(syncAndAsyncRadioButton.getSelection());
-		syncAndAsyncRadioButton.addSelectionListener(new SelectionListener() {
-			public void widgetSelected(SelectionEvent e) {
-				context.setAsync(syncAndAsyncRadioButton.getSelection());
-				context.setSync(syncAndAsyncRadioButton.getSelection());
-				
-			}
-			public void widgetDefaultSelected(SelectionEvent e) {
-			}
-		});
-		syncAndAsyncRadioButton.setLocation(80,210);
-		syncAndAsyncRadioButton.setSize(190,20); 
-		
-		final Button syncOnlyRadioButton = new Button(codegenGroup, SWT.RADIO);
-		syncOnlyRadioButton.setText(Axis2CoreUIMessages.LABEL_SYNC);
-		syncOnlyRadioButton.setSelection(context.isSync() && !context.isAsync() );
-		syncOnlyRadioButton.addSelectionListener(new SelectionListener() {
-			public void widgetSelected(SelectionEvent e) {
-				context.setAsync(!syncOnlyRadioButton.getSelection());
-				context.setSync(syncOnlyRadioButton.getSelection());
-			}
-			public void widgetDefaultSelected(SelectionEvent e) {
-			}
-		});
-		syncOnlyRadioButton.setLocation(280,210);
-		syncOnlyRadioButton.setSize(170,20); 
+    //Data binding
+    Label databindingLabel = new Label( codegenGroup, SWT.NONE );
+    databindingLabel.setText( Axis2CoreUIMessages.LABEL_DATABINDING);
+  
+    //Data binding items
+    final String[] databindingItems = {context.getServiceDatabinding().toUpperCase()};
+    
+    serviceDatabindingCombo = new Combo(codegenGroup,SWT.DROP_DOWN | SWT.BORDER | SWT.READ_ONLY);
+    serviceDatabindingCombo.setItems(databindingItems);
+    serviceDatabindingCombo.select(0);
+    context.setServiceDatabinding(serviceDatabindingCombo.getItem(0));
+    serviceDatabindingCombo.addSelectionListener(new SelectionAdapter(){
+        public void widgetSelected(SelectionEvent e) {
+          context.setServiceDatabinding(serviceDatabindingCombo
+              .getItem(serviceDatabindingCombo.getSelectionIndex()));
+        }
+    });
+    
+    //the server side interface option
+    final Button generateServerSideInterfaceCheckBoxButton = 
+              new Button(codegenGroup, SWT.CHECK);
+    generateServerSideInterfaceCheckBoxButton.setText(
+        Axis2CoreUIMessages.LABEL_GENERATE_SERVERSIDE_INTERFACE);
+    generateServerSideInterfaceCheckBoxButton.setSelection(
+                  context.isServiceInterfaceSkeleton());
+    generateServerSideInterfaceCheckBoxButton.addSelectionListener(new SelectionListener() {
+      public void widgetSelected(SelectionEvent e) {
+        context.setServiceInterfaceSkeleton(
+            generateServerSideInterfaceCheckBoxButton.getSelection());
+      }
+      public void widgetDefaultSelected(SelectionEvent e) {
+      }
+    });
+    
+    gd = new GridData(GridData.FILL_HORIZONTAL);
+    gd.horizontalSpan = 2;
+    generateServerSideInterfaceCheckBoxButton.setLayoutData(gd);
 
-		final Button asyncOnlyRadioButton = new Button(codegenGroup, SWT.RADIO);
-		asyncOnlyRadioButton.setText(Axis2CoreUIMessages.LABEL_ASYNC);
-		asyncOnlyRadioButton.setSelection(context.isAsync() && !context.isSync());
-		asyncOnlyRadioButton.addSelectionListener(new SelectionListener() {
-			public void widgetSelected(SelectionEvent e) {
-				context.setAsync(asyncOnlyRadioButton.getSelection());
-				context.setSync(!asyncOnlyRadioButton.getSelection());
-			}
-			public void widgetDefaultSelected(SelectionEvent e) {
-			}
-		});
-		asyncOnlyRadioButton.setLocation(460,210);
-		asyncOnlyRadioButton.setSize(170,20);
-		
-		//Data binding
-		Label clientDatabindingLabel = new Label( codegenGroup, SWT.NONE );
-		clientDatabindingLabel.setText( Axis2CoreUIMessages.LABEL_DATABINDING);
-		clientDatabindingLabel.setLocation(10,240);
-		clientDatabindingLabel.setSize(200,20);
-		
-		final Text databindingText1 = new Text( codegenGroup, SWT.BORDER );
-		databindingText1.setText(context.getClientDatabinding());
-		databindingText1.addModifyListener( new ModifyListener() {
-			public void modifyText(ModifyEvent e){
-				context.setClientDatabinding(databindingText1.getText());
-			}
-		});
-		databindingText1.setLocation(220,240);
-		databindingText1.setSize(100,20);
-		
-		
-		// generate test case option
-		final Button clientTestCaseCheckBoxButton = new Button(codegenGroup, SWT.CHECK);
-		clientTestCaseCheckBoxButton.setText(Axis2CoreUIMessages.LABEL_GENERATE_TESTCASE_CAPTION);
-		clientTestCaseCheckBoxButton.setSelection(context.isClientTestCase());
-		clientTestCaseCheckBoxButton.addSelectionListener(new SelectionListener() {
-			public void widgetSelected(SelectionEvent e) {
-				context.setClientTestCase(clientTestCaseCheckBoxButton.getSelection());
-			}
+    // generate all
+    final Button generateAllCheckBoxButton = new Button(codegenGroup, SWT.CHECK);
+    generateAllCheckBoxButton.setSelection(context.isServiceGenerateAll());
+    generateAllCheckBoxButton.setText(Axis2CoreUIMessages.LABEL_GENERATE_ALL);
+    generateAllCheckBoxButton.addSelectionListener(new SelectionListener() {
+      public void widgetSelected(SelectionEvent e) {
+        context.setServiceGenerateAll(generateAllCheckBoxButton.getSelection());
+      }
+      public void widgetDefaultSelected(SelectionEvent e) {
+      }
+    });
+    
+    gd = new GridData(GridData.FILL_HORIZONTAL);
+    gd.horizontalSpan = 2;
+    generateAllCheckBoxButton.setLayoutData(gd);
 
-			public void widgetDefaultSelected(SelectionEvent e) {
-			}
-		});
-		clientTestCaseCheckBoxButton.setLocation(10,270);
-		clientTestCaseCheckBoxButton.setSize(300, 15);
+    ///////////////////////////////////////////////////////////////////////////////////////////
+    
+    //seperator
+    Label seperatorLabel0 = new Label( codegenGroup, SWT.SEPARATOR | SWT.HORIZONTAL );
+    
+    gd = new GridData(GridData.FILL_HORIZONTAL);
+    gd.horizontalSpan = 2;
+    gd.verticalIndent=5;
+    seperatorLabel0.setLayoutData(gd);
+            
+    ///Client Codegen Options
+    Text clientCodegenLabel = new Text(codegenGroup,SWT.BACKGROUND | SWT.READ_ONLY);
+    clientCodegenLabel.setText( Axis2CoreUIMessages.LABEL_WEB_SERVICE_CLIENT_CODEGEN);
+    
+    gd = new GridData(GridData.FILL_HORIZONTAL);
+    gd.horizontalSpan = 2;
+    gd.verticalIndent=5;
+    clientCodegenLabel.setLayoutData(gd);
+    
+    //Client type label 
+    Label clientLabel = new Label(codegenGroup, SWT.HORIZONTAL | SWT.NULL);
+    clientLabel.setText(Axis2CoreUIMessages.LABEL_CLIENT_SIDE);
+    
+    //client side buttons
+    final Button syncAndAsyncRadioButton = new Button(codegenGroup, SWT.RADIO);
+    syncAndAsyncRadioButton.setText(Axis2CoreUIMessages.LABEL_SYNC_AND_ASYNC);
+    syncAndAsyncRadioButton.setVisible(true);
+    syncAndAsyncRadioButton.setSelection(
+        ((context.isSync() || context.isAsync())==false)
+        ?true
+        :(context.isSync()) && context.isAsync());
+    //context.setAsync(syncAndAsyncRadioButton.getSelection());
+    syncAndAsyncRadioButton.addSelectionListener(new SelectionListener() {
+      public void widgetSelected(SelectionEvent e) {
+        context.setAsync(syncAndAsyncRadioButton.getSelection());
+        context.setSync(syncAndAsyncRadioButton.getSelection());
+        
+      }
+      public void widgetDefaultSelected(SelectionEvent e) {
+      }
+    });
 
+    // Skip a column
+    new Label( codegenGroup, SWT.NONE );
+    
+    final Button syncOnlyRadioButton = new Button(codegenGroup, SWT.RADIO);
+    syncOnlyRadioButton.setText(Axis2CoreUIMessages.LABEL_SYNC);
+    syncOnlyRadioButton.setSelection(context.isSync() && !context.isAsync() );
+    syncOnlyRadioButton.addSelectionListener(new SelectionListener() {
+      public void widgetSelected(SelectionEvent e) {
+        context.setAsync(!syncOnlyRadioButton.getSelection());
+        context.setSync(syncOnlyRadioButton.getSelection());
+      }
+      public void widgetDefaultSelected(SelectionEvent e) {
+      }
+    });
+    
+    // Skip a column
+    new Label( codegenGroup, SWT.NONE );
 
-		// generate all
-		final Button clientGenerateAllCheckBoxButton = new Button(codegenGroup, SWT.CHECK);
-		clientGenerateAllCheckBoxButton.setSelection(context.isClientGenerateAll());
-		clientGenerateAllCheckBoxButton.setText(Axis2CoreUIMessages.LABEL_GENERATE_ALL);
-		clientGenerateAllCheckBoxButton.addSelectionListener(new SelectionListener() {
-			public void widgetSelected(SelectionEvent e) {
-				context.setClientGenerateAll(clientGenerateAllCheckBoxButton.getSelection());
-			}
-			public void widgetDefaultSelected(SelectionEvent e) {
-			}
-		});
-		clientGenerateAllCheckBoxButton.setLocation(10, 300);
-		clientGenerateAllCheckBoxButton.setSize(400, 15);
-		
-		///////////////////////////////////////////////////////////////////////////////////////////
+    final Button asyncOnlyRadioButton = new Button(codegenGroup, SWT.RADIO);
+    asyncOnlyRadioButton.setText(Axis2CoreUIMessages.LABEL_ASYNC);
+    asyncOnlyRadioButton.setSelection(context.isAsync() && !context.isSync());
+    asyncOnlyRadioButton.addSelectionListener(new SelectionListener() {
+      public void widgetSelected(SelectionEvent e) {
+        context.setAsync(asyncOnlyRadioButton.getSelection());
+        context.setSync(!asyncOnlyRadioButton.getSelection());
+      }
+      public void widgetDefaultSelected(SelectionEvent e) {
+      }
+    });
+    
+    //Data binding
+    Label clientDatabindingLabel = new Label( codegenGroup, SWT.NONE );
+    clientDatabindingLabel.setText( Axis2CoreUIMessages.LABEL_DATABINDING);
+    
+    clientDatabindingCombo = new Combo(codegenGroup,SWT.DROP_DOWN | SWT.BORDER | SWT.READ_ONLY);
+    clientDatabindingCombo.setItems(databindingItems);
+    clientDatabindingCombo.select(0);
+    context.setClientDatabinding(clientDatabindingCombo.getItem(0));
+    clientDatabindingCombo.addSelectionListener(new SelectionAdapter(){
+        public void widgetSelected(SelectionEvent e) {
+            context.setClientDatabinding(clientDatabindingCombo
+                .getItem(clientDatabindingCombo.getSelectionIndex()));
+        }
+    });
+    
+    // generate test case option
+    final Button clientTestCaseCheckBoxButton = new Button(codegenGroup, SWT.CHECK);
+    clientTestCaseCheckBoxButton.setText(Axis2CoreUIMessages.LABEL_GENERATE_TESTCASE_CAPTION);
+    clientTestCaseCheckBoxButton.setSelection(context.isClientTestCase());
+    clientTestCaseCheckBoxButton.addSelectionListener(new SelectionListener() {
+      public void widgetSelected(SelectionEvent e) {
+        context.setClientTestCase(clientTestCaseCheckBoxButton.getSelection());
+      }
 
-		//seperator
-		Label seperatorLabel1 = new Label( codegenGroup, SWT.SEPARATOR|SWT.BORDER);
-		seperatorLabel1.setLocation(10,335);
-		seperatorLabel1.setSize(570,1);
-		
-		///AAR Options
-		Text aarLabel = new Text(codegenGroup,SWT.BACKGROUND | SWT.READ_ONLY);
-		aarLabel.setText( Axis2CoreUIMessages.LABEL_WEB_SERVICE_AAR);
-		aarLabel.setLocation(10,350);
-		aarLabel.setSize(220,20);
-		
-		//aar extention 
-		Label aarExtentionLabel = new Label( codegenGroup, SWT.NONE );
-		aarExtentionLabel.setText( Axis2CoreUIMessages.LABEL_AAR_EXTENTION);
-		aarExtentionLabel.setLocation(10,390);
-		aarExtentionLabel.setSize(200,20);
-		
-		final Text aarExtentionText = new Text( codegenGroup, SWT.BORDER);
-		aarExtentionText.setText(context.getAarExtention());
-		aarExtentionText.addModifyListener( new ModifyListener() {
-			public void modifyText(ModifyEvent e){
-				context.setAarExtention(aarExtentionText.getText());
-			}
-		});
-		aarExtentionText.setLocation(220,390);
-		aarExtentionText.setSize(100,20);
-		
+      public void widgetDefaultSelected(SelectionEvent e) {
+      }
+    });
+    
+    gd = new GridData(GridData.FILL_HORIZONTAL);
+    gd.horizontalSpan = 2;
+    clientTestCaseCheckBoxButton.setLayoutData(gd);
 
-		axis2PreferenceTab.setSize(640, 500);
-		
-	    return mainComp;
-	}
+    // generate all
+    final Button clientGenerateAllCheckBoxButton = new Button(codegenGroup, SWT.CHECK);
+    clientGenerateAllCheckBoxButton.setSelection(context.isClientGenerateAll());
+    clientGenerateAllCheckBoxButton.setText(Axis2CoreUIMessages.LABEL_GENERATE_ALL);
+    clientGenerateAllCheckBoxButton.addSelectionListener(new SelectionListener() {
+      public void widgetSelected(SelectionEvent e) {
+        context.setClientGenerateAll(clientGenerateAllCheckBoxButton.getSelection());
+      }
+      public void widgetDefaultSelected(SelectionEvent e) {
+      }
+    });
+    
+    gd = new GridData(GridData.FILL_HORIZONTAL);
+    gd.horizontalSpan = 2;
+    clientGenerateAllCheckBoxButton.setLayoutData(gd);
+    
+    ///////////////////////////////////////////////////////////////////////////////////////////
 
-	public void init(IWorkbench workbench) {
-		// TODO Auto-generated method stub
-	}
-	
-	  
-	/**
-	 * Pops up the file browse dialog box
-	 */
-	private void handleBrowse(Shell parent) {
-		DirectoryDialog fileDialog = new DirectoryDialog(parent);
-		String fileName = fileDialog.open();
-		if (fileName != null) {
-			axis2Path.setText(fileName);
-			context.setAxis2RuntimeLocation( axis2Path.getText() );
-			if(isWar){
-				updateWarStatus(true);
-			}else{
-				updateWarStatus(false);
-			}
-		}
-	}
-	
-	private void statusUpdate(boolean status){
-		if(statusLabel != null){
-			if(!axis2Path.getText().equals("")){
-		if (status) {
-			statusLabel.setText(Axis2CoreUIMessages.LABEL_AXIS2_RUNTIME_LOAD);
-			this.setErrorMessage(null);
-		} else {
-			statusLabel.setText(Axis2CoreUIMessages.LABEL_AXIS2_RUNTIME_LOAD_ERROR);
-					//this.setErrorMessage(Axis2CoreUIMessages.LABEL_AXIS2_RUNTIME_LOAD_ERROR);
-		}
-			}else{
-				statusLabel.setText(Axis2CoreUIMessages.LABEL_AXIS2_RUNTIME_NOT_EXIT);
-			}
-		}
-	}
-	
-	private boolean runtimeExist(String path){
-		isWar=false;
-		File axis2HomeDir = new File(path);
-		if (axis2HomeDir.isDirectory()) {
-			String axis2LibPath = Axis2CoreUtils.addAnotherNodeToPath(
-													axis2HomeDir.getAbsolutePath(),
-													"lib");
-			String axis2WebappPath = Axis2CoreUtils.addAnotherNodeToPath(
-					axis2HomeDir.getAbsolutePath(),
-					"webapp");
-			if (new File(axis2LibPath).isDirectory() && new File(axis2WebappPath).isDirectory()) {
-				statusUpdate(true);
-				return true;
-			} else {
-				String axis2WarPath = Axis2CoreUtils.addAnotherNodeToPath(
-						path,
-						"axis2.war");
-				if (new File(axis2WarPath).isFile()) {
-					isWar = true;
-					statusUpdate(true);
-					return true;
-				} else {
-					statusUpdate(false);
-					return false;
-				}
-			}
-		}else{
-			statusUpdate(false);
-			return false;
-		}
-	}
-	
-	private void updateWarStatus(boolean status){
-		RuntimePropertyUtils.writeWarStausToPropertiesFile(status);
-	}
-	
-	private void storeValues(){
-	    // get the persistent context from the plugin
-	    context.setAxis2RuntimeLocation( axis2Path.getText() );
-	}
-	
+    //seperator
+    Label seperatorLabel11 = new Label( codegenGroup, SWT.SEPARATOR | SWT.HORIZONTAL );
+    
+    gd = new GridData(GridData.FILL_HORIZONTAL);
+    gd.horizontalSpan = 2;
+    gd.verticalIndent=5;
+    seperatorLabel11.setLayoutData(gd);
+
+    ///AAR Options
+    Text aarLabel = new Text(codegenGroup,SWT.BACKGROUND | SWT.READ_ONLY);
+    aarLabel.setText( Axis2CoreUIMessages.LABEL_WEB_SERVICE_AAR);
+    
+    gd = new GridData(GridData.FILL_HORIZONTAL);
+    gd.horizontalSpan = 2;
+    gd.verticalIndent=5;
+    aarLabel.setLayoutData(gd);
+    
+    //aar extention 
+    Label aarExtentionLabel = new Label( codegenGroup, SWT.NONE );
+    aarExtentionLabel.setText( Axis2CoreUIMessages.LABEL_AAR_EXTENTION);
+    
+    //AAR extention items
+    final String[] aarExtentionItems = { Axis2CoreUIMessages.AAR };
+    
+    aarExtensionCombo = new Combo(codegenGroup,SWT.DROP_DOWN | SWT.BORDER | SWT.READ_ONLY);
+    aarExtensionCombo.setItems(aarExtentionItems);
+    aarExtensionCombo.select(0);
+    context.setAarExtention( aarExtensionCombo.getItem(0) );
+    aarExtensionCombo.addSelectionListener(new SelectionAdapter(){
+        public void widgetSelected(SelectionEvent e) {
+            int index = aarExtensionCombo.getSelectionIndex();
+            context.setAarExtention(aarExtensionCombo.getItem(index));
+        }
+    });
+    
+        
+    axis2PreferenceTab.setEnabled(true);
+    axis2PreferenceTab.setVisible(true);
+    
+    return mainComp;
+  }
+
+  public void init(IWorkbench workbench) {
+  }
+  
+    
+  /**
+   * Pops up the file browse dialog box
+   */
+  private void handleBrowse(Shell parent) {
+    DirectoryDialog fileDialog = new DirectoryDialog(parent);
+    String fileName = fileDialog.open();
+    if (fileName != null) {
+      axis2Path.setText(fileName);
+      context.setAxis2RuntimeLocation( axis2Path.getText() );
+      if(isWar){
+        updateWarStatus(true);
+      }else{
+        updateWarStatus(false);
+      }
+    }
+  }
+  
+  private void statusUpdate(boolean status){
+    if(statusLabel != null){
+      if(!axis2Path.getText().equals("")){
+    if (status) {
+      statusLabel.setText(Axis2CoreUIMessages.LABEL_AXIS2_RUNTIME_LOAD);
+      this.setErrorMessage(null);
+    } else {
+      statusLabel.setText(Axis2CoreUIMessages.LABEL_AXIS2_RUNTIME_LOAD_ERROR);
+          //this.setErrorMessage(Axis2CoreUIMessages.LABEL_AXIS2_RUNTIME_LOAD_ERROR);
+    }
+      }else{
+        statusLabel.setText(Axis2CoreUIMessages.LABEL_AXIS2_RUNTIME_NOT_EXIT);
+      }
+    }
+  }
+  
+  private boolean runtimeExist(String path){
+    isWar=false;
+    File axis2HomeDir = new File(path);
+    if (axis2HomeDir.isDirectory()) {
+      String axis2LibPath = Axis2CoreUtils.addAnotherNodeToPath(
+                          axis2HomeDir.getAbsolutePath(),
+                          "lib");
+      String axis2WebappPath = Axis2CoreUtils.addAnotherNodeToPath(
+          axis2HomeDir.getAbsolutePath(),
+          "webapp");
+      if (new File(axis2LibPath).isDirectory() && new File(axis2WebappPath).isDirectory()) {
+        statusUpdate(true);
+        return true;
+      } else {
+        String axis2WarPath = Axis2CoreUtils.addAnotherNodeToPath(
+            path,
+            "axis2.war");
+        if (new File(axis2WarPath).isFile()) {
+          isWar = true;
+          statusUpdate(true);
+          return true;
+        } else {
+          statusUpdate(false);
+          return false;
+        }
+      }
+    }else{
+      statusUpdate(false);
+      return false;
+    }
+  }
+  
+  private void updateWarStatus(boolean status){
+    RuntimePropertyUtils.writeWarStausToPropertiesFile(status);
+  }
+  
+  private void storeValues(){
+      // get the persistent context from the plugin
+      context.setAxis2RuntimeLocation( axis2Path.getText() );
+  }
+  
 }