public void paint(Graphics g) {
   if (!braidDrawing.isDraw) {
     update(g);
     braidDrawing.isDraw = true;
   } else {
     g.drawImage(offScreenBuffer, 0, 0, this);
   }
 }
 public void update(Graphics g) {
   if (braidWordSet) {
     Graphics gr;
     if (offScreenBuffer == null
         || (!(offScreenBuffer.getWidth(this) == getBounds().width
             && offScreenBuffer.getHeight(this) == getBounds().height))) {
       offScreenBuffer = createImage(getBounds().width, getBounds().height);
     }
     gr = offScreenBuffer.getGraphics();
     braidDrawing.calcXPos(
         gr,
         getBounds(),
         animationStep,
         parameterAnimationStep2,
         parameterAnimationStep4,
         parameterAnimationStep5);
     braidDrawing.draw(gr);
     g.drawImage(offScreenBuffer, 0, 0, this);
   }
 }
 public void updateCurrentBraidWord() {
   currentWord = braidDrawing.word();
 }
 public int reduce() {
   if (!braidWordSet) {
     JOptionPane.showMessageDialog(
         null, "Vous devez d'abord saisir un mot de tresse ", "Erreur", JOptionPane.ERROR_MESSAGE);
     return 0;
   } else if (animationStep == 0) {
     braidDrawing.handleNormalDraw = true;
     braidDrawing.findHandle();
     if (braidDrawing.handleStrand == 0) {
       return 0;
     }
     braidDrawing.firstDraw = true;
     braidDrawing.insertTrivials();
     braidDrawing.trivialHeight = 0;
     animationStep = 1;
   } else if (animationStep == 1) {
     if (braidDrawing.trivialHeight >= 1) {
       braidDrawing.trivialHeight = 1;
       parameterAnimationStep2 = 1;
       animationStep = 2;
     } else {
       braidDrawing.trivialHeight += 0.1;
     }
   } else if (animationStep == 2) {
     braidDrawing.handleNormalDraw = false;
     if (parameterAnimationStep2 < 0) {
       parameterAnimationStep2 = 0;
       animationStep = 3;
     } else {
       parameterAnimationStep2 -= (float) (0.05);
     }
   } else if (animationStep == 3) {
     parameterAnimationStep4 = 0;
     animationStep = 4;
   } else if (animationStep == 4) {
     if (parameterAnimationStep4 >= 1) {
       braidDrawing.removeHandle();
       parameterAnimationStep2 = 1;
       parameterAnimationStep5 = 1;
       animationStep = 5;
     } else {
       parameterAnimationStep4 += (float) 0.05;
     }
   } else if (animationStep == 5) {
     if (parameterAnimationStep5 <= 0) {
       parameterAnimationStep5 = 0;
       animationStep = 6;
     } else {
       parameterAnimationStep5 -= (float) 0.05;
     }
   } else if (animationStep == 6) {
     if (braidDrawing.trivialHeight <= 0) {
       braidDrawing.trivialHeight = 0;
       animationStep = 7;
     } else {
       braidDrawing.trivialHeight -= 0.1;
     }
   } else if (animationStep == 7) {
     braidDrawing.removeTrivials();
     braidDrawing.handleNormalDraw = true;
     braidDrawing.handleStrand = 0;
     animationStep = 0;
     braidDrawing.handleBeginIndice = 0;
     braidDrawing.handleEndIndice = 0;
     return 2;
   } else {
     return 0;
   }
   braidWord = braidDrawing.word();
   return 1;
 }