/******************************************************************************* * Copyright (c) 2013 INRIA. * 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: * Juan David Villa Calle - initial API and implementation *******************************************************************************/ package fr.inria.atlanmod.emfviews.ui.wizard.view; import java.util.ArrayList; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; import org.eclipse.jface.viewers.CheckboxTreeViewer; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Tree; import fr.inria.atlanmod.emfviews.ui.Messages; public class AttributesSelectionPage extends WizardPage { ArrayList<String> inputMetamodels; String contributingMetamodels; ResourceSet virtualResourceSet; CheckboxTreeViewer checkboxTreeViewer; public AttributesSelectionPage() { super("AttributeSelectionPage"); setTitle("Excluded features"); setDescription("Select which features to hide on the view"); } public void setTreeContents() { CreateViewtypeScreen page = (CreateViewtypeScreen) getWizard().getPage( Messages.getString("VirtualMetamodelFileScreen.Page.Name")); inputMetamodels = page.getInputMetaModelPaths(); String nsURISs = ""; for (String nsURI : inputMetamodels) { if (nsURI.startsWith("platform:/resource/")) { nsURI = nsURI.replace("platform:/resource/", ""); } if (nsURISs.length() > 0) { nsURISs += "," + nsURI.toString(); } else { nsURISs = nsURI.toString(); } } contributingMetamodels = nsURISs; loadContributingMetamodels(contributingMetamodels); checkboxTreeViewer.setInput(virtualResourceSet.getPackageRegistry() .values()); } @Override public void createControl(Composite parent) { Composite container = new Composite(parent, SWT.NULL); setControl(container); checkboxTreeViewer = new CheckboxTreeViewer(container, SWT.BORDER); Tree tree = checkboxTreeViewer.getTree(); tree.setBounds(0, 0, 574, 282); AttributeSelectionContentProvider adapterContentProvider = new AttributeSelectionContentProvider(); checkboxTreeViewer.setContentProvider(adapterContentProvider); checkboxTreeViewer.setLabelProvider(new AdapterFactoryLabelProvider( new ReflectiveItemProviderAdapterFactory())); } public Object[] getCheckedElements() { return checkboxTreeViewer.getCheckedElements(); } private void loadContributingMetamodels(String contributingModelsURIs) { virtualResourceSet = new ResourceSetImpl(); String modelsURIs[] = contributingModelsURIs.split(","); for (int i = 0; i < modelsURIs.length; i++) { String modelURI = modelsURIs[i]; if (modelURI.startsWith("http")) { EPackage contributingEcoreModelPackage = EPackage.Registry.INSTANCE .getEPackage(modelURI); virtualResourceSet.getPackageRegistry().put( contributingEcoreModelPackage.getNsURI(), contributingEcoreModelPackage); } else if (modelURI.endsWith("ecore")) { Resource metamodelResource = virtualResourceSet.getResource( URI.createPlatformResourceURI(modelURI, true), true); EPackage mmPackage = (EPackage) metamodelResource.getContents() .get(0); virtualResourceSet.getPackageRegistry().put( mmPackage.getNsURI(), mmPackage); } } } }