/******************************************************************************* * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 *******************************************************************************/ package org.ebayopensource.turmeric.eclipse.ui.wizards.pages.typelib; import java.net.URL; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.ebayopensource.turmeric.common.config.LibraryType; import org.ebayopensource.turmeric.eclipse.core.logging.SOALogger; import org.ebayopensource.turmeric.eclipse.core.resources.constants.SOAXSDTemplateSubType; import org.ebayopensource.turmeric.eclipse.repositorysystem.core.SOAGlobalRegistryAdapter; import org.ebayopensource.turmeric.eclipse.ui.views.registry.TypeSelector; import org.ebayopensource.turmeric.eclipse.utils.ui.UIUtil; import org.eclipse.jface.window.Window; 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.Text; /** * General Page for complex type with complex content wizard. * * @author ramurthy */ public class ComplexTypeCCWizardGeneralPage extends ComplexTypeWizardGeneralPage { private Text extensionType; private Button extensionTypeButton; /** * Instantiates a new complex type cc wizard general page. * * @param typeLibName the type lib name */ public ComplexTypeCCWizardGeneralPage(String typeLibName) { super("complexTypeCCWizardGeneralPage", "Create Complex Type (Complex Content)", "Create a new complex type with complex content", typeLibName); } /* (non-Javadoc) * @see org.ebayopensource.turmeric.eclipse.ui.wizards.pages.typelib.ComplexTypeWizardGeneralPage#createControl(org.eclipse.swt.widgets.Composite) */ @Override public void createControl(Composite parent) { try { super.createControl(parent, false); createExtensionType(container); createDocumentationText(container); dialogChanged(); } catch (Exception e) { SOALogger.getLogger().error(e); UIUtil.showErrorDialog(e); } } /** * Creates the extension type. * * @param parent the parent */ protected void createExtensionType(final Composite parent) { extensionType = super.createLabelTextField(container, getBaseType(), "", modifyListener, false, false, "base extension type"); // Browse Button extensionTypeButton = new Button(container, SWT.PUSH); extensionTypeButton.setAlignment(SWT.LEFT); extensionTypeButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1)); extensionTypeButton.setText("&Select..."); extensionTypeButton.setSelection(false); extensionTypeButton.addSelectionListener(new SelectionListener() { @Override public void widgetDefaultSelected(final SelectionEvent e) { widgetSelected(e); } @Override public void widgetSelected(final SelectionEvent e) { TypeSelector typeSelector = null; try { typeSelector = new TypeSelector(UIUtil.getActiveShell(), "Select Type", SOAGlobalRegistryAdapter.getInstance() .getGlobalRegistry().getAllTypes().toArray( new LibraryType[0]), "", ""); } catch (Exception e1) { SOALogger.getLogger().error(e1); } if (typeSelector.open() == Window.OK) { final LibraryType libType = typeSelector.getSelectedTypes() .get(0); extensionType.setData(libType); extensionType.setText(libType.getName()); dialogChanged(); } } }); } /* (non-Javadoc) * @see org.ebayopensource.turmeric.eclipse.ui.wizards.pages.AbstractNewTypeWizardPage#dialogChanged() */ @Override protected boolean dialogChanged() { if (super.dialogChanged() == false) return false; if (extensionType != null) { if (getRawBaseType() == null || StringUtils.isBlank(getRawBaseType().toString())) { updateStatus(extensionType, "Please select the extension type"); return false; } } return true; } /* (non-Javadoc) * @see org.ebayopensource.turmeric.eclipse.ui.wizards.pages.AbstractNewTypeWizardPage#getRawBaseType() */ @Override public Object getRawBaseType() { if (extensionType.getData() != null) { return extensionType.getData(); } else { return getTextValue(extensionType); } } /** * {@inheritDoc} */ @Override protected Map<String, URL> getTemplateTypes() { return getTemplateTypeNames(SOAXSDTemplateSubType.COMPLEX_COMPLEXCONTENT); } }