blob: 7ec0ba65c99c4677242f7838bac432e0409cbbdb [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2005 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
*******************************************************************************/
package org.eclipse.jst.j2ee.internal.wizard;
import org.eclipse.core.resources.IProject;
import org.eclipse.jst.j2ee.application.internal.operations.IAnnotationsDataModel;
import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelSynchHelper;
public class DataModelAnnotationsStandaloneGroup {
protected IDataModel model;
protected DataModelSynchHelper synchHelper;
protected Button useAnnotations;
private boolean isForBean;
private boolean useServletString = false;
public static final String EJBTAGSET = "ejb"; //$NON-NLS-1$
public static boolean shouldBeanDefaultUseAnnotations = false;
public static boolean shouldProjectDefaultUseAnnotations = false;
private class CheckboxSelectionListener implements SelectionListener {
public void widgetSelected(SelectionEvent e) {
Button button = (Button) e.getSource();
if (isForBean)
shouldBeanDefaultUseAnnotations = button.getSelection();
else
shouldProjectDefaultUseAnnotations = button.getSelection();
}
public void widgetDefaultSelected(SelectionEvent e) {
//do nothing
}
}
private CheckboxSelectionListener checkboxSelectionListener = new CheckboxSelectionListener();
/**
* Constructor
*/
public DataModelAnnotationsStandaloneGroup(Composite parent, IDataModel model, boolean forBean, DataModelSynchHelper syncHelp) {
this(parent, model, forBean, false, syncHelp);
}
/**
* Constructor
*/
public DataModelAnnotationsStandaloneGroup(Composite parent, IDataModel model, boolean forBean, boolean useServlet, DataModelSynchHelper syncHelp) {
super();
this.model = model;
this.isForBean = forBean;
this.useServletString = useServlet;
synchHelper = syncHelp;
buildComposites(parent);
}
/**
* @param parent
*/
protected void buildComposites(Composite parent) {
// Add separator
Label separator = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 3;
separator.setLayoutData(gd);
// Add spacer
Label spacer = new Label(parent, SWT.NONE);
GridData gd1 = new GridData(GridData.FILL_HORIZONTAL);
gd1.horizontalSpan = 3;
spacer.setLayoutData(gd1);
// Add annotations checkbox and label
useAnnotations = new Button(parent, SWT.CHECK);
String labelText;
if (useServletString)
labelText = J2EEUIMessages.getResourceString(J2EEUIMessages.USE_ANNOTATIONS_SERVLET);
else if (isForBean)
labelText = J2EEUIMessages.getResourceString(J2EEUIMessages.USE_ANNOTATIONS);
else
labelText = J2EEUIMessages.getResourceString(J2EEUIMessages.ADD_ANNOTATIONS_SUPPORT);
useAnnotations.setText(labelText);
synchHelper.synchCheckbox(useAnnotations, IAnnotationsDataModel.USE_ANNOTATIONS, null);
useAnnotations.addSelectionListener(checkboxSelectionListener);
GridData gd2 = new GridData(GridData.FILL_HORIZONTAL);
gd2.horizontalSpan = 2;
useAnnotations.setLayoutData(gd2);
// If for project, set the global annotations supported
if (!isForBean)
setEnablement(null);
}
public void dispose() {
model.removeListener(synchHelper);
synchHelper = null;
model = null;
}
public boolean isAnnotationsSupported(IProject project) {
//TODO clean up to be module based, not project based
try {
// if (isForBean) {
// AnnotationsController controller =
// AnnotationsControllerManager.INSTANCE.getAnnotationsController(project);
// return (controller !=null && controller.isTagHandlerInstalled(EJBTAGSET));
// }
// J2EEModuleNature nature = null;
// if (project != null && project.hasNature(IWebNatureConstants.J2EE_NATURE_ID))
// nature = (J2EEModuleNature) project.getNature(IWebNatureConstants.J2EE_NATURE_ID);
// else if (project != null && project.hasNature(IEJBNatureConstants.NATURE_ID))
// nature = (J2EEModuleNature) project.getNature(IEJBNatureConstants.NATURE_ID);
//
// if (!isForBean || (nature != null && nature.getJ2EEVersion() > J2EEVersionConstants.VERSION_1_2))
return true;
// return false;
} catch (Throwable t) {
t.printStackTrace();
return false;
}
}
public void setEnablement(IProject project) {
//TODO
//boolean isEnabled = isAnnotationsSupported(project);
useAnnotations.setEnabled(true);
// if (!isEnabled || (!isForBean && !shouldProjectDefaultUseAnnotations) || (isForBean && !shouldBeanDefaultUseAnnotations)) {
// useAnnotations.setSelection(false);
// model.setProperty(IAnnotationsDataModel.USE_ANNOTATIONS, Boolean.FALSE);
// } else {
// useAnnotations.setSelection(true);
// model.setProperty(IAnnotationsDataModel.USE_ANNOTATIONS, Boolean.TRUE);
// }
}
public void setUseServlet(boolean aBoolean) {
useServletString = aBoolean;
}
public void setUseAnnotations(boolean aBoolean) {
if (useAnnotations != null) {
useAnnotations.setSelection(aBoolean);
model.setProperty(IAnnotationsDataModel.USE_ANNOTATIONS, new Boolean(aBoolean));
}
}
}