1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
/**
* Opération annulable d'ajout d'équipement
* à la fiche de manoeuvre
* @author Vincent DAMIENS
*/
public class AddEquipmentOperations extends AbstractOperation {
private IWorkbenchPage page;
private SheetOfManoeuvre sheetOfManoeuvre;
private List<Object> oldSelection;
private DrawingEquipment[] newEquipments;
private int[] equipmentIndex;
private ISelection treeViewerSelection;
private ISelection tableViewerSelection;
public AddEquipmentOperations(String label, IWorkbenchPage page) {
super(label);
this.page = page;
// On récupére la fiche de manoeuvre
this.sheetOfManoeuvre = Activator.getDefault().getSheetOfManoeuvre();
// Récupération de l'arbre de la librairie d'équipements
LibrarieExplorerTreeView librarieView = (LibrarieExplorerTreeView) page
.findView(LibrarieExplorerTreeView.ID);
// Récupération de la sélection courante de l'arbre d'équipement
treeViewerSelection = librarieView.getViewer().getSelection();
// Récupération du tableau d'équipements
DrawingEquipmentTableView tableView = (DrawingEquipmentTableView) page
.findView(DrawingEquipmentTableView.ID);
// Récupération de la sélection courante du tableau d'équipement
tableViewerSelection = tableView.getViewer().getSelection();
//Création d'un copie de l'ancienne selection
if (tableViewerSelection instanceof IStructuredSelection) {
oldSelection = ((IStructuredSelection) tableViewerSelection)
.toList();
}
}
/**
* Execution de l'opération Ajout de l'équipement à la fiche de manoeuvre
*/
@Override
public IStatus execute(IProgressMonitor monitor, IAdaptable info)
throws ExecutionException {
if (treeViewerSelection instanceof IStructuredSelection) {
// Récupération des equipments sélectionnées dans la librairie
List<LibrarieEquipment> selectedEquipment = ((IStructuredSelection) treeViewerSelection)
.toList();
// Si la sélection n'est pas vide,
if (!selectedEquipment.isEmpty()) {
// Création de l'ensemble des nouvelles instances d'équipement
List<DrawingEquipment> drawingEquipmentList = new ArrayList<DrawingEquipment>();
for (LibrarieEquipment equipment : selectedEquipment) {
drawingEquipmentList.add(new DrawingEquipment(equipment));
}
// création d'une liste d'équipement
newEquipments = drawingEquipmentList
.toArray(new DrawingEquipment[drawingEquipmentList
.size()]);
// Création du tableau des indices auxquels seront
// ajoutés les équipements dans le schéma
equipmentIndex = new int[drawingEquipmentList
.size()];
int endIndex = sheetOfManoeuvre.getDrawing()
.getDrawingEquipment().size();
for (int i = 0; i < equipmentIndex.length; i++) {
equipmentIndex[i] = endIndex++;
}
// Ajout des équipments
AddDeleteEquipmentHelper.doAddEquipment(this.sheetOfManoeuvre,newEquipments, equipmentIndex);
}
}
return Status.OK_STATUS;
}
@Override
public IStatus redo(IProgressMonitor monitor, IAdaptable info)
throws ExecutionException {
//Ajout des équipement supprimés
AddDeleteEquipmentHelper.doAddEquipment(this.sheetOfManoeuvre,newEquipments, equipmentIndex);
return Status.OK_STATUS;
}
@Override
public IStatus undo(IProgressMonitor monitor, IAdaptable info)
throws ExecutionException {
//Suppresion des équipements et sélection des équipements
//qui étaient sélectionnées avant l'ajout
AddDeleteEquipmentHelper.doDeleteEquipment(this.sheetOfManoeuvre,newEquipments);
sheetOfManoeuvre.getDrawing().setSelectedItems(oldSelection);
return Status.OK_STATUS;
}
} |
Partager