package de.hftstuttgart.buildingphysics.application.handlers; import de.hftstuttgart.buildingphysics.BuildingPhysicsPackage; import java.io.IOException; import javax.inject.Named; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.ui.model.application.MApplication; import org.eclipse.e4.ui.services.IServiceConstants; import org.eclipse.e4.ui.workbench.modeling.EPartService; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.emf.ecore.xmi.XMLResource; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.swt.widgets.Shell; public class NewHandler { @Execute public void execute(MApplication application, @Named(IServiceConstants.ACTIVE_SHELL) Shell shell, EPartService partService) { final String pathToNewCatalog = HandlerUtils.newFileDialog(shell); if (pathToNewCatalog != null) { // create new catalog with resource at above path final AdapterFactoryEditingDomain domain = HandlerUtils.createEditingDomain(); final Resource catalogResource = domain.createResource("file://" + pathToNewCatalog); // assume default XMI factory was used to create an XML resource if (catalogResource instanceof XMLResource) { ((XMLResource)catalogResource).setEncoding("UTF-8"); } final EObject catalog = EcoreUtil.create(BuildingPhysicsPackage.eINSTANCE.getBuildingPhysicsCatalog()); catalogResource.getContents().add(catalog); // store new (empty) resource at selected path try { catalogResource.save(null); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } HandlerUtils.createNewPartWithCatalog(application.getContext(), partService, catalogResource); } } }