| /******************************************************************************* |
| * Copyright (c) 2003, 2008 IBM Corporation 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: |
| * IBM Corporation - initial API and implementation |
| * David Schneider, david.schneider@unisys.com - bug 142500 |
| * Kiril Mitov, k.mitov@sap.com - bug 204160 |
| * Kaloyan Raev, kaloyan.raev@sap.com |
| *******************************************************************************/ |
| package org.eclipse.jst.servlet.ui.internal.wizard; |
| |
| import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_SERVLET; |
| |
| import java.util.Iterator; |
| |
| import org.eclipse.jface.dialogs.Dialog; |
| import org.eclipse.jface.viewers.ISelectionChangedListener; |
| import org.eclipse.jface.viewers.IStructuredSelection; |
| import org.eclipse.jface.viewers.SelectionChangedEvent; |
| import org.eclipse.jst.j2ee.internal.web.operations.INewServletClassDataModelProperties; |
| import org.eclipse.jst.j2ee.internal.web.operations.ServletSupertypesValidator; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.events.KeyEvent; |
| import org.eclipse.swt.events.KeyListener; |
| 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.Composite; |
| import org.eclipse.wst.common.frameworks.datamodel.IDataModel; |
| |
| public class NewServletClassOptionsWizardPage extends |
| NewWebClassOptionsWizardPage implements ISelectionChangedListener { |
| |
| protected Button initButton; |
| protected Button destroyButton; |
| protected Button getConfigButton; |
| protected Button getInfoButton; |
| protected Button serviceButton; |
| protected Button doGetButton; |
| protected Button doPostButton; |
| protected Button doPutButton; |
| protected Button doDeleteButton; |
| protected Button doHeadButton; |
| protected Button doOptionsButton; |
| protected Button doTraceButton; |
| |
| public NewServletClassOptionsWizardPage(IDataModel model, String pageName, String pageDesc, String pageTitle) { |
| super(model, pageName, pageDesc, pageTitle); |
| } |
| |
| @Override |
| protected void enter() { |
| super.enter(); |
| |
| boolean httpServlet = ServletSupertypesValidator.isHttpServletSuperclass(model); |
| doGetButton.setVisible(httpServlet); |
| doPostButton.setVisible(httpServlet); |
| doPutButton.setVisible(httpServlet); |
| doDeleteButton.setVisible(httpServlet); |
| doHeadButton.setVisible(httpServlet); |
| doOptionsButton.setVisible(httpServlet); |
| doTraceButton.setVisible(httpServlet); |
| } |
| |
| /** |
| * Create the composite with all the stubs |
| */ |
| @Override |
| protected void createStubsComposite(Composite parent) { |
| super.createStubsComposite(parent); |
| |
| inheritButton.addSelectionListener(new SelectionListener() { |
| public void widgetSelected(SelectionEvent e) { |
| boolean enable = inheritButton.getSelection(); |
| enableGenericServletButtons(enable); |
| enableHttpServletButtons(enable); |
| } |
| |
| public void widgetDefaultSelected(SelectionEvent e) { |
| //Do nothing |
| } |
| |
| private void enableGenericServletButtons(boolean enable) { |
| if (ServletSupertypesValidator.isGenericServletSuperclass(model)) { |
| initButton.setEnabled(enable); |
| destroyButton.setEnabled(enable); |
| getConfigButton.setEnabled(enable); |
| getInfoButton.setEnabled(enable); |
| serviceButton.setEnabled(enable); |
| } |
| } |
| |
| private void enableHttpServletButtons(boolean enable) { |
| doGetButton.setEnabled(enable); |
| doPostButton.setEnabled(enable); |
| doPutButton.setEnabled(enable); |
| doDeleteButton.setEnabled(enable); |
| doHeadButton.setEnabled(enable); |
| doOptionsButton.setEnabled(enable); |
| doTraceButton.setEnabled(enable); |
| } |
| }); |
| |
| Composite comp = new Composite(methodStubs, SWT.NULL); |
| GridLayout layout = new GridLayout(3, false); |
| layout.marginWidth = 0; |
| layout.makeColumnsEqualWidth = true; |
| comp.setLayout(layout); |
| GridData data = new GridData(GridData.FILL_BOTH); |
| comp.setLayoutData(data); |
| |
| initButton = new Button(comp, SWT.CHECK); |
| initButton.setText("&init"); //$NON-NLS-1$ |
| synchHelper.synchCheckbox(initButton, INewServletClassDataModelProperties.INIT, null); |
| |
| destroyButton = new Button(comp, SWT.CHECK); |
| destroyButton.setText("destro&y"); //$NON-NLS-1$ |
| synchHelper.synchCheckbox(destroyButton, INewServletClassDataModelProperties.DESTROY, null); |
| |
| getConfigButton = new Button(comp, SWT.CHECK); |
| getConfigButton.setText("getServlet&Config"); //$NON-NLS-1$ |
| synchHelper.synchCheckbox(getConfigButton, INewServletClassDataModelProperties.GET_SERVLET_CONFIG, null); |
| |
| getInfoButton = new Button(comp, SWT.CHECK); |
| getInfoButton.setText("getServletI&nfo"); //$NON-NLS-1$ |
| synchHelper.synchCheckbox(getInfoButton, INewServletClassDataModelProperties.GET_SERVLET_INFO, null); |
| |
| serviceButton = new Button(comp, SWT.CHECK); |
| serviceButton.setText("&service"); //$NON-NLS-1$ |
| synchHelper.synchCheckbox(serviceButton, INewServletClassDataModelProperties.SERVICE, null); |
| |
| doGetButton = new Button(comp, SWT.CHECK); |
| doGetButton.setText("do&Get"); //$NON-NLS-1$ |
| synchHelper.synchCheckbox(doGetButton, INewServletClassDataModelProperties.DO_GET, null); |
| |
| doPostButton = new Button(comp, SWT.CHECK); |
| doPostButton.setText("do&Post"); //$NON-NLS-1$ |
| synchHelper.synchCheckbox(doPostButton, INewServletClassDataModelProperties.DO_POST, null); |
| |
| doPutButton = new Button(comp, SWT.CHECK); |
| doPutButton.setText("doP&ut"); //$NON-NLS-1$ |
| synchHelper.synchCheckbox(doPutButton, INewServletClassDataModelProperties.DO_PUT, null); |
| |
| doDeleteButton = new Button(comp, SWT.CHECK); |
| doDeleteButton.setText("do&Delete"); //$NON-NLS-1$ |
| synchHelper.synchCheckbox(doDeleteButton, INewServletClassDataModelProperties.DO_DELETE, null); |
| |
| doHeadButton = new Button(comp, SWT.CHECK); |
| doHeadButton.setText("do&Head"); //$NON-NLS-1$ |
| synchHelper.synchCheckbox(doHeadButton, INewServletClassDataModelProperties.DO_HEAD, null); |
| |
| doOptionsButton = new Button(comp, SWT.CHECK); |
| doOptionsButton.setText("do&Options"); //$NON-NLS-1$ |
| synchHelper.synchCheckbox(doOptionsButton, INewServletClassDataModelProperties.DO_OPTIONS, null); |
| |
| doTraceButton = new Button(comp, SWT.CHECK); |
| doTraceButton.setText("do&Trace"); //$NON-NLS-1$ |
| synchHelper.synchCheckbox(doTraceButton, INewServletClassDataModelProperties.DO_TRACE, null); |
| |
| interfaceViewer.addSelectionChangedListener(this); |
| |
| Dialog.applyDialogFont(parent); |
| } |
| |
| public void selectionChanged(SelectionChangedEvent event) { |
| IStructuredSelection selection = (IStructuredSelection) event.getSelection(); |
| removeButton.setEnabled(canRemoveSelectedInterfaces(selection)); |
| } |
| |
| protected KeyListener getInterfaceKeyListener() { |
| return new KeyListener() { |
| |
| public void keyPressed(KeyEvent e) { |
| } |
| |
| public void keyReleased(KeyEvent e) { |
| if (e.keyCode == SWT.DEL) { |
| IStructuredSelection selection = (IStructuredSelection) interfaceViewer.getSelection(); |
| if (canRemoveSelectedInterfaces(selection)) { |
| handleInterfaceRemoveButtonSelected(); |
| } |
| } |
| } |
| |
| }; |
| } |
| |
| private boolean canRemoveSelectedInterfaces(IStructuredSelection selection) { |
| // if the selection is empty, then remove is not possible |
| if (selection.isEmpty()) { |
| return false; |
| } |
| |
| // if the selection is non-empty and the servlet extends GenericServlet, then |
| // remove is possible |
| if (ServletSupertypesValidator.isGenericServletSuperclass(model)) { |
| return true; |
| } |
| |
| // if the selection is non-empty and the servlet does not extend GenericServlet, |
| // then remove is not possible only if the Servlet interface is in the selection |
| Iterator iter = selection.iterator(); |
| while (iter.hasNext()) { |
| if (QUALIFIED_SERVLET.equals(iter.next())) { |
| return false; |
| } |
| } |
| |
| // in all other cases remove is possible |
| return true; |
| } |
| } |