예제 #1
0
 /** 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();
 }
예제 #2
0
  @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");
    }
  }
예제 #3
0
  @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();
  }
예제 #4
0
 /** @param caseSel Case à  sélectionner */
 public void selectCase(Case caseSel) {
   casesSelected.add(caseSel);
   caseSel.setBordure(true);
   caseSel.setCouleurBordure(Color.RED);
   caseSel.setHovered(false);
 }