use of org.eclipse.jface.viewers.TreePath in project tmdm-studio-se by Talend.
the class CopyAction method doRun.
protected void doRun() {
ITreeSelection selection = (ITreeSelection) getStructuredSelection();
List<TreePath> paths = new ArrayList<TreePath>(selection.getPaths().length);
for (TreePath path : selection.getPaths()) {
Object lastObj = path.getLastSegment();
if (lastObj instanceof WSRootRepositoryObject) {
continue;
}
if (lastObj instanceof FolderRepositoryObject) {
continue;
}
paths.add(path);
}
selection = new TreeSelection(paths.toArray(new TreePath[] {}));
LocalSelectionTransfer.getTransfer().setSelection(selection);
}
use of org.eclipse.jface.viewers.TreePath in project tmdm-studio-se by Talend.
the class XSDAnnotationLookupFieldsAction method doAction.
public IStatus doAction() {
try {
IStructuredSelection selection = (TreeSelection) page.getTreeViewer().getSelection();
XSDComponent xSDCom = null;
if (selection.getFirstElement() instanceof Element) {
TreePath tPath = ((TreeSelection) selection).getPaths()[0];
for (int i = 0; i < tPath.getSegmentCount(); i++) {
if (tPath.getSegment(i) instanceof XSDAnnotation)
xSDCom = (XSDAnnotation) (tPath.getSegment(i));
}
} else
xSDCom = (XSDComponent) selection.getFirstElement();
XSDAnnotationsStructure struc = new XSDAnnotationsStructure(xSDCom);
struc.setXSDSchema(schema);
// (XSDComponent) selection.getFirstElement());
if (struc.getAnnotation() == null) {
throw new RuntimeException(Messages.bind(Messages.XSDAnnotationLookupFieldsAction_ExceptionInfo, xSDCom.getClass().getName()));
}
dlg = new AnnotationOrderedListsDialog(new ArrayList(struc.getLookupFields().values()), new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
}
public void widgetSelected(SelectionEvent e) {
dlg.close();
}
}, page.getSite().getShell(), Messages.XSDAnnotationLookupFieldsAction_SetLookupFields, Messages.XSDAnnotationLookupFieldsAction_LookupFields, page, AnnotationOrderedListsDialog.AnnotationLookupField_ActionType, null);
dlg.setBlockOnOpen(true);
int ret = dlg.open();
if (ret == Window.CANCEL) {
return Status.CANCEL_STATUS;
}
struc.setAccessRole(dlg.getXPaths(), false, (IStructuredContentProvider) page.getTreeViewer().getContentProvider(), // $NON-NLS-1$
"X_Lookup_Field");
if (struc.hasChanged()) {
page.refresh();
page.getTreeViewer().expandToLevel(xSDCom, 2);
page.markDirty();
}
} catch (Exception e) {
log.error(e.getMessage(), e);
MessageDialog.openError(page.getSite().getShell(), Messages._Error, Messages.bind(Messages.XSDAnnotationLookupFieldsAction_ErrorMsg, e.getLocalizedMessage()));
return Status.CANCEL_STATUS;
}
return Status.OK_STATUS;
}
use of org.eclipse.jface.viewers.TreePath in project tmdm-studio-se by Talend.
the class XSDChangeToComplexTypeAction method doAction.
@Override
public IStatus doAction() {
try {
IStructuredSelection selection = (IStructuredSelection) page.getTreeViewer().getSelection();
isConcept = false;
TreePath tPath = null;
if (((TreeSelection) selection).getPaths().length > 0) {
tPath = ((TreeSelection) selection).getPaths()[0];
}
// declNew is the new created one not the selected one in tree vew
if (declNew != null) {
decl = declNew;
checkConcept();
} else if (selection.getFirstElement() instanceof XSDModelGroup) {
for (int i = 0; i < tPath.getSegmentCount(); i++) {
if (tPath.getSegment(i) instanceof XSDElementDeclaration) {
decl = (XSDElementDeclaration) tPath.getSegment(i);
} else if (tPath.getSegment(i) instanceof XSDParticle) {
decl = (XSDElementDeclaration) ((XSDParticle) tPath.getSegment(i)).getTerm();
}
}
checkConcept();
} else if (selection.getFirstElement() instanceof XSDElementDeclaration) {
decl = (XSDElementDeclaration) selection.getFirstElement();
// check if concept or "just" element
checkConcept();
} else if (selection.getFirstElement() instanceof XSDParticle) {
// if it's a particle,it should change the element of its
// content
decl = (XSDElementDeclaration) ((XSDParticle) selection.getFirstElement()).getContent();
} else {
// if(selection.getFirstElement() instanceof XSDParticle )
if (selection.getFirstElement() != null) {
// a sub element
decl = (XSDElementDeclaration) ((XSDParticle) selection.getFirstElement()).getTerm();
}
}
// /save current Type Definition
// XSDTypeDefinition current = decl.getTypeDefinition();
List<XSDComplexTypeDefinition> types = Util.getComplexTypes(decl.getSchema());
if (showDlg) {
if (decl.getTypeDefinition() instanceof XSDComplexTypeDefinition) {
boolean confirm = MessageDialog.openConfirm(page.getSite().getShell(), Messages.Warning, Messages.XSDChangeToCXX_ChangeToAnotherTypeWarning);
if (!confirm) {
return Status.CANCEL_STATUS;
}
}
if (tPath != null) {
for (int i = 0; i < tPath.getSegmentCount(); i++) {
if (tPath.getSegment(i) instanceof XSDElementDeclaration) {
XSDTypeDefinition type = (((XSDElementDeclaration) tPath.getSegment(i)).getTypeDefinition());
if (!type.equals(decl.getTypeDefinition())) {
types.remove(type);
}
}
if (tPath.getSegment(i) instanceof XSDParticle) {
XSDTypeDefinition type = ((XSDElementDeclaration) (((XSDParticle) tPath.getSegment(i)).getTerm())).getTypeDefinition();
if (!type.equals(decl.getTypeDefinition())) {
types.remove(type);
}
}
}
}
dialog = new // $NON-NLS-1$
ComplexTypeInputDialog(// $NON-NLS-1$
this, // $NON-NLS-1$
page.getSite().getShell(), // $NON-NLS-1$
"", // $NON-NLS-1$
schema, // $NON-NLS-1$
decl.getTypeDefinition(), // $NON-NLS-1$
types, isXSDModelGroup);
dialog.setBlockOnOpen(true);
int ret = dialog.open();
if (ret == Dialog.CANCEL) {
return Status.CANCEL_STATUS;
}
}
if (!showDlg && !validateType()) {
return Status.CANCEL_STATUS;
}
XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
// $NON-NLS-1$
boolean anonymous = (typeName == null) || ("".equals(typeName));
boolean alreadyExists = false;
XSDComplexTypeDefinition complexType = null;
// the sub element created if needed
XSDParticle subParticle = null;
XSDParticle groupParticle = null;
XSDElementDeclaration subElement = null;
// check if already exist
// add by ymli; fix the bug:0012278;
XSDElementDeclaration parent = null;
Object pObject = Util.getParent(decl);
if (pObject instanceof XSDElementDeclaration) {
parent = (XSDElementDeclaration) pObject;
}
if (!anonymous) {
List<XSDComplexTypeDefinition> list = Util.getComplexTypes(schema);
if (typeName.lastIndexOf(" : ") != -1) {
// $NON-NLS-1$
// $NON-NLS-1$
typeName = typeName.substring(0, typeName.lastIndexOf(" : "));
}
for (XSDComplexTypeDefinition td : list) {
if ((td.getName().equals(typeName))) {
alreadyExists = true;
complexType = td;
break;
}
}
} else {
XSDComplexTypeDefinition declComplexType = null;
if (parent != null && decl.getTypeDefinition() instanceof XSDComplexTypeDefinition) {
declComplexType = (XSDComplexTypeDefinition) decl.getTypeDefinition();
}
if (declComplexType != null && declComplexType.getSchema() != null && declComplexType.getName() == null) {
alreadyExists = true;
}
if (decl.getTypeDefinition() instanceof XSDSimpleTypeDefinition) {
alreadyExists = false;
}
}
if (alreadyExists) {
XSDParticle partCnt = (XSDParticle) complexType.getContentType();
partCnt.unsetMaxOccurs();
partCnt.unsetMinOccurs();
XSDTypeDefinition superType = null;
for (XSDTypeDefinition type : types) {
if (type.getName().equals(superTypeName)) {
superType = type;
break;
}
}
if (superType != null) {
XSDModelGroup mdlGrp = (XSDModelGroup) partCnt.getTerm();
boolean status = updateCompositorType(superType, mdlGrp);
if (!status) {
return Status.CANCEL_STATUS;
}
complexType.setDerivationMethod(XSDDerivationMethod.EXTENSION_LITERAL);
complexType.setBaseTypeDefinition(superType);
}
if (isAbstract) {
complexType.setAbstract(isAbstract);
} else {
complexType.unsetAbstract();
}
if (parent != null) {
parent.updateElement();
}
if (complexType != null) {
complexType.updateElement();
}
} else {
// Create if does not exist
// add an element declaration
subElement = factory.createXSDElementDeclaration();
if (declNew != null) {
// crate a new entity
if (declNew.getName() != null) {
// $NON-NLS-1$
subElement.setName(declNew.getName() + "Id");
}
} else {
// create a complex element
// $NON-NLS-1$
subElement.setName("subelement");
}
// $NON-NLS-1$
subElement.setTypeDefinition(schema.resolveSimpleTypeDefinition(schema.getSchemaForSchemaNamespace(), "string"));
subParticle = factory.createXSDParticle();
subParticle.unsetMaxOccurs();
subParticle.unsetMinOccurs();
subParticle.setContent(subElement);
subParticle.updateElement();
// create group
XSDModelGroup group = factory.createXSDModelGroup();
if (isChoice) {
group.setCompositor(XSDCompositor.CHOICE_LITERAL);
} else if (isAll) {
group.setCompositor(XSDCompositor.ALL_LITERAL);
} else {
group.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
}
group.getContents().add(0, subParticle);
group.updateElement();
// create the complex type
complexType = factory.createXSDComplexTypeDefinition();
if (!anonymous) {
XSDTypeDefinition superType = null;
for (XSDTypeDefinition type : types) {
if (type.getName().equals(superTypeName)) {
superType = type;
break;
}
}
complexType.setName(typeName);
if (superType != null) {
complexType.setDerivationMethod(XSDDerivationMethod.EXTENSION_LITERAL);
complexType.setBaseTypeDefinition(superType);
updateCompositorType(superType, group);
}
if (isAbstract) {
complexType.setAbstract(isAbstract);
} else {
complexType.unsetAbstract();
}
schema.getContents().add(complexType);
}
complexType.updateElement();
// add the group
groupParticle = factory.createXSDParticle();
groupParticle.unsetMaxOccurs();
groupParticle.unsetMinOccurs();
groupParticle.setContent(group);
groupParticle.updateElement();
complexType.setContent(groupParticle);
complexType.updateElement();
}
// set complex type to concept
if (anonymous) {
decl.setAnonymousTypeDefinition(complexType);
} else {
decl.setTypeDefinition(complexType);
}
if (isConcept) {
buildUniqueKey(factory, decl, complexType, anonymous, alreadyExists);
}
// if isConcept
decl.updateElement();
schema.update();
page.refresh();
declNew = null;
page.markDirty();
} catch (Exception e) {
log.error(e.getMessage(), e);
MessageDialog.openError(page.getSite().getShell(), Messages._Error, Messages.bind(Messages.XSDChangeToCXX_ErrorMsg1, e.getLocalizedMessage()));
return Status.CANCEL_STATUS;
}
return Status.OK_STATUS;
}
use of org.eclipse.jface.viewers.TreePath in project tmdm-studio-se by Talend.
the class XSDSetAnnotaionDisplayFormatAction method doAction.
public IStatus doAction() {
try {
IStructuredSelection selection = (TreeSelection) page.getTreeViewer().getSelection();
XSDComponent xSDCom = null;
if (selection.getFirstElement() instanceof Element) {
TreePath tPath = ((TreeSelection) selection).getPaths()[0];
for (int i = 0; i < tPath.getSegmentCount(); i++) {
if (tPath.getSegment(i) instanceof XSDAnnotation)
xSDCom = (XSDAnnotation) (tPath.getSegment(i));
}
} else
xSDCom = (XSDComponent) selection.getFirstElement();
XSDAnnotationsStructure struc = new XSDAnnotationsStructure(xSDCom);
// XSDAnnotationsStructure struc = new XSDAnnotationsStructure((XSDComponent)selection.getFirstElement());
if (struc.getAnnotation() == null) {
throw new RuntimeException(Messages.XSDSetAnnoXX_ExceptionInfo + selection.getFirstElement().getClass().getName());
}
dlg = new AnnotationLanguageLabelsDialog(struc.getDisplayFormat(), new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
}
public void widgetSelected(SelectionEvent e) {
dlg.close();
}
}, page.getSite().getShell(), Messages.XSDSetAnnoXX_DialogTitle2);
dlg.setBlockOnOpen(true);
int ret = dlg.open();
if (ret == Window.CANCEL) {
return Status.CANCEL_STATUS;
}
LinkedHashMap<String, String> fomats = dlg.getDescriptionsMap();
struc.setDisplayFormat(fomats);
if (struc.hasChanged()) {
page.refresh();
page.getTreeViewer().expandToLevel(selection.getFirstElement(), 2);
page.markDirty();
}
} catch (Exception e) {
log.error(e.getMessage(), e);
MessageDialog.openError(page.getSite().getShell(), Messages._Error, Messages.bind(Messages.XSDSetAnnoXX_ErrorMsg2, e.getLocalizedMessage()));
return Status.CANCEL_STATUS;
}
return Status.OK_STATUS;
}
use of org.eclipse.jface.viewers.TreePath in project tmdm-studio-se by Talend.
the class XSDSetAnnotationForeignKeyAction method doAction.
@Override
public IStatus doAction() {
try {
IStructuredSelection selection = (TreeSelection) page.getTreeViewer().getSelection();
XSDComponent xSDCom = null;
if (selection.getFirstElement() instanceof Element) {
TreePath tPath = ((TreeSelection) selection).getPaths()[0];
for (int i = 0; i < tPath.getSegmentCount(); i++) {
if (tPath.getSegment(i) instanceof XSDAnnotation) {
xSDCom = (XSDAnnotation) (tPath.getSegment(i));
}
}
} else {
xSDCom = (XSDComponent) selection.getFirstElement();
}
XSDAnnotationsStructure struc = null;
if (xSDCom != null) {
struc = new XSDAnnotationsStructure(xSDCom);
}
if (struc == null || struc.getAnnotation() == null) {
throw new RuntimeException(Messages.bind(Messages.UnableEditType, xSDCom.getClass().getName()));
}
sxid = getNewSimpleXpathInputDlg(struc.getForeignKey());
sxid.setLock(true);
sxid.setPKXpaths(XSDUtil.getAllPKXpaths(schema));
String fksep = struc.getForeignKeyNotSep();
if (fksep != null) {
sxid.setFkSep(Boolean.valueOf(fksep));
}
sxid.setBlockOnOpen(true);
int ret = sxid.open();
if (ret == Window.CANCEL) {
return Status.CANCEL_STATUS;
}
// $NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
String fk = "".equals(sxid.getXpath()) ? null : sxid.getXpath().replaceAll("'|\"", "");
// keep the foreignkey in memory to improve performance
if (Util.getForeignKeys() != null && fk != null) {
if (struc.getForeignKey() != null) {
Util.getForeignKeys().remove(Util.getConceptFromPath(struc.getForeignKey()));
}
Util.getForeignKeys().add(Util.getConceptFromPath(fk));
}
struc.setForeignKey(fk);
Boolean sep = sxid.getSepFk();
struc.setForeignKeyNotSep(sep);
updateAnnotationStructure(struc);
if (struc.hasChanged()) {
page.refresh();
page.getTreeViewer().expandToLevel(xSDCom, 2);
page.markDirty();
}
} catch (Exception e) {
log.error(e.getMessage(), e);
MessageDialog.openError(page.getSite().getShell(), Messages._Error, Messages.bind(Messages.ErrorForeignKey, e.getLocalizedMessage()));
return Status.CANCEL_STATUS;
}
return Status.OK_STATUS;
}
Aggregations