X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Fhandlers%2FNewPlantHandler.java;h=7429e775df3d5c756a53ec5eec0f14f4313a6936;hb=8c8a6f597d1c56ebe788a028d70c7851f58dae9f;hp=42e64cfe56579923246bfb4810d2effa33b60a20;hpb=d00bd5522f6a92bbfeb2a72a7d28ba25c3f36fed;p=simantics%2F3d.git diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/handlers/NewPlantHandler.java b/org.simantics.plant3d/src/org/simantics/plant3d/handlers/NewPlantHandler.java index 42e64cfe..7429e775 100644 --- a/org.simantics.plant3d/src/org/simantics/plant3d/handlers/NewPlantHandler.java +++ b/org.simantics.plant3d/src/org/simantics/plant3d/handlers/NewPlantHandler.java @@ -13,16 +13,42 @@ import org.simantics.db.WriteGraph; import org.simantics.db.common.request.WriteRequest; import org.simantics.db.common.utils.NameUtils; import org.simantics.db.exception.DatabaseException; +import org.simantics.db.layer0.adapter.ActionFactory; import org.simantics.layer0.Layer0; import org.simantics.plant3d.Activator; import org.simantics.plant3d.utils.P3DUtil; -public class NewPlantHandler extends AbstractHandler { +public class NewPlantHandler extends AbstractHandler implements ActionFactory { + // Action factory method + @Override + public Runnable create(final Object target) { + if (!(target instanceof Resource)) + return null; + + return new Runnable() { + @Override + public void run() { + createNewPlantJob((Resource) target); + } + }; + } + + // Handler method @Override public Object execute(ExecutionEvent event) throws ExecutionException { final Resource library = Simantics.getProject().get(); + createNewPlantJob(library); + return null; + } + + /** + * Create a new plant as a user-triggered job. + * + * @param library Parent resource for the new plant. + */ + public static void createNewPlantJob(final Resource library) { Job job = new Job("Create Plant ") { @Override protected IStatus run(IProgressMonitor monitor) { @@ -49,6 +75,5 @@ public class NewPlantHandler extends AbstractHandler { }; job.setUser(true); job.schedule(); - return null; } }