Search in sources :

Example 1 with NewGroupDialog

use of com.amalto.workbench.dialogs.NewGroupDialog in project tmdm-studio-se by Talend.

the class XSDNewGroupFromParticleAction method doAction.

public IStatus doAction() {
    try {
        IStructuredSelection selection = (IStructuredSelection) page.getTreeViewer().getSelection();
        selParticle = (XSDParticle) selection.getFirstElement();
        if (!(selParticle.getContainer() instanceof XSDModelGroup))
            return Status.CANCEL_STATUS;
        XSDModelGroup group = (XSDModelGroup) selParticle.getContainer();
        // get position of the selected particle in the container
        int index = 0;
        int i = 0;
        for (Iterator iter = group.getContents().iterator(); iter.hasNext(); ) {
            XSDParticle p = (XSDParticle) iter.next();
            if (p.equals(selParticle)) {
                index = i;
                break;
            }
            i++;
        }
        dialog = new NewGroupDialog(this, page.getSite().getShell());
        dialog.setBlockOnOpen(true);
        int ret = dialog.open();
        if (ret == Dialog.CANCEL) {
            return Status.CANCEL_STATUS;
        }
        XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
        // add an element declaration
        XSDElementDeclaration subElement = factory.createXSDElementDeclaration();
        // $NON-NLS-1$
        subElement.setName("subelement");
        // $NON-NLS-1$
        subElement.setTypeDefinition(schema.resolveSimpleTypeDefinition(schema.getSchemaForSchemaNamespace(), "string"));
        XSDParticle subParticle = factory.createXSDParticle();
        subParticle.setMinOccurs(1);
        subParticle.setMaxOccurs(1);
        subParticle.setContent(subElement);
        subParticle.updateElement();
        XSDModelGroup newGroup = factory.createXSDModelGroup();
        if (isChoice)
            newGroup.setCompositor(XSDCompositor.CHOICE_LITERAL);
        else if (isAll)
            newGroup.setCompositor(XSDCompositor.ALL_LITERAL);
        else
            newGroup.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
        newGroup.getContents().add(0, subParticle);
        newGroup.updateElement();
        XSDParticle particle = factory.createXSDParticle();
        particle.setContent(newGroup);
        particle.setMinOccurs(this.minOccurs);
        particle.setMaxOccurs(this.maxOccurs);
        group.getContents().add(index + 1, particle);
        group.updateElement();
        page.refresh();
        page.getTreeViewer().setSelection(new StructuredSelection(particle), true);
        page.markDirty();
    } catch (Exception e) {
        log.error(e.getMessage(), e);
        MessageDialog.openError(page.getSite().getShell(), Messages._Error, Messages.bind(Messages.XSDNewGroupFromParticleAction_ErrorMsg, e.getLocalizedMessage()));
        return Status.CANCEL_STATUS;
    }
    return Status.CANCEL_STATUS;
}
Also used : XSDFactory(org.eclipse.xsd.XSDFactory) XSDModelGroup(org.eclipse.xsd.XSDModelGroup) XSDElementDeclaration(org.eclipse.xsd.XSDElementDeclaration) Iterator(java.util.Iterator) StructuredSelection(org.eclipse.jface.viewers.StructuredSelection) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) XSDParticle(org.eclipse.xsd.XSDParticle) NewGroupDialog(com.amalto.workbench.dialogs.NewGroupDialog)

Example 2 with NewGroupDialog

use of com.amalto.workbench.dialogs.NewGroupDialog in project tmdm-studio-se by Talend.

the class XSDNewGroupFromTypeAction method doAction.

public IStatus doAction() {
    try {
        IStructuredSelection selection = (IStructuredSelection) page.getTreeViewer().getSelection();
        if (selection.getFirstElement() instanceof XSDComplexTypeDefinition) {
            XSDComplexTypeDefinition ctd = (XSDComplexTypeDefinition) selection.getFirstElement();
            if (!(ctd.getContent() instanceof XSDParticle))
                return Status.CANCEL_STATUS;
            if (!(((XSDParticle) ctd.getContent()).getTerm() instanceof XSDModelGroup))
                return Status.CANCEL_STATUS;
            group = (XSDModelGroup) ((XSDParticle) ctd.getContent()).getTerm();
        } else if (selection.getFirstElement() instanceof XSDParticle) {
            group = (XSDModelGroup) ((XSDParticle) selection.getFirstElement()).getTerm();
        } else {
            return Status.CANCEL_STATUS;
        }
        dialog = new NewGroupDialog(this, page.getSite().getShell());
        dialog.setBlockOnOpen(true);
        int ret = dialog.open();
        if (ret == Window.CANCEL) {
            return Status.CANCEL_STATUS;
        }
        XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
        // add an element declaration
        XSDElementDeclaration subElement = factory.createXSDElementDeclaration();
        // $NON-NLS-1$
        subElement.setName("subelement");
        // $NON-NLS-1$
        subElement.setTypeDefinition(schema.resolveSimpleTypeDefinition(schema.getSchemaForSchemaNamespace(), "string"));
        XSDParticle subParticle = factory.createXSDParticle();
        subParticle.setMinOccurs(1);
        subParticle.setMaxOccurs(1);
        subParticle.setContent(subElement);
        subParticle.updateElement();
        XSDModelGroup newGroup = factory.createXSDModelGroup();
        if (isChoice)
            newGroup.setCompositor(XSDCompositor.CHOICE_LITERAL);
        else if (isAll)
            newGroup.setCompositor(XSDCompositor.ALL_LITERAL);
        else
            newGroup.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
        newGroup.getContents().add(0, subParticle);
        newGroup.updateElement();
        XSDParticle particle = factory.createXSDParticle();
        particle.setContent(newGroup);
        particle.setMinOccurs(this.minOccurs);
        particle.setMaxOccurs(this.maxOccurs);
        group.getContents().add(0, particle);
        group.updateElement();
        page.refresh();
        page.getTreeViewer().setSelection(new StructuredSelection(particle), true);
        page.markDirty();
    } catch (Exception e) {
        log.error(e.getMessage(), e);
        MessageDialog.openError(page.getSite().getShell(), Messages._Error, Messages.bind(Messages.XSDNewGroupFromTypeAction_ErrorMsg, e.getLocalizedMessage()));
        return Status.CANCEL_STATUS;
    }
    return Status.OK_STATUS;
}
Also used : XSDFactory(org.eclipse.xsd.XSDFactory) XSDModelGroup(org.eclipse.xsd.XSDModelGroup) XSDElementDeclaration(org.eclipse.xsd.XSDElementDeclaration) StructuredSelection(org.eclipse.jface.viewers.StructuredSelection) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) XSDComplexTypeDefinition(org.eclipse.xsd.XSDComplexTypeDefinition) XSDParticle(org.eclipse.xsd.XSDParticle) NewGroupDialog(com.amalto.workbench.dialogs.NewGroupDialog)

Aggregations

NewGroupDialog (com.amalto.workbench.dialogs.NewGroupDialog)2 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)2 StructuredSelection (org.eclipse.jface.viewers.StructuredSelection)2 XSDElementDeclaration (org.eclipse.xsd.XSDElementDeclaration)2 XSDFactory (org.eclipse.xsd.XSDFactory)2 XSDModelGroup (org.eclipse.xsd.XSDModelGroup)2 XSDParticle (org.eclipse.xsd.XSDParticle)2 Iterator (java.util.Iterator)1 XSDComplexTypeDefinition (org.eclipse.xsd.XSDComplexTypeDefinition)1