blob: 3419d8a9805393a099895d22bd8d3dc17c16b06f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007 WSO2 Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* WSO2 Inc. - initial API and implementation
* 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
* 20070425 183046 sandakith@wso2.com - Lahiru Sandakith
* 20070501 180284 sandakith@wso2.com - Lahiru Sandakith
* 20070511 186440 sandakith@wso2.com - Lahiru Sandakith fix 186440
*******************************************************************************/
package org.eclipse.jst.ws.internal.axis2.consumption.ui.preferences;
import java.io.File;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jst.ws.axis2.core.plugin.data.ServerModel;
import org.eclipse.jst.ws.axis2.core.plugin.messages.Axis2CoreUIMessages;
import org.eclipse.jst.ws.axis2.core.utils.Axis2CoreUtils;
import org.eclipse.jst.ws.axis2.core.utils.RuntimePropertyUtils;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Button;
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;
import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
public class Axis2RuntimePreferencePage extends PreferencePage implements
IWorkbenchPreferencePage {
private Button browseButton;
private Text axis2Path;
private Label statusLabel;
@SuppressWarnings("unused")
private IStatus status = Status.OK_STATUS;
private boolean webappExist = false;
private boolean isWar = false;
private String statusBanner = null;
protected Control createContents(Composite superparent) {
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 (ServerModel.getAxis2ServerPath()==null||ServerModel.getAxis2ServerPath().equals("")){
serverPath = (RuntimePropertyUtils.getServerPathFromPropertiesFile() == null) ? ""
: RuntimePropertyUtils.getServerPathFromPropertiesFile();
axis2Path.setText(serverPath);
ServerModel.setAxis2ServerPath( serverPath );
}else{
axis2Path.setText(ServerModel.getAxis2ServerPath());
serverPath = ServerModel.getAxis2ServerPath();
}
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){
ServerModel.setAxis2ServerPath( axis2Path.getText() );
webappExist =runtimeExist(axis2Path.getText());
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 Label( runtimeGroup, SWT.NONE );
statusLabel.setLocation(20,100);
statusLabel.setSize(560,40);
statusLabel.setAlignment(SWT.CENTER);
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
Label serviceCodegenLabel = new Label( codegenGroup, SWT.NONE );
serviceCodegenLabel.setText( Axis2CoreUIMessages.LABEL_WEB_SERVICE_CODEGEN);
serviceCodegenLabel.setLocation(10,30);
serviceCodegenLabel.setSize(200,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(ServerModel.getServiceDatabinding());
databindingText.addModifyListener( new ModifyListener() {
public void modifyText(ModifyEvent e){
ServerModel.setServiceDatabinding( databindingText.getText() );
}
});
databindingText.setLocation(220,60);
databindingText.setSize(100,20);
// generate test case option
final Button testCaseCheckBoxButton = new Button(codegenGroup, SWT.CHECK);
testCaseCheckBoxButton.setText(Axis2CoreUIMessages.LABEL_GENERATE_TESTCASE_CAPTION);
testCaseCheckBoxButton.setSelection(ServerModel.isServiceTestcase());
testCaseCheckBoxButton.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
ServerModel.setServiceTestcase(testCaseCheckBoxButton.getSelection());
}
public void widgetDefaultSelected(SelectionEvent e) {
}
});
testCaseCheckBoxButton.setLocation(10, 90);
testCaseCheckBoxButton.setSize(300, 15);
//model.setServerXMLCheck(true);
//the server side interface option
final Button generateServerSideInterfaceCheckBoxButton =
new Button(codegenGroup, SWT.CHECK);
generateServerSideInterfaceCheckBoxButton.setText(
Axis2CoreUIMessages.LABEL_GENERATE_SERVERSIDE_INTERFACE);
generateServerSideInterfaceCheckBoxButton.setSelection(
ServerModel.isServiceInterfaceSkeleton());
generateServerSideInterfaceCheckBoxButton.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
ServerModel.setServiceInterfaceSkeleton(
generateServerSideInterfaceCheckBoxButton.getSelection());
}
public void widgetDefaultSelected(SelectionEvent e) {
}
});
generateServerSideInterfaceCheckBoxButton.setLocation(10, 120);
generateServerSideInterfaceCheckBoxButton.setSize(300, 15);
// generate all
final Button generateAllCheckBoxButton = new Button(codegenGroup, SWT.CHECK);
generateAllCheckBoxButton.setSelection(ServerModel.isServiceGenerateAll());
generateAllCheckBoxButton.setText(Axis2CoreUIMessages.LABEL_GENERATE_ALL);
generateAllCheckBoxButton.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
ServerModel.setServiceGenerateAll(generateAllCheckBoxButton.getSelection());
}
public void widgetDefaultSelected(SelectionEvent e) {
}
});
generateAllCheckBoxButton.setLocation(10, 150);
generateAllCheckBoxButton.setSize(350, 15);
///////////////////////////////////////////////////////////////////////////////////////////
//seperator
Label seperatorLabel0 = new Label( codegenGroup, SWT.SEPARATOR|SWT.BORDER);
seperatorLabel0.setLocation(10,185);
seperatorLabel0.setSize(570,1);
///Client Codegen Options
Label clientCodegenLabel = new Label( codegenGroup, SWT.NONE );
clientCodegenLabel.setText( Axis2CoreUIMessages.LABEL_WEB_SERVICE_CLIENT_CODEGEN);
clientCodegenLabel.setLocation(10,200);
clientCodegenLabel.setSize(200,20);
//Client type label
Label clientLabel = new Label(codegenGroup, SWT.HORIZONTAL | SWT.NULL);
clientLabel.setText(Axis2CoreUIMessages.LABEL_CLIENT_SIDE);
clientLabel.setLocation(10,240);
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(
((ServerModel.isAsync() || ServerModel.isSync())==false)
?true
:(ServerModel.isAsync() && ServerModel.isSync()));
syncAndAsyncRadioButton.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
ServerModel.setSync(syncAndAsyncRadioButton.getSelection());
ServerModel.setAsync(syncAndAsyncRadioButton.getSelection());
}
public void widgetDefaultSelected(SelectionEvent e) {
}
});
syncAndAsyncRadioButton.setLocation(80,240);
syncAndAsyncRadioButton.setSize(190,20);
final Button syncOnlyRadioButton = new Button(codegenGroup, SWT.RADIO);
syncOnlyRadioButton.setText(Axis2CoreUIMessages.LABEL_SYNC);
syncOnlyRadioButton.setSelection(ServerModel.isSync() && !ServerModel.isAsync() );
syncOnlyRadioButton.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
ServerModel.setSync(syncOnlyRadioButton.getSelection());
ServerModel.setAsync(!syncOnlyRadioButton.getSelection());
}
public void widgetDefaultSelected(SelectionEvent e) {
}
});
syncOnlyRadioButton.setLocation(280,240);
syncOnlyRadioButton.setSize(170,20);
final Button asyncOnlyRadioButton = new Button(codegenGroup, SWT.RADIO);
asyncOnlyRadioButton.setText(Axis2CoreUIMessages.LABEL_ASYNC);
asyncOnlyRadioButton.setSelection(ServerModel.isAsync() && !ServerModel.isSync());
asyncOnlyRadioButton.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
ServerModel.setAsync(asyncOnlyRadioButton.getSelection());
ServerModel.setSync(!asyncOnlyRadioButton.getSelection());
}
public void widgetDefaultSelected(SelectionEvent e) {
}
});
asyncOnlyRadioButton.setLocation(460,240);
asyncOnlyRadioButton.setSize(170,20);
//Data binding
Label clientDatabindingLabel = new Label( codegenGroup, SWT.NONE );
clientDatabindingLabel.setText( Axis2CoreUIMessages.LABEL_DATABINDING);
clientDatabindingLabel.setLocation(10,270);
clientDatabindingLabel.setSize(200,20);
final Text databindingText1 = new Text( codegenGroup, SWT.BORDER );
databindingText1.setText(ServerModel.getCleintDatabinding());
databindingText1.addModifyListener( new ModifyListener() {
public void modifyText(ModifyEvent e){
ServerModel.setAxis2ServerPath( databindingText1.getText() );
}
});
databindingText1.setLocation(220,270);
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(ServerModel.isClientTestcase());
clientTestCaseCheckBoxButton.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
ServerModel.setClientTestcase(clientTestCaseCheckBoxButton.getSelection());
}
public void widgetDefaultSelected(SelectionEvent e) {
}
});
clientTestCaseCheckBoxButton.setLocation(10,300);
clientTestCaseCheckBoxButton.setSize(300, 15);
// generate all
final Button clientGenerateAllCheckBoxButton = new Button(codegenGroup, SWT.CHECK);
clientGenerateAllCheckBoxButton.setSelection(ServerModel.isClientGenerateAll());
clientGenerateAllCheckBoxButton.setText(Axis2CoreUIMessages.LABEL_GENERATE_ALL);
clientGenerateAllCheckBoxButton.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
ServerModel.setClientGenerateAll(clientGenerateAllCheckBoxButton.getSelection());
}
public void widgetDefaultSelected(SelectionEvent e) {
}
});
clientGenerateAllCheckBoxButton.setLocation(10, 330);
clientGenerateAllCheckBoxButton.setSize(400, 15);
///////////////////////////////////////////////////////////////////////////////////////////
//seperator
Label seperatorLabel1 = new Label( codegenGroup, SWT.SEPARATOR|SWT.BORDER);
seperatorLabel1.setLocation(10,365);
seperatorLabel1.setSize(570,1);
///AAR Options
Label aarLabel = new Label( codegenGroup, SWT.NONE );
aarLabel.setText( Axis2CoreUIMessages.LABEL_WEB_SERVICE_AAR);
aarLabel.setLocation(10,380);
aarLabel.setSize(200,20);
//aar extention
Label aarExtentionLabel = new Label( codegenGroup, SWT.NONE );
aarExtentionLabel.setText( Axis2CoreUIMessages.LABEL_AAR_EXTENTION);
aarExtentionLabel.setLocation(10,420);
aarExtentionLabel.setSize(200,20);
final Text aarExtentionText = new Text( codegenGroup, SWT.BORDER);
aarExtentionText.setText(ServerModel.getAarExtention());
aarExtentionText.addModifyListener( new ModifyListener() {
public void modifyText(ModifyEvent e){
ServerModel.setAarExtention( aarExtentionText.getText() );
}
});
aarExtentionText.setLocation(220,420);
aarExtentionText.setSize(100,20);
axis2PreferenceTab.setSize(640, 500);
return mainComp;
}
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);
ServerModel.setAxis2ServerPath( 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){
ServerModel.setAxis2ServerPathRepresentsWar(status);
RuntimePropertyUtils.writeWarStausToPropertiesFile(status);
}
}