package com.sysdeo.eclipse.tomcat;
/*
* (c) Copyright Sysdeo SA 2001, 2002.
* All Rights Reserved.
*/
import org.eclipse.core.runtime.CoreException;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
public class TomcatProjectGeneralPropertyPage implements TomcatPluginResources {
private Button isTomcatProjectCheck;
private Button updateXmlCheck;
private Button reloadableCheck;
private Button redirectLoggerCheck;
private Text webpathText;
private Text rootDirText;
private Text extraInfoText;
private TomcatProjectPropertyPage page;
private static final int TEXT_FIELD_WIDTH = 200;
public TomcatProjectGeneralPropertyPage(TomcatProjectPropertyPage page) {
this.page = page;
}
/**
* returns a control which consists of the ui elements of this page
*/
protected Control createContents(Composite parent) {
Composite composite = new Composite(parent, SWT.NULL);
composite.setLayout(new GridLayout());
composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
createIsTomcatProjectGroup(composite);
Group group = new Group(composite, SWT.NONE);
group.setLayout(new GridLayout());
createWebpathGroup(group);
createExtraInformationGroup(group);
Label lab = new Label(group, SWT.NULL); //blank
createRootDirGroup(group);
return composite;
}
public void createIsTomcatProjectGroup(Composite parent) {
Composite isTomcatProjectGroup = new Composite(parent,SWT.NONE);
isTomcatProjectGroup.setLayout(new GridLayout(3, false));
isTomcatProjectGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// project location entry field
isTomcatProjectCheck = new Button(isTomcatProjectGroup, SWT.CHECK | SWT.LEFT);
isTomcatProjectCheck.setText(PROPERTIES_PAGE_PROJECT_ISTOMCATPROJECT_LABEL);
isTomcatProjectCheck.setEnabled(true);
try {
isTomcatProjectCheck.setSelection(page.getJavaProject().getProject().hasNature(TomcatLauncherPlugin.NATURE_ID));
} catch (CoreException ex) {
TomcatLauncherPlugin.log(ex.getMessage());
}
}
public void createWebpathGroup(Composite parent) {
Composite webpathGroup = new Composite(parent,SWT.NONE);
webpathGroup.setLayout(new GridLayout(3, false));
webpathGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// location label
Label webpathLabel = new Label(webpathGroup,SWT.NONE);
webpathLabel.setText(WIZARD_PROJECT_WEBPATH_LABEL);
webpathLabel.setEnabled(true);
// project location entry field
webpathText = new Text(webpathGroup, SWT.BORDER);
GridData data = new GridData(GridData.FILL_HORIZONTAL);
data.widthHint = TEXT_FIELD_WIDTH;
// data.horizontalSpan = 2;
webpathText.setLayoutData(data);
webpathText.setText(this.getWebPath());
webpathText.setEnabled(true);
// project location entry field
updateXmlCheck = new Button(webpathGroup, SWT.CHECK | SWT.LEFT);
updateXmlCheck.setText(WIZARD_PROJECT_UPDATEXML_LABEL);
data = new GridData();
data.horizontalSpan = 3;
updateXmlCheck.setLayoutData(data);
updateXmlCheck.setEnabled(true);
updateXmlCheck.setSelection(this.getUpdateXml());
// reloadable attribute
reloadableCheck = new Button(webpathGroup,SWT.CHECK | SWT.LEFT);
reloadableCheck.setText(WIZARD_PROJECT_RELOADABLE_LABEL);
data = new GridData();
data.horizontalSpan = 3;
reloadableCheck.setLayoutData(data);
reloadableCheck.setEnabled(true);
reloadableCheck.setSelection(this.getReloadable());
// reloadable attribute
redirectLoggerCheck = new Button(webpathGroup,SWT.CHECK | SWT.LEFT);
redirectLoggerCheck.setText(WIZARD_PROJECT_REDIRECTLOGGER_LABEL);
data = new GridData();
data.horizontalSpan = 3;
redirectLoggerCheck.setLayoutData(data);
redirectLoggerCheck.setEnabled(true);
redirectLoggerCheck.setSelection(this.getRedirectLogger());
}
public void createRootDirGroup(Composite parent) {
Composite rootDirGroup = new Composite(parent,SWT.NONE);
rootDirGroup.setLayout(new GridLayout(2, false));
rootDirGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// location label
Label rootDirLabel = new Label(rootDirGroup,SWT.NONE);
rootDirLabel.setText(WIZARD_PROJECT_ROOTDIR_LABEL);
rootDirLabel.setEnabled(true);
// project location entry field
rootDirText = new Text(rootDirGroup, SWT.BORDER);
GridData data = new GridData(GridData.FILL_HORIZONTAL);
data.widthHint = 30;
// data.horizontalSpan = 3;
rootDirText.setLayoutData(data);
rootDirText.setText(this.getRootDir());
rootDirText.setEnabled(true);
}
public void createExtraInformationGroup(Composite parent) {
Composite contextGroup = new Composite(parent,SWT.NONE);
contextGroup.setLayout(new GridLayout(1, false));
contextGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// Extra information label
Label rootDirLabel = new Label(contextGroup,SWT.NONE);
rootDirLabel.setText(PROPERTIES_PAGE_PROJECT_EXTRAINFO_LABEL);
rootDirLabel.setEnabled(true);
// Extra information field
extraInfoText = new Text(contextGroup, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
GridData data = new GridData(GridData.FILL_HORIZONTAL);
data.grabExcessHorizontalSpace = true;
data.grabExcessVerticalSpace = true;
data.widthHint = 500;
data.heightHint = 100;
// data.horizontalSpan = 3;
extraInfoText.setLayoutData(data);
extraInfoText.setText(this.getExtraInfo());
extraInfoText.setEnabled(true);
}
protected String getWebPath() {
String result = "";
try {
TomcatProject prj = page.getTomcatProject();
if(prj != null)
result = prj.getWebPath();
} catch (CoreException ex) {
// result = "";
}
return result;
}
protected String getRootDir() {
String result = "/";
try {
TomcatProject prj = page.getTomcatProject();
if(prj != null)
result = prj.getRootDir();
} catch (CoreException ex) {
// result = "";
}
return result;
}
protected String getExtraInfo() {
String result = "";
try {
TomcatProject prj = page.getTomcatProject();
if(prj != null)
result = prj.getExtraInfo();
} catch (CoreException ex) {
// result = "";
}
return result;
}
protected boolean getUpdateXml() {
boolean result = true;
try {
TomcatProject prj = page.getTomcatProject();
if(prj != null)
result = prj.getUpdateXml();
} catch (CoreException ex) {
// result = false;
}
return result;
}
protected boolean getReloadable(){
boolean result = true;
try{
TomcatProject prj = page.getTomcatProject();
if(prj != null)
result = prj.getReloadable();
}catch(CoreException ex){
}
return result;
}
protected boolean getRedirectLogger(){
boolean result = false;
try{
TomcatProject prj = page.getTomcatProject();
if(prj != null)
result = prj.getRedirectLogger();
}catch(CoreException ex){
}
return result;
}
/**
* performes the ok action for this property page
*/
public boolean performOk() {
try {
if(isTomcatProjectCheck.getSelection()) {
TomcatProject.addTomcatNature(page.getJavaProject());
TomcatProject prj = page.getTomcatProject();
prj.updateWebPath(webpathText.getText());
prj.setUpdateXml(updateXmlCheck.getSelection());
prj.setReloadable(reloadableCheck.getSelection());
prj.setRedirectLogger(redirectLoggerCheck.getSelection());
prj.setExtraInfo(extraInfoText.getText());
prj.setRootDir(rootDirText.getText());
prj.saveProperties();
} else {
page.getTomcatProject().removeContext();
TomcatProject.removeTomcatNature(page.getJavaProject());
}
} catch (Exception ex) {
TomcatLauncherPlugin.log(ex.getMessage());
}
return true;
}
public boolean isTomcatProjectChecked() {
return isTomcatProjectCheck.getSelection();
}
}