/* * 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.tools.textimport.ui.wizards; import org.eclipse.core.resources.IProject; import org.eclipse.jface.dialogs.IDialogSettings; 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.teiid.core.designer.util.CoreArgCheck; import org.teiid.core.designer.util.CoreStringUtil; import org.teiid.core.designer.util.I18nUtil; import org.teiid.designer.tools.textimport.ui.PluginConstants; import org.teiid.designer.tools.textimport.ui.TextImportContributionManager; import org.teiid.designer.tools.textimport.ui.TextImportPlugin; import org.teiid.designer.tools.textimport.ui.UiConstants; import org.teiid.designer.ui.common.wizard.AbstractWizard; import org.teiid.designer.ui.common.wizard.NoOpenProjectsWizardPage; import org.teiid.designer.ui.viewsupport.ModelerUiViewUtils; /** * @since 8.0 */ public class ImportTextWizard extends AbstractWizard implements PluginConstants.Images, IImportWizard, CoreStringUtil.Constants, UiConstants { private static final String I18N_PREFIX = I18nUtil.getPropertyPrefix(ImportTextWizard.class); private static final String WIDTH = "width"; //$NON-NLS-1$ private static final String HEIGHT = "height"; //$NON-NLS-1$ private static final String TITLE = getString("title"); //$NON-NLS-1$ private static final ImageDescriptor IMAGE = TextImportPlugin.getDefault().getImageDescriptor(IMPORT_PROJECT_ICON); private static final String NOT_LICENSED_MSG = getString("notLicensedMessage"); //$NON-NLS-1$ // Set Licensed to true. Leave licencing code in, just in case we decide // to license in the future... private static boolean importLicensed = true; /** * @since 4.0 */ private static String getString( final String id ) { return Util.getString(I18N_PREFIX + id); } private ImportTextMainPage importTextMainPage; private static ITextImportMainPage[] importers; /** * @since 4.0 */ public ImportTextWizard() { super(TextImportPlugin.getDefault(), TITLE, IMAGE); importers = TextImportContributionManager.getTextImporters(); } 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) { // If no dialog size settings, then use default of 500X500 IDialogSettings settings = getDialogSettings(); // Try to get height and width settings try { settings.getInt(WIDTH); settings.getInt(HEIGHT); // If height or width not found, set 500x500 default } catch (NumberFormatException e) { settings.put(WIDTH, 500); settings.put(HEIGHT, 500); } super.createPageControls(pageContainer); } } /** * @see org.eclipse.jface.wizard.IWizard#performFinish() * @since 4.0 */ @Override public boolean finish() { boolean result = true; String importType = this.importTextMainPage.getImportType(); for (int i = 0; i < importers.length; i++) { if (importers[i].getType().equals(importType)) { importers[i].finish(); break; } } return result; } /** * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection) * @since 4.0 */ @Override public void init( final IWorkbench workbench, final IStructuredSelection selection ) { IStructuredSelection finalSelection = selection; if( !ModelerUiViewUtils.workspaceHasOpenModelProjects() ) { IProject newProject = ModelerUiViewUtils.queryUserToCreateModelProject(); if( newProject != null ) { finalSelection = new StructuredSelection(newProject); } else { addPage(NoOpenProjectsWizardPage.getStandardPage()); return; } } if (importLicensed) { importTextMainPage = new ImportTextMainPage(finalSelection); addPage(importTextMainPage); // for (int i = 0; i < importers.length; i++) { addPage((IWizardPage)importers[i]); } } else { // Create empty page WizardPage page = new WizardPage(ImportTextWizard.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); } } /** * @see org.eclipse.jface.wizard.IWizard#getNextPage(org.eclipse.jface.wizard.IWizardPage) */ @Override public IWizardPage getNextPage( final IWizardPage thePage ) { /*---------------------------------------- Pages: A. importTypeSelectionPage B. importPage ------------------------------------------*/ IWizardPage result = null; // only need to define logic for those pages where the next page is dynamic. // the call to super will handle everything else. if (thePage == this.importTextMainPage) { String importType = this.importTextMainPage.getImportType(); for (int i = 0; i < importers.length; i++) { if (importers[i].getType().equals(importType)) { result = (IWizardPage)importers[i]; break; } } this.importTextMainPage.saveWidgetValues(); } else { boolean isContributed = false; // be sure thePage is contributed // for( int i=0; i<importers.length; i++ ) { for (int i = 0; i < importers.length; i++) { if (thePage.equals(importers[i])) { isContributed = true; break; } } if (!isContributed) CoreArgCheck.isTrue(false, "Unexpected TextImport Wizard Page:" + thePage); //$NON-NLS-1$ } return result; } /** * @see org.eclipse.jface.wizard.IWizard#getPreviousPage(org.eclipse.jface.wizard.IWizardPage) */ @Override public IWizardPage getPreviousPage( IWizardPage thePage ) { IWizardPage pPage = super.getPreviousPage(thePage); pPage.setVisible(true); return pPage; } /** * @see org.eclipse.jface.wizard.Wizard#canFinish() * @since 4.0 */ @Override public boolean canFinish() { boolean canFinish = false; IWizardPage[] pages = this.getPages(); // Can finish if all pages are complete IWizardPage page1 = pages[0]; if (page1.isPageComplete()) { IWizardPage page2 = null; String importType = this.importTextMainPage.getImportType(); for (int i = 0; i < importers.length; i++) { if (importers[i].getType().equals(importType)) { page2 = (IWizardPage)importers[i]; break; } } if (page2 != null && page2.isPageComplete()) { canFinish = true; } } return canFinish; } /** * @see org.eclipse.jface.wizard.IWizard#dispose() * @since 4.0 */ @Override public void dispose() { super.dispose(); } }