/** * Returns the modelObject ID string from the given Graphiti context. * * @param context * @return - ID string for this modelObject. */ public static String getId(IContext context) { Object id = null; /** * IAddContext can also mean that a file is dragged, therefore we have to check if we are really * dragging a customTask */ if (context instanceof IAddContext && ((IAddContext) context).getNewObject() instanceof EObject) { EObject object = (EObject) ((IAddContext) context).getNewObject(); TargetRuntime rt = TargetRuntime.getCurrentRuntime(); for (CustomTaskDescriptor ct : rt.getCustomTasks()) { id = ct.getFeatureContainer().getId(object); if (id != null) { context.putProperty(CUSTOM_TASK_ID, id); return (String) id; } } } if (context instanceof IPictogramElementContext) { PictogramElement pe = ((IPictogramElementContext) context).getPictogramElement(); id = Graphiti.getPeService().getPropertyValue(pe, CUSTOM_TASK_ID); } else { id = context.getProperty(CUSTOM_TASK_ID); } return (String) id; }
@Override public IToolBehaviorProvider[] getAvailableToolBehaviorProviders() { if (toolBehaviorProviders == null) { DefaultBPMN2Editor editor = (DefaultBPMN2Editor) getDiagramEditor(); TargetRuntime rt = editor.getTargetRuntime(); IConfigurationElement[] config = Platform.getExtensionRegistry().getConfigurationElementsFor(Activator.UI_EXTENSION_ID); Bpmn2ToolBehaviorProvider provider = null; try { for (IConfigurationElement e : config) { if (e.getName().equals("toolProvider")) { // $NON-NLS-1$ String id = e.getAttribute("id"); // $NON-NLS-1$ String runtimeId = e.getAttribute("runtimeId"); // $NON-NLS-1$ if (rt != null && rt.getId().equals(runtimeId)) { String className = e.getAttribute("class"); // $NON-NLS-1$ ClassLoader cl = rt.getRuntimeExtension().getClass().getClassLoader(); Constructor ctor = null; Class providerClass = Class.forName(className, true, cl); ctor = providerClass.getConstructor(IDiagramTypeProvider.class); provider = (Bpmn2ToolBehaviorProvider) ctor.newInstance(this); break; } } } } catch (Exception ex) { Activator.logError(ex); } if (provider == null) provider = new Bpmn2ToolBehaviorProvider(this); toolBehaviorProviders = new IToolBehaviorProvider[] {provider}; } return toolBehaviorProviders; }
private ExtendedPropertiesAdapter getTargetRuntimeAdapter(EObject object) { PropertyExtensionDescriptor ped = TargetRuntime.getCurrentRuntime().getPropertyExtension(object.getClass()); if (ped == null && TargetRuntime.getCurrentRuntime() != TargetRuntime.getDefaultRuntime()) ped = TargetRuntime.getDefaultRuntime().getPropertyExtension(object.getClass()); if (ped != null) return ped.getAdapter(adapterFactory, object); return null; }
private ExtendedPropertiesAdapter getTargetRuntimeAdapter(EClass eclass) { PropertyExtensionDescriptor ped = TargetRuntime.getCurrentRuntime().getPropertyExtension(eclass.getInstanceClass()); if (ped == null && TargetRuntime.getCurrentRuntime() != TargetRuntime.getDefaultRuntime()) ped = TargetRuntime.getDefaultRuntime().getPropertyExtension(eclass.getInstanceClass()); if (ped != null) return ped.getAdapter(adapterFactory, eclass); return null; }
public Bpmn2ExtendedPropertiesSwitch(AdapterFactory adapterFactory) { super(); this.adapterFactory = adapterFactory; // This adapter can handle the <propertyExtension>s from foreign models also! for (TargetRuntime rt : TargetRuntime.getAllRuntimes()) { for (PropertyExtensionDescriptor ped : rt.getPropertyExtensions()) { AdapterRegistry.INSTANCE.registerFactory(ped.getInstanceClass(), adapterFactory); } } }
private CustomTaskDescriptor getCustomTaskDescriptor(EObject object) { TargetRuntime rt = getTargetRuntime(object); if (rt != null) { for (CustomTaskDescriptor ctd : rt.getCustomTaskDescriptors()) { if (ctd.getFeatureContainer() != null) { String id = ctd.getFeatureContainer().getId(object); if (ctd.getId().equals(id)) { return ctd; } } } } return null; }
/** * Returns the Java class that implements a Work Item Editor dialog for the given BaseElement if * the WID file defines one. * * @param baseElement * @return a Work Item Editor dialog class or null if the BaseElement is not a custom task * (defined by a WID file) or if the WID file does declare a "eclipse:customEditor" class. * <p>TODO: make this return an object instance and make sure it implements the {@code * WorkEditor} interface. */ public static WorkEditor getWorkItemEditor(BaseElement baseElement) { String customTaskId = CustomElementFeatureContainer.findId(baseElement); TargetRuntime rt = TargetRuntime.getRuntime(baseElement); JBPM5RuntimeExtension rte = (JBPM5RuntimeExtension) rt.getRuntimeExtension(); WorkItemDefinition wid = ((JBPM5RuntimeExtension) rte).getWorkItemDefinition(customTaskId); if (wid != null) { String customEditor = wid.getEclipseCustomEditor(); if (customEditor != null && !customEditor.isEmpty()) { try { Resource res = ExtendedPropertiesAdapter.getResource(baseElement); URI uri = res.getURI(); IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(uri.segment(1)); JavaProjectClassLoader cl = new JavaProjectClassLoader(project); if (cl != null) { return new SampleCustomEditor(Display.getDefault().getActiveShell()); } } catch (Exception ignore) { } } } return null; }