/** Efface la sélection */ public void clearSelection() { if (casesSelected.size() > 1) { for (Case caseSel : casesSelected) { caseSel.setCouleurBordure(Color.darkGray); } } else if (!casesSelected.isEmpty()) { casesSelected.get(0).setCouleurBordure(Color.darkGray); } casesSelected.clear(); repaint(); }
@Override public void updateObservateur() { for (Observateur obs : listeObservateur) { ArrayList<Sprite> listSprite = new ArrayList<Sprite>(); for (Case caseSel : casesSelected) { listSprite.add(caseSel.getSprite()); } obs.update(listSprite, "Selection"); } }
@Override public void mouseReleased(MouseEvent arg0) { Object source = arg0.getSource(); if (source.getClass().equals(Case.class)) { // Désélection de(s) la case(s) précédente(s) if (!arg0.isControlDown() && !arg0.isShiftDown()) { if (!casesSelected.isEmpty()) clearSelection(); // Sélection de la nouvelle selectCase((Case) source); indiceShiftSelection[0] = cases.indexOf(((Case) source)); premierShiftOk = true; } else if (arg0.isControlDown()) { if (casesSelected.contains((Case) source)) { casesSelected.remove((Case) source); ((Case) source).setCouleurBordure(Color.darkGray); } else { // Sélection de la nouvelle selectCase((Case) source); } } else if (arg0.isShiftDown()) { if (premierShiftOk) { indiceShiftSelection[1] = cases.indexOf(((Case) source)); if (indiceShiftSelection[0] != indiceShiftSelection[1]) { if (!casesSelected.isEmpty()) clearSelection(); // Sélection de la nouvelle for (int i = Math.min(indiceShiftSelection[0], indiceShiftSelection[1]); i <= Math.max(indiceShiftSelection[0], indiceShiftSelection[1]); i++) selectCase(cases.get(i)); } } else { if (!casesSelected.isEmpty()) clearSelection(); // Sélection de la nouvelle selectCase((Case) source); indiceShiftSelection[0] = casesSelected.indexOf(((Case) source)); premierShiftOk = true; } } } // Mise à jour des observateurs this.updateObservateur(); }
/** @param caseSel Case à sélectionner */ public void selectCase(Case caseSel) { casesSelected.add(caseSel); caseSel.setBordure(true); caseSel.setCouleurBordure(Color.RED); caseSel.setHovered(false); }