/*******************************************************************************
* Copyright (c) 2010 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.cdi.ui.wizard;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import org.eclipse.swt.widgets.Composite;
import org.jboss.tools.cdi.core.CDIConstants;
import org.jboss.tools.cdi.ui.CDIUIMessages;
/**
*
* @author Viacheslav Kabanovich
*
*/
public class NewScopeWizardPage extends NewCDIAnnotationWizardPage {
protected CheckBoxEditorWrapper normal = null;
protected CheckBoxEditorWrapper passivating = null;
public NewScopeWizardPage() {
setTitle(CDIUIMessages.NEW_SCOPE_WIZARD_PAGE_NAME);
}
protected void addAnnotations(ImportsManager imports, StringBuffer sb, String lineDelimiter) {
addScopeAnnotation(imports, sb, lineDelimiter);
addInheritedAnnotation(imports, sb, lineDelimiter);
addTargetAnnotation(imports, sb, lineDelimiter, getTargets());
addRetentionAnnotation(imports, sb, lineDelimiter);
addDocumentedAnnotation(imports, sb, lineDelimiter);
}
protected String[] getTargets() {
return new String[]{"TYPE", "METHOD", "FIELD"};
}
protected void addScopeAnnotation(ImportsManager imports, StringBuffer sb, String lineDelimiter) {
if(normal != null) {
if(normal.composite.getValue() == Boolean.FALSE) {
addAnnotation(CDIConstants.SCOPE_ANNOTATION_TYPE_NAME, imports, sb, lineDelimiter);
} else if(passivating.composite.getValue() == Boolean.FALSE) {
addAnnotation(CDIConstants.NORMAL_SCOPE_ANNOTATION_TYPE_NAME, imports, sb, lineDelimiter);
} else {
String typeName = CDIConstants.NORMAL_SCOPE_ANNOTATION_TYPE_NAME;
int i = typeName.lastIndexOf('.');
String name = typeName.substring(i + 1);
imports.addImport(typeName);
sb.append("@").append(name).append("(passivating=true)").append(lineDelimiter);
}
}
}
@Override
protected void createCustomFields(Composite parent) {
createInheritedField(parent, true);
createNormalField(parent);
createPassivatingField(parent);
}
protected void createNormalField(Composite composite) {
String label = "is normal scope";
normal = createCheckBoxField(composite, "isNormal", label, true);
normal.checkBox.addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
Object o = evt.getNewValue();
passivating.checkBox.setEnabled(o != Boolean.FALSE);
}});
}
protected void createPassivatingField(Composite composite) {
String label = "is passivating";
passivating = createCheckBoxField(composite, "isPassivating", label, false);
}
}