]> gerrit.simantics Code Review - simantics/3d.git/blob - org.simantics.plant3d/src/org/simantics/plant3d/handlers/NewPlantHandler.java
Merge "Publish Plant3D feature"
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / handlers / NewPlantHandler.java
1 package org.simantics.plant3d.handlers;
2
3 import org.eclipse.core.commands.AbstractHandler;
4 import org.eclipse.core.commands.ExecutionEvent;
5 import org.eclipse.core.commands.ExecutionException;
6 import org.eclipse.core.runtime.IProgressMonitor;
7 import org.eclipse.core.runtime.IStatus;
8 import org.eclipse.core.runtime.Status;
9 import org.eclipse.core.runtime.jobs.Job;
10 import org.simantics.Simantics;
11 import org.simantics.db.Resource;
12 import org.simantics.db.WriteGraph;
13 import org.simantics.db.common.request.WriteRequest;
14 import org.simantics.db.common.utils.NameUtils;
15 import org.simantics.db.exception.DatabaseException;
16 import org.simantics.layer0.Layer0;
17 import org.simantics.plant3d.Activator;
18 import org.simantics.plant3d.utils.P3DUtil;
19
20 public class NewPlantHandler extends AbstractHandler {
21
22         @Override
23         public Object execute(ExecutionEvent event) throws ExecutionException {
24                 final Resource library = Simantics.getProject().get();
25                 
26                 Job job = new Job("Create Plant ") {
27                         @Override
28                         protected IStatus run(IProgressMonitor monitor) {
29                                 monitor.beginTask("Create Plant" , IProgressMonitor.UNKNOWN);
30                                 try {
31                                         Simantics.getSession().syncRequest(new WriteRequest() {
32                                                 
33                                                 @Override
34                                                 public void perform(WriteGraph graph) throws DatabaseException {
35                                                         Layer0 l0 = Layer0.getInstance(graph);
36                                                         String modelName = NameUtils.findFreshName(graph, "Plant", library);
37                                                         Resource model = P3DUtil.createModel(graph, modelName);
38                                                         graph.claim(library, l0.ConsistsOf, model);
39                                                         
40                                                 }
41                                         });
42                                         return Status.OK_STATUS;
43                                 } catch (DatabaseException e) {
44                                         return new Status(IStatus.ERROR, Activator.PLUGIN_ID, getName() + " failed.",e);
45                                 }
46                         }
47                         
48                         
49                 };
50                 job.setUser(true);
51                 job.schedule();
52                 return null;
53         }
54 }