Search in sources :

Example 6 with XMLAttributeStep

use of com.twinsoft.convertigo.beans.steps.XMLAttributeStep in project convertigo by convertigo.

the class ChangeToAttributeStepAction method run.

/* (non-Javadoc)
	 * @see com.twinsoft.convertigo.eclipse.popup.actions.MyAbstractAction#run()
	 */
@Override
public void run() {
    Display display = Display.getDefault();
    Cursor waitCursor = new Cursor(display, SWT.CURSOR_WAIT);
    Shell shell = getParentShell();
    shell.setCursor(waitCursor);
    try {
        ProjectExplorerView explorerView = getProjectExplorerView();
        if (explorerView != null) {
            TreeObject treeObject = explorerView.getFirstSelectedTreeObject();
            Object databaseObject = treeObject.getObject();
            // XMLAttribute
            if ((databaseObject != null) && (databaseObject instanceof XMLAttributeStep)) {
                XMLAttributeStep xmlAttributeStep = (XMLAttributeStep) databaseObject;
                TreeParent treeParent = treeObject.getParent();
                DatabaseObjectTreeObject parentTreeObject = null;
                if (treeParent instanceof DatabaseObjectTreeObject)
                    parentTreeObject = (DatabaseObjectTreeObject) treeParent;
                else
                    parentTreeObject = (DatabaseObjectTreeObject) treeParent.getParent();
                if (parentTreeObject != null) {
                    // New Attribute step
                    AttributeStep attributeStep = new AttributeStep();
                    if (DatabaseObjectsManager.acceptDatabaseObjects(xmlAttributeStep.getParent(), attributeStep)) {
                        // Set properties
                        attributeStep.setOutput(xmlAttributeStep.isOutput());
                        attributeStep.setEnabled(xmlAttributeStep.isEnabled());
                        attributeStep.setComment(xmlAttributeStep.getComment());
                        // attributeStep.setExpression(elementStep.getExpression());
                        attributeStep.setNodeText(xmlAttributeStep.getNodeText());
                        attributeStep.setNodeName(xmlAttributeStep.getNodeName());
                        attributeStep.bNew = true;
                        attributeStep.hasChanged = true;
                        // Add new Attribute step to parent
                        DatabaseObject parentDbo = xmlAttributeStep.getParent();
                        parentDbo.add(attributeStep);
                        // Set correct order
                        if (parentDbo instanceof StepWithExpressions)
                            ((StepWithExpressions) parentDbo).insertAtOrder(attributeStep, xmlAttributeStep.priority);
                        else if (parentDbo instanceof Sequence)
                            ((Sequence) parentDbo).insertAtOrder(attributeStep, xmlAttributeStep.priority);
                        // Add new Attribute step in Tree
                        StepTreeObject stepTreeObject = new StepTreeObject(explorerView.viewer, xmlAttributeStep);
                        treeParent.addChild(stepTreeObject);
                        // Delete Element step
                        long oldPriority = xmlAttributeStep.priority;
                        xmlAttributeStep.delete();
                        attributeStep.getSequence().fireStepMoved(new StepEvent(attributeStep, String.valueOf(oldPriority)));
                        parentTreeObject.hasBeenModified(true);
                        explorerView.reloadTreeObject(parentTreeObject);
                        explorerView.setSelectedTreeObject(explorerView.findTreeObjectByUserObject(attributeStep));
                    } else {
                        throw new EngineException("You cannot paste to a " + xmlAttributeStep.getParent().getClass().getSimpleName() + " a database object of type " + attributeStep.getClass().getSimpleName());
                    }
                }
            }
            // Element
            if ((databaseObject != null) && (databaseObject instanceof ElementStep)) {
                ElementStep elementStep = (ElementStep) databaseObject;
                TreeParent treeParent = treeObject.getParent();
                DatabaseObjectTreeObject parentTreeObject = null;
                if (treeParent instanceof DatabaseObjectTreeObject)
                    parentTreeObject = (DatabaseObjectTreeObject) treeParent;
                else
                    parentTreeObject = (DatabaseObjectTreeObject) treeParent.getParent();
                if (parentTreeObject != null) {
                    // New Attribute step
                    AttributeStep attributeStep = new AttributeStep();
                    if (DatabaseObjectsManager.acceptDatabaseObjects(elementStep.getParent(), attributeStep)) {
                        // Set properties
                        attributeStep.setOutput(elementStep.isOutput());
                        attributeStep.setEnabled(elementStep.isEnabled());
                        attributeStep.setComment(elementStep.getComment());
                        attributeStep.setExpression(elementStep.getExpression());
                        attributeStep.setNodeText(elementStep.getNodeText());
                        attributeStep.setNodeName(elementStep.getNodeName());
                        attributeStep.bNew = true;
                        attributeStep.hasChanged = true;
                        // Add new Attribute step to parent
                        DatabaseObject parentDbo = elementStep.getParent();
                        parentDbo.add(attributeStep);
                        // Set correct order
                        if (parentDbo instanceof StepWithExpressions)
                            ((StepWithExpressions) parentDbo).insertAtOrder(attributeStep, elementStep.priority);
                        else if (parentDbo instanceof Sequence)
                            ((Sequence) parentDbo).insertAtOrder(attributeStep, elementStep.priority);
                        // Add new Attribute step in Tree
                        StepTreeObject stepTreeObject = new StepTreeObject(explorerView.viewer, elementStep);
                        treeParent.addChild(stepTreeObject);
                        // Delete Element step
                        long oldPriority = elementStep.priority;
                        elementStep.delete();
                        attributeStep.getSequence().fireStepMoved(new StepEvent(attributeStep, String.valueOf(oldPriority)));
                        parentTreeObject.hasBeenModified(true);
                        explorerView.reloadTreeObject(parentTreeObject);
                        explorerView.setSelectedTreeObject(explorerView.findTreeObjectByUserObject(attributeStep));
                    } else {
                        throw new EngineException("You cannot paste to a " + elementStep.getParent().getClass().getSimpleName() + " a database object of type " + attributeStep.getClass().getSimpleName());
                    }
                }
            }
        }
    } catch (Throwable e) {
        ConvertigoPlugin.logException(e, "Unable to change to Attribute step!");
    } finally {
        shell.setCursor(null);
        waitCursor.dispose();
    }
}
Also used : StepEvent(com.twinsoft.convertigo.beans.core.StepEvent) ProjectExplorerView(com.twinsoft.convertigo.eclipse.views.projectexplorer.ProjectExplorerView) DatabaseObjectTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.DatabaseObjectTreeObject) TreeParent(com.twinsoft.convertigo.eclipse.views.projectexplorer.TreeParent) StepTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.StepTreeObject) StepWithExpressions(com.twinsoft.convertigo.beans.core.StepWithExpressions) EngineException(com.twinsoft.convertigo.engine.EngineException) XMLAttributeStep(com.twinsoft.convertigo.beans.steps.XMLAttributeStep) Sequence(com.twinsoft.convertigo.beans.core.Sequence) Cursor(org.eclipse.swt.graphics.Cursor) Shell(org.eclipse.swt.widgets.Shell) AttributeStep(com.twinsoft.convertigo.beans.steps.AttributeStep) XMLAttributeStep(com.twinsoft.convertigo.beans.steps.XMLAttributeStep) TreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.TreeObject) DatabaseObjectTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.DatabaseObjectTreeObject) StepTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.StepTreeObject) DatabaseObject(com.twinsoft.convertigo.beans.core.DatabaseObject) DatabaseObject(com.twinsoft.convertigo.beans.core.DatabaseObject) TreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.TreeObject) DatabaseObjectTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.DatabaseObjectTreeObject) StepTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.StepTreeObject) ElementStep(com.twinsoft.convertigo.beans.steps.ElementStep) Display(org.eclipse.swt.widgets.Display)

Aggregations

XMLAttributeStep (com.twinsoft.convertigo.beans.steps.XMLAttributeStep)6 DatabaseObjectTreeObject (com.twinsoft.convertigo.eclipse.views.projectexplorer.model.DatabaseObjectTreeObject)5 TreeObject (com.twinsoft.convertigo.eclipse.views.projectexplorer.model.TreeObject)5 DatabaseObject (com.twinsoft.convertigo.beans.core.DatabaseObject)4 Sequence (com.twinsoft.convertigo.beans.core.Sequence)4 StepWithExpressions (com.twinsoft.convertigo.beans.core.StepWithExpressions)4 AttributeStep (com.twinsoft.convertigo.beans.steps.AttributeStep)4 StepTreeObject (com.twinsoft.convertigo.eclipse.views.projectexplorer.model.StepTreeObject)4 Step (com.twinsoft.convertigo.beans.core.Step)3 StepEvent (com.twinsoft.convertigo.beans.core.StepEvent)3 ElementStep (com.twinsoft.convertigo.beans.steps.ElementStep)3 XMLElementStep (com.twinsoft.convertigo.beans.steps.XMLElementStep)3 ProjectExplorerView (com.twinsoft.convertigo.eclipse.views.projectexplorer.ProjectExplorerView)3 TreeParent (com.twinsoft.convertigo.eclipse.views.projectexplorer.TreeParent)3 EngineException (com.twinsoft.convertigo.engine.EngineException)3 Cursor (org.eclipse.swt.graphics.Cursor)3 Display (org.eclipse.swt.widgets.Display)3 Shell (org.eclipse.swt.widgets.Shell)3 XMLVector (com.twinsoft.convertigo.beans.common.XMLVector)1 ElseStatement (com.twinsoft.convertigo.beans.statements.ElseStatement)1