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 94
|
public class DeleteEquipmentOperation extends EquipmentOperation {
private SheetOfManoeuvre sheetOfManoeuvre;
private DrawingEquipment [] equipment;
private int [] equipmentIndex;
private ISelection tableViewerSelection;
public DeleteEquipmentOperation(String label,IUndoContext undoContext) {
super(label,undoContext);
//On récupére la fiche de manoeuvre
//Récupération de la fenêtre
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IWorkbenchPage page = window.getActivePage();
this.sheetOfManoeuvre = Activator.getDefault().getSheetOfManoeuvre();
// 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();
}
/**
* Execution de l'opération
* Suppresion de l'équipement de la fiche de manoeuvre
*/
@Override
public IStatus execute(IProgressMonitor monitor, IAdaptable info)
throws ExecutionException {
if (tableViewerSelection instanceof IStructuredSelection) {
//Récupération de la liste des équipments du schéma
List<DrawingEquipment> drawingEquipmentList = this.sheetOfManoeuvre.getDrawing().getDrawingEquipment();
System.out.println("drawingEquipmentList size "+drawingEquipmentList.size());
System.out.println("drawingEquipmentList get(0) "+drawingEquipmentList.get(0).getName());
System.out.println("selection size "+((IStructuredSelection) tableViewerSelection).toList().size());
// si nous avons au moins un équipement
if (!drawingEquipmentList.isEmpty()) {
//Création d'un dictionnaire qui classifie les équipements
//à supprimer dans l'ordre ascendant de
//leur indice dans le schéma
Map<Integer, DrawingEquipment> sortedMap = new TreeMap<Integer, DrawingEquipment>();
for(Object item : ((IStructuredSelection) tableViewerSelection).toList()){
if (item instanceof DrawingEquipment) {
//Chaque item est un equipement de la librairie
DrawingEquipment equipment = (DrawingEquipment) item;
System.out.println("equipement "+equipment.getName()+ " indice "+drawingEquipmentList.indexOf(equipment));
sortedMap.put(drawingEquipmentList.indexOf(equipment), equipment);
}
}
//Récupération des équipements à supprimer
//dans l'ordre de leur indice
equipment = sortedMap.values().
toArray(new DrawingEquipment [sortedMap.size()]);
//Création du tableau des indices croissants
//des équipments à supprimer
equipmentIndex = new int [equipment.length];
int i = 0;
for (int index : sortedMap.keySet()) {
equipmentIndex [i++] = index;
}
//suppression des équipements
AddDeleteEquipmentHelper.doDeleteEquipment(this.sheetOfManoeuvre,equipment);
}
}
return Status.OK_STATUS;
}
@Override
public IStatus undo(IProgressMonitor monitor, IAdaptable info)
throws ExecutionException {
//Ajout des équipements supprimés
try {
System.out.println("Undo Delete => add");
AddDeleteEquipmentHelper.doAddEquipment(this.sheetOfManoeuvre,equipment, equipmentIndex);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return Status.OK_STATUS;
}
@Override
public IStatus redo(IProgressMonitor monitor, IAdaptable info)
throws ExecutionException {
System.out.println("Redo Delete => delete");
//sélection des équipements qui étaient sélectionnées avant la suppression
sheetOfManoeuvre.getDrawing().setSelectedItems(Arrays.asList(equipment));
//re-suppression des équipements
return execute(monitor, info);
}
} |
Partager