blob: c9a7b606f5863aff94e10b0654a82bb02bcba62c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013 Remain BV, Industrial-TSI BV 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:
* Wim Jongmam <wim.jongman@remainsoftware.com> - initial API and implementation
* Steven Spungin <steven@spungin.tv> - Ongoing Maintenance
******************************************************************************/
package org.eclipse.e4.tools.emf.ui.internal.imp;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor;
import org.eclipse.e4.tools.emf.ui.internal.ResourceProvider;
import org.eclipse.e4.tools.services.IResourcePool;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.MApplicationElement;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.wizard.Wizard;
public class ModelImportWizard extends Wizard {
private final Class<? extends MApplicationElement> applicationElement;
private ModelImportPage1 page1;
private final MApplication application;
private final AbstractComponentEditor editor;
private final String hint;
public ModelImportWizard(Class<? extends MApplicationElement> applicationElement, AbstractComponentEditor editor,
IResourcePool resourcePool) {
this(applicationElement, editor, "", resourcePool); //$NON-NLS-1$
}
public ModelImportWizard(Class<? extends MApplicationElement> applicationElement, AbstractComponentEditor editor,
String hint, IResourcePool resourcePool) {
this.applicationElement = applicationElement;
this.editor = editor;
this.hint = hint;
Object modelSelection = editor.getEditor().getModelProvider().getRoot().get(0);
if (modelSelection instanceof MApplication) {
application = (MApplication) modelSelection;
} else {
application = null;
}
setWindowTitle(Messages.ModelImportWizard_Model
+ " " + applicationElement.getSimpleName() + " " + Messages.ModelImportWizard_ImportWizard); //$NON-NLS-1$ //$NON-NLS-2$
setDefaultPageImageDescriptor(ImageDescriptor.createFromImage(resourcePool
.getImageUnchecked(ResourceProvider.IMG_Wizban16_imp3x_wiz)));
Assert.isNotNull(RegistryUtil.getStruct(applicationElement, getHint()),
Messages.ModelImportWizard_UnknownElement + ": " + applicationElement.getClass().getName()); //$NON-NLS-1$
}
@Override
public void addPages() {
page1 = new ModelImportPage1();
page1.setWizard(this);
addPage(page1);
}
@Override
public boolean performFinish() {
return true;
}
/**
* @return the {@link MApplicationElement} passed in the constructor.
*/
public Class<? extends MApplicationElement> getApplicationElement() {
return applicationElement;
}
/**
* @return the extension point name associated with the {@link MApplicationElement} that is passed in the
* constructor of
* this wizard.
* @see #MAPPING_EXTENSION
* @see #getApplicationElement()
*/
protected String getExtensionPointName() {
return RegistryUtil.getStruct(applicationElement, getHint()).getExtensionPointName();
}
/**
* @return the extension point id associated with the {@link MApplicationElement} that is passed in the constructor
* of
* this wizard.
* @see #MAPPING_EXTENSION
* @see #getApplicationElement()
*/
protected String getExtensionPoint() {
return RegistryUtil.getStruct(applicationElement, getHint()).getExtensionPoint();
}
/**
* @return the attribute name of the {@link IConfigurationElement} that
* contains the description that you want to see in the wizard page.
* @see #MAPPING_NAME
*/
protected String getMappingName() {
return RegistryUtil.getStruct(applicationElement, getHint()).getMappingName();
}
/**
* Returns the list of {@link MApplicationElement}s of the type passed in
* the constructor of the wizard.
*
*
*
* @return an array of {@link MApplicationElement}
*/
public MApplicationElement[] getElements(Class<? extends MApplicationElement> type) {
return RegistryUtil.getModelElements(type, getHint(), application, page1.getConfigurationElements());
}
public AbstractComponentEditor getEditor() {
return editor;
}
/**
* Returns if this is a live model.
*
* @return true or false
*/
public boolean isLiveModel() {
return editor.getEditor().isLiveModel();
}
/**
* Returns the hint that explains the meaning of the caller.
*
* @return the hint as a String
*/
public String getHint() {
return hint;
}
}