/** * Copyright (c) 2005-2007 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 - Initial API and implementation */ package org.eclipse.emf.importer.ui.contribution.base; import java.util.List; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IPath; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.ui.IWorkingSet; import org.eclipse.ui.PartInitException; import org.eclipse.emf.codegen.ecore.genmodel.provider.GenModelEditPlugin; import org.eclipse.emf.common.ui.dialogs.DiagnosticDialog; import org.eclipse.emf.common.util.Diagnostic; import org.eclipse.emf.common.util.DiagnosticException; import org.eclipse.emf.common.util.Monitor; import org.eclipse.emf.converter.ui.contribution.base.ModelConverterWizard; import org.eclipse.emf.importer.ImporterPlugin; import org.eclipse.emf.importer.ModelImporter; import org.eclipse.emf.importer.ui.contribution.IModelImporterWizard; /** * @since 2.1.0 */ public abstract class ModelImporterWizard extends ModelConverterWizard implements IModelImporterWizard { protected IFile originalGenModelFile; protected IFile modelFile; protected String fileName; protected IPath genModelContainerPath; protected IPath projectLocation; protected IPath projectPath; protected IWorkingSet[] workingSets; public IWorkingSet[] getWorkingSets() { return workingSets; } public void setWorkingSets(IWorkingSet[] workingSets) { this.workingSets = workingSets; } public ModelImporter getModelImporter() { return (ModelImporter)getModelConverter(); } public List<String> getFileExtensions() { return getModelImporter().getFileExtensions(); } public void setOriginalGenModelFile(IFile originalGenModelFile) { this.originalGenModelFile = originalGenModelFile; if (originalGenModelFile != null) { setWindowTitle(ImporterPlugin.INSTANCE.getString("_UI_ReloadWizard_title")); try { getModelImporter().defineOriginalGenModelPath(originalGenModelFile.getFullPath()); } catch (DiagnosticException exception) { String message = getModelImporter().getOriginalGenModel() != null ? ImporterPlugin.INSTANCE.getString("_UI_ProblematicModel_message") : ImporterPlugin.INSTANCE.getString("_UI_InvalidModel_message"); Diagnostic diagnostic = exception.getDiagnostic(); DiagnosticDialog.open (getShell(), GenModelEditPlugin.INSTANCE.getString("_UI_ModelProblems_title"), message, diagnostic); } } } public IFile getOriginalGenModelFile() { return originalGenModelFile; } public void setModelFile(IFile modelFile) { this.modelFile = modelFile; getModelImporter().setModelFile(modelFile); } public IFile getModelFile() { return modelFile; } public void setGenModelFileName(String fileName) { this.fileName = fileName; getModelImporter().setGenModelFileName(fileName); } public String getGenModelFileName() { return fileName; } public void setGenModelContainerPath(IPath genModelContainerPath) { this.genModelContainerPath = genModelContainerPath; getModelImporter().setGenModelContainerPath(genModelContainerPath); } public IPath getGenModelContainerPath() { return genModelContainerPath; } public void setGenModelProjectLocation(IPath projectLocation) { this.projectLocation = projectLocation; getModelImporter().setGenModelProjectLocation(projectLocation); } public IPath getGenModelProjectLocation() { return projectLocation; } public void setGenModelProjectPath(IPath projectPath) { this.projectPath = projectPath; getModelImporter().setGenModelContainerPath(getModelImporter().computeGenModelContainerPath(projectPath)); getModelImporter().setModelProjectName(projectPath.segment(0)); } public IPath getGenModelProjectPath() { return projectPath; } @Override protected Diagnostic doPerformFinish(Monitor monitor) throws Exception { getModelImporter().prepareGenModelAndEPackages(monitor); getModelImporter().saveGenModelAndEPackages(monitor); IWorkingSet[] workingSets = getWorkingSets(); if (workingSets != null) { workbench.getWorkingSetManager().addToWorkingSets(ResourcesPlugin.getWorkspace().getRoot().getProject(getModelImporter().getModelProjectName()), workingSets); } return Diagnostic.OK_INSTANCE; } @Override public boolean performFinish() { if (super.performFinish()) { IFile genModelFile = getFile(getModelImporter().getGenModelPath()); if (getModelImporter().getOriginalGenModelPath() == null) { selectFile(genModelFile); } try { openEditor(genModelFile); } catch (PartInitException partInitException) { MessageDialog.openError(getShell(), ImporterPlugin.INSTANCE.getString("_UI_OpenEditor_title"), partInitException.getMessage()); return false; } return true; } else { return false; } } }