package com.sysdeo.eclipse.tomcat; /* * (c) Copyright Martin Kahr, Sysdeo SA 2001, 2002. * All Rights Reserved. */ import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jface.preference.IPreferencePage; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.TabFolder; import org.eclipse.swt.widgets.TabItem; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; import org.eclipse.ui.dialogs.PropertyPage; /** * provides a tab control with property pages for the * settings of a tomcat project. * * @version 1.0 * @author Martin Kahr */ public class TomcatProjectPropertyPage extends PropertyPage implements IWorkbenchPreferencePage, TomcatPluginResources { private TabFolder folder; private TomcatProjectGeneralPropertyPage generalPropertyPage; private TomcatProjectWebclasspathPropertyPage webClassPathPropertyPage; private TomcatProjectWARPropertyPage warPropertyPage; /** * @see PreferencePage#createContents(Composite) */ protected Control createContents(Composite parent) { folder = new TabFolder(parent, SWT.NONE); // folder.setLayout(new TabFolderLayout()); folder.setLayoutData(new GridData(GridData.FILL_BOTH)); // general property page generalPropertyPage = new TomcatProjectGeneralPropertyPage(this); // add to tab TabItem generalTab = new TabItem(folder, SWT.NONE); generalTab.setText(TomcatPluginResources.PROPERTIES_PAGE_PROJECT_GENERAL_TAB_LABEL); generalTab.setControl(generalPropertyPage.createContents(folder)); // webclasspath property page webClassPathPropertyPage = new TomcatProjectWebclasspathPropertyPage(this); // add to tab TabItem webClassTab = new TabItem(folder, SWT.NONE); webClassTab.setText(TomcatPluginResources.PROPERTIES_PAGE_PROJECT_DEVLOADER_TAB_LABEL); webClassTab.setControl(webClassPathPropertyPage.getControl(folder)); // war property page warPropertyPage = new TomcatProjectWARPropertyPage(this); // add to tab TabItem warTab = new TabItem(folder, SWT.NONE); warTab.setText(TomcatPluginResources.PROPERTIES_PAGE_PROJECT_WAR_TAB_LABEL); warTab.setControl(warPropertyPage.createContents(folder)); return folder; } /** * @see IPreferencePage#performOk() */ public boolean performOk() { // delegate to property pages if (generalPropertyPage.performOk()) { // check if it's a tomcat project any more if (generalPropertyPage.isTomcatProjectChecked()) { if (webClassPathPropertyPage.performOk()) { try { this.getTomcatProject().updateContext(); } catch (Exception ex) { TomcatLauncherPlugin.log(ex); } } warPropertyPage.performOk(); } } return true; } /** * @see org.eclipse.ui.IWorkbenchPreferencePage#init(IWorkbench) */ public void init(IWorkbench workbench) { } /* helper methods */ protected IJavaProject getJavaProject() throws CoreException { IProject project = (IProject) (this.getElement().getAdapter(IProject.class)); return (IJavaProject) (project.getNature(JavaCore.NATURE_ID)); } protected TomcatProject getTomcatProject() throws CoreException { return TomcatProject.create(getJavaProject()); } }