package org.js.model.workflow.actions;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jwt.meta.model.core.Model;
import org.eclipse.jwt.meta.model.events.EventsFactory;
import org.eclipse.jwt.meta.model.organisations.OrganisationsFactory;
import org.eclipse.jwt.meta.model.processes.Activity;
import org.eclipse.jwt.meta.model.processes.ProcessesFactory;
import org.eclipse.jwt.we.conf.model.ConfModel;
import org.eclipse.jwt.we.editors.WEEditor;
import org.eclipse.jwt.we.editors.actions.external.WEExternalAction;
import org.eclipse.jwt.we.model.view.Diagram;
import org.eclipse.jwt.we.model.view.ViewFactory;
import org.js.model.workflow.util.WorkflowUtil;
/**
* this class is used as a template of customized jwt action.
*
* @author Xi
*
*/
public class MyAction extends WEExternalAction {
protected WEEditor workflowEditor;
protected Model workflowModel;
protected Activity activity;
protected Diagram diagram;
protected ConfModel confModel;
protected Resource workflowResource;
protected Resource workflowViewResource;
protected Resource workflowConfResource;
protected ProcessesFactory processFactory = ProcessesFactory.eINSTANCE;
protected ViewFactory viewFactory = ViewFactory.eINSTANCE;
protected EventsFactory eventsFactory = EventsFactory.eINSTANCE;
protected OrganisationsFactory orgFactory = OrganisationsFactory.eINSTANCE;
public MyAction() {
}
@Override
public ImageDescriptor getImage() {
return null;
}
@Override
public void run() {
initialRes();
save();
refresh();
}
/**
* initial all resources.
*/
public void initialRes() {
workflowEditor = getActiveWEEditor();
workflowResource = workflowEditor.getMainModelResource();
workflowModel = (Model) workflowEditor.getModel();
activity = workflowEditor.getDisplayedActivityModel();
diagram = workflowEditor.getDiagramData();
// activity = getActiveActivitySheet().getActivityModel();
// EditingDomain editingDomain = workflowEditor.getEmfEditingDomain();
workflowViewResource = WorkflowUtil.getWorkflowViewReousrce(workflowResource);
workflowConfResource = WorkflowUtil.getWorkflowConfReousrce(workflowResource);
confModel = (ConfModel) workflowConfResource.getContents().get(0);
}
/**
* save the workflow models.
*/
public void save() {
// Map<String, String> saveOptions = new HashMap<String, String>();
// saveOptions.put(XMLResource.OPTION_ENCODING, "UTF-8");
final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
try {
workflowModel.eResource().save(saveOptions);
// workflowModel.eResource().save(null);
diagram.eResource().save(saveOptions);
// confModel.eResource().save(saveOptions);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* refresh the jwt editor.
*/
public void refresh() {
workflowEditor.refreshOutline();
workflowEditor.refreshPages();
workflowEditor.refreshProperties();
workflowEditor.refreshZoom();
}
public WEEditor getWorkflowEditor() {
return workflowEditor;
}
public void setWorkflowEditor(WEEditor workflowEditor) {
this.workflowEditor = workflowEditor;
}
public Model getWorkflowModel() {
return workflowModel;
}
public void setWorkflowModel(Model workflowModel) {
this.workflowModel = workflowModel;
}
public Activity getActivity() {
return activity;
}
public void setActivity(Activity activity) {
this.activity = activity;
}
public Diagram getDiagram() {
return diagram;
}
public void setDiagram(Diagram diagram) {
this.diagram = diagram;
}
public ConfModel getConfModel() {
return confModel;
}
public void setConfModel(ConfModel confModel) {
this.confModel = confModel;
}
public Resource getWorkflowResource() {
return workflowResource;
}
public void setWorkflowResource(Resource workflowResource) {
this.workflowResource = workflowResource;
}
public Resource getWorkflowViewResource() {
return workflowViewResource;
}
public void setWorkflowViewResource(Resource workflowViewResource) {
this.workflowViewResource = workflowViewResource;
}
public Resource getWorkflowConfResource() {
return workflowConfResource;
}
public void setWorkflowConfResource(Resource workflowConfResource) {
this.workflowConfResource = workflowConfResource;
}
public ProcessesFactory getProcessFactory() {
return processFactory;
}
public void setProcessFactory(ProcessesFactory processFactory) {
this.processFactory = processFactory;
}
public ViewFactory getViewFactory() {
return viewFactory;
}
public void setViewFactory(ViewFactory viewFactory) {
this.viewFactory = viewFactory;
}
public EventsFactory getEventsFactory() {
return eventsFactory;
}
public void setEventsFactory(EventsFactory eventsFactory) {
this.eventsFactory = eventsFactory;
}
public OrganisationsFactory getOrgFactory() {
return orgFactory;
}
public void setOrgFactory(OrganisationsFactory orgFactory) {
this.orgFactory = orgFactory;
}
}