/**
* <p>Copyright: Copyright 2010</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.ui.util;
import java.util.List;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.operations.AbstractOperation;
import org.eclipse.core.commands.operations.IUndoableOperation;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import com.hundsun.ares.studio.ui.editor.AbstractHSFormEditor;
/**
* ���ںϲ�����
* @author maxh
*
*/
public class ListOperation extends AbstractOperation {
List<AbstractOperation> operations;
public ListOperation(String label,List<AbstractOperation> operations) {
super(label);
this.operations = operations;
}
@Override
public IStatus execute(IProgressMonitor monitor, IAdaptable info)
throws ExecutionException {
for(int i = 0;i < operations.size();i++){
operations.get(i).execute(monitor, info);
}
return Status.OK_STATUS;
}
@Override
public IStatus redo(IProgressMonitor monitor, IAdaptable info)
throws ExecutionException {
// TODO Auto-generated method stub
return execute(monitor,info);
}
@Override
public IStatus undo(IProgressMonitor monitor, IAdaptable info)
throws ExecutionException {
for(int i = operations.size()-1;i >= 0 ;i--){
operations.get(i).undo(monitor, info);
}
return Status.OK_STATUS;
}
public void replace(){
for(AbstractOperation operation:operations){
AbstractHSFormEditor.getOperationHistory().replaceOperation(operation, new IUndoableOperation[]{});
}
AbstractHSFormEditor.getOperationHistory().add(this);
}
}