use of org.whole.lang.codebase.IPersistenceKit in project whole by wholeplatform.
the class WorkflowsIDEContentAssistVisitor method chooseResource.
protected boolean chooseResource(IEntity entity) {
Object customAction = null;
if (WorkflowsUtils.isResourceInPersistenceActivity(entity)) {
PersistenceActivity parent = (PersistenceActivity) entity.wGetParent();
Expression expression = parent.getPersistence();
IPersistenceKit persistenceKit = Matcher.match(WorkflowsEntityDescriptorEnum.StringLiteral, expression) ? (ReflectionFactory.hasPersistenceKit(expression.wStringValue()) ? ReflectionFactory.getPersistenceKit(expression.wStringValue()) : null) : ReflectionFactory.getDefaultPersistenceKit();
customAction = new ReplaceWithResourceAndPersistenceAction((IEclipseContext) getBindings().wGetValue("eclipse#eclipseContext"), WorkflowsEntityDescriptorEnum.StringLiteral, entity.wStringValue(), persistenceKit, "Select resource...") {
protected boolean isLoading(IEntity entity) {
return Matcher.match(WorkflowsEntityDescriptorEnum.LoadModel, entity.wGetParent());
}
protected ResourceKind getResourceKind(IEntity selectedEntity) {
switch(selectedEntity.wGetParent().wGet(WorkflowsFeatureDescriptorEnum.resourceKind).wEnumValue().getOrdinal()) {
default:
case ResourceKindEnum.WORKSPACE_ord:
return ResourceKind.WORKSPACE;
case ResourceKindEnum.FILE_SYSTEM_ord:
return ResourceKind.FILE_SYSTEM;
case ResourceKindEnum.CLASSPATH_ord:
return ResourceKind.CLASSPATH;
case ResourceKindEnum.URL_ord:
return ResourceKind.URL;
}
}
protected void performReplacePersistence(IEntity parent) {
((PersistenceActivity) parent).setPersistence(WorkflowsEntityFactory.instance.createStringLiteral(persistenceKit.getId()));
}
};
} else if (WorkflowsUtils.isResourceInArtifactsActivity(entity)) {
customAction = new ReplaceWithResourceAction((IEclipseContext) getBindings().wGetValue("eclipse#eclipseContext"), WorkflowsEntityDescriptorEnum.StringLiteral, entity.wStringValue(), "Select resource...") {
protected boolean isLoading(IEntity entity) {
return Matcher.match(WorkflowsEntityDescriptorEnum.LoadArtifacts, entity.wGetParent());
}
protected ResourceKind getResourceKind(IEntity selectedEntity) {
switch(selectedEntity.wGetParent().wGet(WorkflowsFeatureDescriptorEnum.rootResourceKind).wEnumValue().getOrdinal()) {
default:
case ResourceKindEnum.WORKSPACE_ord:
return ResourceKind.WORKSPACE;
case ResourceKindEnum.FILE_SYSTEM_ord:
return ResourceKind.FILE_SYSTEM;
case ResourceKindEnum.CLASSPATH_ord:
return ResourceKind.CLASSPATH;
case ResourceKindEnum.URL_ord:
return ResourceKind.URL;
}
}
};
} else
return false;
ActionsEntityFactory aef = ActionsEntityFactory.instance;
GroupAction customGroup = aef.createGroupAction();
customGroup.setFillStrategy(aef.createFlat());
customGroup.getText().setValue("workflows.custom");
customGroup.setActions(aef.createActions(aef.createCustomAction(customAction)));
return EntityUtils.isResolver(entity) ? mergeResult(StringLiteral, customGroup) : mergeResult(customGroup);
}
use of org.whole.lang.codebase.IPersistenceKit in project whole by wholeplatform.
the class TextTransferDropTargetListener method getCommand.
@Override
protected Command getCommand() {
String text = (String) getCurrentEvent().data;
Shell shell = getViewer().getControl().getShell();
IImportAsModelDialog dialog = factory.createImplicitElementImportAsModelDialog(shell, "Drop As", false);
if (!dialog.show())
return null;
IPersistenceKit persistenceKit = dialog.getPersistenceKit();
EntityDescriptor<?> stage = dialog.getStage();
try {
IBindingManager bm = BindingManagerFactory.instance.createBindingManager();
bm.wDefValue("parseFragments", true);
IEntity entity = persistenceKit.readModel(new StringPersistenceProvider(text, bm));
// FIXME workaround for selections with multiple entities
if (EntityUtils.isTuple(entity))
bm.wDef("syntheticRoot", entity);
boolean hasSyntheticRoot = bm.wIsSet("syntheticRoot");
IEntityIterator<IEntity> iterator;
boolean needsCompositeTarget = false;
if (hasSyntheticRoot) {
IEntity syntheticRoot = bm.wGet("syntheticRoot");
iterator = IteratorFactory.childIterator();
iterator.reset(syntheticRoot);
needsCompositeTarget = syntheticRoot.wSize() > 1;
} else {
iterator = IteratorFactory.selfIterator();
iterator.reset(entity);
}
List<IEntityPart> editParts = new ArrayList<IEntityPart>();
while (iterator.hasNext()) {
IEntity stageEntity = EntityUtils.clone(iterator.next());
stageEntity = ClipboardUtils.conditionalStageAdd(getTargetEditPart(), stage, stageEntity, needsCompositeTarget);
editParts.add(ClipboardUtils.createEditPart(getViewer().getEditPartFactory(), stageEntity));
}
ChangeBoundsRequest request = (ChangeBoundsRequest) getTargetRequest();
request.setEditParts(editParts);
return super.getCommand();
} catch (Exception e) {
return null;
}
}
use of org.whole.lang.codebase.IPersistenceKit in project whole by wholeplatform.
the class FileTransferDropTargetListener method getCommand.
@Override
protected Command getCommand() {
String[] filePaths = (String[]) getCurrentEvent().data;
List<EditPart> editParts = new ArrayList<EditPart>();
Shell shell = getViewer().getControl().getShell();
IImportAsModelDialog dialog = factory.createElementListImportAsModelDialog(shell, "DnD Import", false);
String[] fileNames = new String[filePaths.length];
for (int i = 0; i < fileNames.length; i++) fileNames[i] = filePaths[i].substring(filePaths[i].lastIndexOf(File.separatorChar) + 1);
dialog.setSelection(fileNames);
if (!dialog.show())
return null;
IPersistenceKit persistenceKit = dialog.getPersistenceKit();
EntityDescriptor<?> stage = dialog.getStage();
boolean needsCompositeTarget = filePaths.length > 1;
for (String filePath : filePaths) {
try {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
File file = new File(filePath);
IFile[] files = workspace.getRoot().findFilesForLocationURI(file.toURI());
IPersistenceProvider persistenceProvider = (files.length == 1) ? new IFilePersistenceProvider(files[0]) : new FilePersistenceProvider(file);
IEntity entity = persistenceKit.readModel(persistenceProvider);
entity = ClipboardUtils.conditionalStageAdd(getTargetEditPart(), stage, entity, needsCompositeTarget);
editParts.add(ClipboardUtils.createEditPart(getViewer().getEditPartFactory(), entity));
} catch (Exception e) {
// fail silently
}
}
if (!editParts.isEmpty()) {
ChangeBoundsRequest request = (ChangeBoundsRequest) getTargetRequest();
request.setEditParts(editParts);
} else
return null;
return super.getCommand();
}
Aggregations