Class ComplexOperation

  • All Implemented Interfaces:
    IComplexOperation, org.eclipse.core.commands.operations.IUndoableOperation

    public class ComplexOperation
    extends org.eclipse.core.commands.operations.AbstractOperation
    implements IComplexOperation
    The Complex operation can bundle advanced combination of operation between property containers. The operation is constructed with the property containers involved in the operation. Then the operation is executed. As it is executed, the undo/redo operations is built up.
    Author:
    Christopher Mindus
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethodDescription
      voidaddOperation​(IComplexSubOperation oper)
      Adds a sub operation.
      voidaddProp​(PropCnr pc, GProp<?> gp)
      Adds a property.
      voidaddPropError​(GProp<?> gp, IPropErrorItem pei)
      Adds a property error.
      booleancanExecute()
      Returns whether the operation can be executed in its current state.
      booleancanRedo()
      Returns whether the operation can be redone in its current state.
      booleancanUndo()
      Returns whether the operation can be undone in its current state.
      org.eclipse.core.runtime.IStatusexecute​(org.eclipse.core.runtime.IProgressMonitor monitor, org.eclipse.core.runtime.IAdaptable info)
      Executes the Paste.
      ContainerParticipantgetContainerParticipant​(PropCnr pc)
      Gets a container participant or creates one.
      ComplexOperationgetGlobal()
      Gets the global complex operation in progress.
      booleanhasPerformedAnOperation()
      Checks if an operation has been performed successfully or if it's an empty operation for undo.
      voidinsertProp​(PropCnr pc, GProp<?> gp, int index)
      Inserts a property.
      voidmoveProp​(GProp<?> gp, PropCnr toContainer, Atom newName, int toIndex)
      Moves a property to another container.
      ContainerSelectionnewContainerSelection​(GProp<?> prop)
      Creates a new ContainerSelection instance for a property container involved in the operation.
      ContainerSelectionnewContainerSelection​(PropCnr parent, Atom childAtom)
      Creates a new ContainerSelection instance for a property container involved in the operation.
      org.eclipse.core.runtime.IStatusredo​(org.eclipse.core.runtime.IProgressMonitor monitor, org.eclipse.core.runtime.IAdaptable info)
      Redoes the Paste operation: same as Execute.
      voidremoveProp​(GProp<?> gp)
      Removes a property.
      voidremovePropError​(GProp<?> gp, java.lang.String errorID)
      Removes a property error.
      voidrenameProp​(GProp<?> gp, Atom newName)
      Renames a property.
      voidreorderProps​(PropCnr pc, Atom[] order)
      Reorder a property container.
      booleansetGlobal()
      Sets this operation as the current one for global operations.
      voidsetPropError​(GProp<?> gp, PropError pe)
      Sets all errors in a property.
      voidsetPropValue​(GProp<?> gp, java.lang.Object newValue)
      Sets a property value.
      voidsetSelectionAfter​(ContainerSelection[] selection)
      Sets the selection after the operation has been performed so that it can be restored at a redo operation, before or after it has been executed.
      voidsetSelectionBefore​(ContainerSelection[] selection)
      Sets the selection before the operation has been performed so that it can be restored at a undo operation, before or after it has been executed.
      org.eclipse.core.runtime.IStatusundo​(org.eclipse.core.runtime.IProgressMonitor monitor, org.eclipse.core.runtime.IAdaptable info)
      Performs the undo of a Paste operation.
      booleanunsetGlobal()
      Removes this operation as the current one for global operations.
      • Methods inherited from class org.eclipse.core.commands.operations.AbstractOperation

        addContext, dispose, getContexts, getLabel, hasContext, removeContext, setLabel, toString
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • ComplexOperation

        public ComplexOperation​(java.lang.String descr,
                                IComplexOperationSelection selectionImpl,
                                IPropUndoRedo undoRedo)
        Constructor of Add Operation.
        Parameters:
        descr - Description of the operation.
        selectionImpl - Selection to set in the Viewer of "undoRedo" when operation completes (also for undo), null for none.
        undoRedo - The undo/redo provider, null for no undo/redo support.
    • Method Detail

      • getGlobal

        public ComplexOperation getGlobal()
        Gets the global complex operation in progress.
        Returns:
        The global operation, or null for none.
      • setSelectionBefore

        public void setSelectionBefore​(ContainerSelection[] selection)
        Sets the selection before the operation has been performed so that it can be restored at a undo operation, before or after it has been executed.

        Use the method newContainerSelection(GProp) to create the array elements.

        Parameters:
        selection - The selection.
      • setSelectionAfter

        public void setSelectionAfter​(ContainerSelection[] selection)
        Sets the selection after the operation has been performed so that it can be restored at a redo operation, before or after it has been executed.

        Use the method newContainerSelection(GProp) to create the array elements.

        Parameters:
        selection - The selection.
      • hasPerformedAnOperation

        public boolean hasPerformedAnOperation()
        Checks if an operation has been performed successfully or if it's an empty operation for undo.
        Specified by:
        hasPerformedAnOperation in interface IComplexOperation
      • getContainerParticipant

        public ContainerParticipant getContainerParticipant​(PropCnr pc)
        Gets a container participant or creates one.
        Parameters:
        pc - The property container.
        Returns:
        The container participant.
      • newContainerSelection

        public ContainerSelection newContainerSelection​(GProp<?> prop)
        Creates a new ContainerSelection instance for a property container involved in the operation.
        Parameters:
        prop - A selected property.
        Returns:
        The ContainerSelection instance.
      • newContainerSelection

        public ContainerSelection newContainerSelection​(PropCnr parent,
                                                        Atom childAtom)
        Creates a new ContainerSelection instance for a property container involved in the operation.
        Parameters:
        parent - The parent of the selected property.
        childAtom - The atom of the selected property.
        Returns:
        The ContainerSelection instance.
      • canExecute

        public boolean canExecute()
        Returns whether the operation can be executed in its current state.
        Specified by:
        canExecute in interface org.eclipse.core.commands.operations.IUndoableOperation
        Overrides:
        canExecute in class org.eclipse.core.commands.operations.AbstractOperation
      • execute

        public org.eclipse.core.runtime.IStatus execute​(org.eclipse.core.runtime.IProgressMonitor monitor,
                                                        org.eclipse.core.runtime.IAdaptable info)
                                                 throws org.eclipse.core.commands.ExecutionException
        Executes the Paste.
        Specified by:
        execute in interface org.eclipse.core.commands.operations.IUndoableOperation
        Specified by:
        execute in class org.eclipse.core.commands.operations.AbstractOperation
        Throws:
        org.eclipse.core.commands.ExecutionException
      • canRedo

        public boolean canRedo()
        Returns whether the operation can be redone in its current state.
        Specified by:
        canRedo in interface org.eclipse.core.commands.operations.IUndoableOperation
        Overrides:
        canRedo in class org.eclipse.core.commands.operations.AbstractOperation
      • redo

        public org.eclipse.core.runtime.IStatus redo​(org.eclipse.core.runtime.IProgressMonitor monitor,
                                                     org.eclipse.core.runtime.IAdaptable info)
                                              throws org.eclipse.core.commands.ExecutionException
        Redoes the Paste operation: same as Execute.
        Specified by:
        redo in interface org.eclipse.core.commands.operations.IUndoableOperation
        Specified by:
        redo in class org.eclipse.core.commands.operations.AbstractOperation
        Throws:
        org.eclipse.core.commands.ExecutionException
      • canUndo

        public boolean canUndo()
        Returns whether the operation can be undone in its current state.
        Specified by:
        canUndo in interface org.eclipse.core.commands.operations.IUndoableOperation
        Overrides:
        canUndo in class org.eclipse.core.commands.operations.AbstractOperation
      • undo

        public org.eclipse.core.runtime.IStatus undo​(org.eclipse.core.runtime.IProgressMonitor monitor,
                                                     org.eclipse.core.runtime.IAdaptable info)
                                              throws org.eclipse.core.commands.ExecutionException
        Performs the undo of a Paste operation.
        Specified by:
        undo in interface org.eclipse.core.commands.operations.IUndoableOperation
        Specified by:
        undo in class org.eclipse.core.commands.operations.AbstractOperation
        Throws:
        org.eclipse.core.commands.ExecutionException
      • setGlobal

        public boolean setGlobal()
        Sets this operation as the current one for global operations.
        Returns:
        true for single global operation assigned, false if another one has been replaced.
      • unsetGlobal

        public boolean unsetGlobal()
        Removes this operation as the current one for global operations. If this operation is not the global one, nothing happens.
        Returns:
        true for success, false if this operation was not the global one.