/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.xsd.ui.wizards; import java.util.List; import java.util.Properties; import org.eclipse.core.resources.IProject; import org.eclipse.jface.dialogs.IMessageProvider; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IImportWizard; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.ide.IDE; import org.teiid.core.designer.util.I18nUtil; import org.teiid.designer.ui.common.wizard.AbstractWizard; import org.teiid.designer.ui.common.wizard.NoOpenProjectsWizardPage; import org.teiid.designer.ui.viewsupport.DesignerPropertiesUtil; import org.teiid.designer.ui.viewsupport.IPropertiesContext; import org.teiid.designer.ui.viewsupport.ModelerUiViewUtils; import org.teiid.designer.xsd.ui.ModelerXsdUiConstants; import org.teiid.designer.xsd.ui.ModelerXsdUiPlugin; /** * Wizard for importing XSD resources from the local file system into the workspace. * * @since 8.0 */ public class XsdFileSystemImportWizard extends AbstractWizard implements IImportWizard, ModelerXsdUiConstants, IPropertiesContext { private static final String I18N_PREFIX = I18nUtil.getPropertyPrefix(XsdFileSystemImportWizard.class); private static final String TITLE = getString("title"); //$NON-NLS-1$ private static final ImageDescriptor IMAGE = ModelerXsdUiPlugin.getDefault().getImageDescriptor(Images.IMPORT_XSD_ICON); private static final String NOT_LICENSED_MSG = getString("notLicensedMessage"); //$NON-NLS-1$ private static boolean importLicensed = true; /** * @since 4.0 */ private static String getString( final String id ) { return Util.getString(I18N_PREFIX + id); } private XsdFileSystemImportMainPage importFromFileMainPage; private XsdUrlImportMainPage importFromUrlMainPage; private XsdImportMainPage importMainPage; private IWorkbench workbench; private IStructuredSelection selection; private boolean openProjectExists; private IProject newProject; Properties designerProperties; /** * Creates a wizard for importing resources into the workspace from the file system. */ public XsdFileSystemImportWizard() { super(ModelerXsdUiPlugin.getDefault(), TITLE, IMAGE); } Composite createEmptyPageControl( final Composite parent ) { return new Composite(parent, SWT.NONE); } /** * @see org.eclipse.jface.wizard.IWizard#createPageControls(org.eclipse.swt.widgets.Composite) */ @Override public void createPageControls( Composite pageContainer ) { if (importLicensed) { super.createPageControls(pageContainer); updateForProperties(); } } /** * Method declared on IWorkbenchWizard. */ @Override public void init( IWorkbench workbench, IStructuredSelection currentSelection ) { this.workbench = workbench; this.selection = currentSelection; List selectedResources = IDE.computeSelectedResources(currentSelection); if (!selectedResources.isEmpty()) { this.selection = new StructuredSelection(selectedResources); } if( !ModelerUiViewUtils.workspaceHasOpenModelProjects() ) { this.newProject = ModelerUiViewUtils.queryUserToCreateModelProject(); if( this.newProject != null ) { this.selection = new StructuredSelection(this.newProject); openProjectExists = true; } else { addPage(NoOpenProjectsWizardPage.getStandardPage()); return; } } if (importLicensed) { importMainPage = new XsdImportMainPage(); importFromFileMainPage = createFileMainPage(selection); importFromUrlMainPage = createUrlMainPage(selection); addPage(importMainPage); addPage(importFromFileMainPage); } else { // Create empty page WizardPage page = new WizardPage(XsdFileSystemImportWizard.class.getSimpleName(), TITLE, null) { @Override public void createControl( final Composite parent ) { setControl(createEmptyPageControl(parent)); } }; page.setMessage(NOT_LICENSED_MSG, IMessageProvider.ERROR); page.setPageComplete(false); addPage(page); } setNeedsProgressMonitor(true); } protected XsdFileSystemImportMainPage createFileMainPage( final IStructuredSelection selection ) { return new XsdFileSystemImportMainPage(workbench, selection); } protected XsdUrlImportMainPage createUrlMainPage( final IStructuredSelection selection ) { return new XsdUrlImportMainPage(workbench, selection); } /** * @see org.eclipse.jface.wizard.IWizard#performFinish() * @since 4.0 */ @Override public boolean finish() { boolean result = true; if (importMainPage.isImportFromUrl()) { importFromUrlMainPage.finish(); } else { importFromFileMainPage.finish(); } return result; } /** * @see org.eclipse.jface.wizard.IWizard#canFinish() * @since 4.0 */ @Override public boolean canFinish() { return super.canFinish(); } /** * @see org.eclipse.jface.wizard.IWizard#dispose() * @since 4.0 */ @Override public void dispose() { super.dispose(); } @Override public IWizardPage getNextPage( final IWizardPage page ) { if (importMainPage.isImportFromUrl()) { removePage(importFromFileMainPage); if (indexOf(importFromUrlMainPage) == -1) { addPage(importFromUrlMainPage); } } else { removePage(importFromUrlMainPage); if (indexOf(importFromFileMainPage) == -1) { addPage(importFromFileMainPage); } } return super.getNextPage(page); } /** * */ @Override public void setProperties(Properties properties) { this.designerProperties = properties; } private void updateForProperties() { if( this.newProject != null && this.designerProperties != null) { if( this.openProjectExists ) { DesignerPropertiesUtil.setProjectName(this.designerProperties, this.newProject.getName()); } } else if( this.designerProperties != null ) { DesignerPropertiesUtil.setProjectStatus(this.designerProperties, IPropertiesContext.NO_OPEN_PROJECT); } } }