Пример #1
0
  /**
   * Aggiorna la posizione di tutti i canali interessati dall'oggetto passato come parametro
   * d'ingresso.
   */
  public void updateListaSeqLinkPosizione() {
    ElementoSeqLink tmpCanale;

    for (int i = 0; i < lista.size(); i++) {
      tmpCanale = (ElementoSeqLink) lista.get(i);
      tmpCanale.updateCanalePosizione();
    }
  }
Пример #2
0
  /**
   * @param time
   * @return
   */
  public ElementoSeqLink getLinkAtTime(long time) {

    for (int i = 0; i < lista.size(); i++) {
      ElementoSeqLink linkCorr = (ElementoSeqLink) lista.get(i);
      if (linkCorr.getTimeFrom().getTime() == time) return linkCorr;
    }

    return null;
  }
Пример #3
0
 /** Setta l'ultimo messaggio dell'operatore * */
 public void setLast_link() {
   boolean bo = this.testAndSet();
   ElementoSeqLink app = (ElementoSeqLink) list_mess.get(0);
   int i = app.getPointStart().y;
   for (int j = 0; j < list_mess.size(); j++) {
     ElementoSeqLink link = (ElementoSeqLink) list_mess.get(j);
     if (link.getPointStart().y >= i) link_last = link;
   }
   testAndReset(bo);
 }
Пример #4
0
  /**
   * Aggiorna la posizione di tutti i canali interessati dall'oggetto passato come parametro
   * d'ingresso.
   */
  public void updateListaCanalePosizione(ElementoTime et) {
    ElementoSeqLink tmpCanale;

    for (int i = 0; i < lista.size(); i++) {
      tmpCanale = (ElementoSeqLink) lista.get(i);
      if ((et.equals(tmpCanale.getTime_one())) || (et.equals(tmpCanale.getTime_two()))) {
        tmpCanale.updateCanalePosizione();
      }
    }
  }
Пример #5
0
 public void setXYRet() {
   boolean bo = this.testAndSet();
   int retX = 0;
   int retY = 0;
   if (link_first.getFlussoDiretto()) {
     retX = link_first.getPointStart().x;
     retY = link_first.getPointStart().y;
   } else {
     retX = link_first.getPointEnd().x;
     retY = link_first.getPointEnd().y;
   }
   for (int i = 0; i < list_mess.size(); i++) {
     ElementoSeqLink link = (ElementoSeqLink) list_mess.get(i);
     if (link.getFlussoDiretto()) {
       if (link.getPointStart().x < retX) retX = link.getPointStart().x;
     } else {
       if (link.getPointEnd().x < retX) retX = link.getPointEnd().x;
     }
   }
   rettangoloX = retX;
   rettangoloY = retY;
   rettanY_back = rettangoloY;
   rettanX_back = rettangoloX;
   this.testAndReset(bo);
 }
Пример #6
0
 /** Restituisce true se il messaggio nomeC ? sincrono. */
 public boolean isSynchronous(String nomeC) {
   boolean sync = false;
   for (int i = 0; i < lista.size(); i++) {
     ElementoSeqLink link = (ElementoSeqLink) (lista.get(i));
     if (nomeC.equalsIgnoreCase(link.getName())) {
       if (link.getTipo() == ElementoSeqLink.SYNCHRONOUS) {
         sync = true;
         break;
       }
     }
   }
   return sync;
 }
Пример #7
0
  /** Clonazione dell'oggetto. */
  public ListaSeqLink cloneListaLink(ListaClasse lc, ListaTime lt) {
    ElementoSeqLink tmpElementoSeqLink = null;
    ElementoSeqLink clonedElementoSeqLink = null;
    ListaSeqLink cloned = new ListaSeqLink(plugData);
    int j = 0;

    while (j < lista.size()) {
      tmpElementoSeqLink = (ElementoSeqLink) (lista.get(j));
      clonedElementoSeqLink = tmpElementoSeqLink.cloneSeqLink(lc, lt);
      (cloned.lista).add(clonedElementoSeqLink);
      j++;
    }
    return cloned;
  }
Пример #8
0
 /** Rimuove il Constraint specificato come parametro. */
 public boolean removeElement(ElementoConstraint con) {
   int i;
   if (lista == null) return false;
   if (lista.isEmpty() == true) return false;
   try {
     i = lista.indexOf(con);
   } catch (IndexOutOfBoundsException e) {
     String s =
         "Indice fuori dai limiti ammessi \ndentro la classe ListaCanale$removeChannel.\n"
             + e.toString();
     JOptionPane.showMessageDialog(null, s, "Condizione di errore!", JOptionPane.WARNING_MESSAGE);
     return false;
   }
   ElementoSeqLink link = con.getLink();
   link.removeConstraint(con);
   lista.remove(i);
   return true;
 }
Пример #9
0
 /**
  * Aggiorna la posizione di tutti i canali collegati all'oggetto passato come parametro
  * d'ingresso.
  */
 public void updateListaConstraintPosizione(ElementoSeqLink prc) {
   ElementoConstraint tmpCon;
   for (int i = 0; i < lista.size(); i++) {
     tmpCon = (ElementoConstraint) lista.get(i);
     if (prc.equals(tmpCon.getLink())) {
       tmpCon.updateConstraintPosizione();
     }
   }
 }
Пример #10
0
  /** Imposta la posizione del grafico dell'elemento. */
  public void setPoint_mov(Point p) {
    boolean bo = testAndSet();

    if (grafico.isSelezionato_sim_bot_right()) {
      if (p.y > link_first.getPointStart().y + 40) {
        if (p.x <= rettangoloX + width_back) sim_height = p.y - rettangoloY - 5;
        else sim_width = p.x - rettangoloX - 5;
        sim_height = p.y - rettangoloY - 5;
      }
    } else if (grafico.isSelezionato_sim_bot_left()) {
      if (p.y > link_first.getPointStart().y + 40) {
        if (p.x >= rettanX_back) sim_height = p.y - rettangoloY - 5;
        else {
          sim_height = p.y - rettangoloY - 5;
          sim_width = width_back - 10 + rettanX_back - p.x;
          rettangoloX = p.x + 10;
        }
      }
    } else if (grafico.isSelezionato_sim_up_left()) {
      if (p.y < link_last.getPointStart().y - 50) {
        if (p.x >= rettanX_back) {
          sim_height = height_back - 25 + rettanY_back - p.y;
          rettangoloY = p.y + 25;
        } else {
          sim_width = width_back - 10 + rettanX_back - p.x;
          sim_height = height_back - 25 + rettanY_back - p.y;
          rettangoloX = p.x + 10;
          rettangoloY = p.y + 25;
        }
      }
    } else if (grafico.isSelezionato_sim_up_right()) {
      if (p.y < link_last.getPointStart().y - 50) {
        if (p.x <= rettangoloX + width_back) {
          sim_height = height_back - 25 + rettanY_back - p.y;
          rettangoloY = p.y + 25;
        } else {
          sim_width = p.x - rettangoloX - 5;
          sim_height = height_back - 25 + rettanY_back - p.y;
          rettangoloY = p.y + 25;
        }
      }
    }
    testAndReset(bo);
  }
Пример #11
0
 /** Aggiunge un nuovo link all'operatore* */
 public boolean addElem(ElementoSeqLink link) {
   boolean bo = this.testAndSet();
   if (list_mess.contains(link)) {
     return true; // gia c'è
   }
   list_mess.add(link);
   link.setSimultaneous(true, this.getId());
   testAndReset(bo);
   return true;
 }
Пример #12
0
  /**
   * Metodo per ricostruire la struttura delle classi a partire dalle informazioni memorizzate sul
   * file.
   */
  public void restoreFromFile() {
    GraficoCollegamentoSeqLink grafico1;
    GraficoLoopSeqLink grafico2;
    ElementoSeqLink msg;
    int tipomessaggio = 0;
    boolean flusso;

    if (lista != null) {
      for (int i = 0; i < lista.size(); i++) {
        msg = (ElementoSeqLink) (lista.get(i));
        // tipomessaggio = msg.getTipo();

        tipomessaggio = msg.getPosizione();

        flusso = msg.getFlussoDiretto();
        if (msg.ctrlIfLoop()) {
          grafico2 = (GraficoLoopSeqLink) (msg.getGrafico());
          grafico2.restoreFromFile(tipomessaggio, flusso);
        } else {
          grafico1 = (GraficoCollegamentoSeqLink) (msg.getGrafico());
          grafico1.restoreFromFile(tipomessaggio, flusso);
        }
        //
      }
    }
  }
Пример #13
0
  /** Rimuove tutti i link collegati all'oggetto preso in input. */
  public void removeAllLink(ElementoTime proc) {
    ElementoSeqLink canale;
    ElementoTime time_one;
    ElementoTime time_two;
    long tempo;
    int offset;
    int i = 0;

    if (lista == null) return;
    if (proc == null) return;
    tempo = proc.getTime();
    offset = proc.getMaxY() - proc.getMinY();
    try {
      while (i < lista.size()) {
        canale = (ElementoSeqLink) lista.get(i);
        if (canale != null) {
          time_one = canale.getTime_one();
          time_two = canale.getTime_two();
          if ((time_one == proc) || (time_two == proc)) {

            lista.remove(i);
            i = 0;
            continue;
          } else {
            if ((time_one.getTime() > tempo) || (time_two.getTime() > tempo)) {
              canale.updateCanalePosizione();
            }
          }
        }
        i++;
      }
    } catch (IndexOutOfBoundsException e) {
      String s =
          "Indice fuori dai limiti ammessi \n dentro la classe ListaSeqLink$removeAllLink().\n"
              + e.toString();
      JOptionPane.showMessageDialog(null, s, "Condizione di errore!", JOptionPane.WARNING_MESSAGE);
      return;
    }
  }
Пример #14
0
 /** Rimuove un link all'operatore* */
 public boolean removeElem(ElementoSeqLink link) {
   boolean bo = this.testAndSet();
   int i;
   if (list_mess.size() == 2) return false;
   if (list_mess == null) return false;
   try {
     i = list_mess.indexOf(link);
   } catch (IndexOutOfBoundsException e) {
     String s =
         "Indice fuori dai limiti ammessi \ndentro la classe ElementoSimo&removeElem.\n"
             + e.toString();
     JOptionPane.showMessageDialog(null, s, "Condizione di errore!", JOptionPane.WARNING_MESSAGE);
     return false;
   }
   link.setSimultaneous(false, 0);
   list_mess.remove(i);
   testAndReset(bo);
   return true;
 }
Пример #15
0
  /** Controlla se dopo lo spostamento sia stato selezionato o deselezionato qualche link * */
  public void CntrlElem() {
    boolean bo = this.testAndSet();
    ElementoSeqLink link;
    ElementoSeqLink link1;
    for (int i = 0; i < list_link.size(); i++) {
      if (!list_mess.contains(list_link.get(i))) {
        link = (ElementoSeqLink) list_link.get(i);
        if (grafico.getSimRectangle().contains(link.getPointStart())
            || grafico.getSimRectangle().contains(link.getPointEnd())) {
          if (link.isSimultaneous() || link.isParallel()) {
            setLast_link();
            setFirst_link();
            testAndReset(bo);
            return;
          }
          if (link.hasConstraint()) {
            if (link.isConstraintChCloFut()
                || link.isConstraintChOpFut()
                || link.isConstraintChCloPast()
                || link.isConstraintChOpPast()
                || link.isConstraintUnCloFut()
                || link.isConstraintUnOpFut()
                || link.isConstraintUnCloPast()
                || link.isConstraintUnOpPast()) {
              setLast_link();
              setFirst_link();
              testAndReset(bo);
              return;
            } else addElem(link);
          } else addElem(link);
        }
      }
    }

    for (int j = 0; j < list_link.size(); j++) {
      if (list_mess.contains(list_link.get(j))) {
        link1 = (ElementoSeqLink) list_link.get(j);
        if (!(grafico.getSimRectangle().contains(link1.getPointStart())
            || grafico.getSimRectangle().contains(link1.getPointEnd()))) {
          removeElem(link1);
        }
      }
    }
    setLast_link();
    setFirst_link();
    testAndReset(bo);
  }
Пример #16
0
 /** setta la variabile point_width */
 public void setSim_point_width() {
   boolean bo = this.testAndSet();
   int start;
   int end;
   ElementoSeqLink prec_lev;
   if (link_last.getFlussoDiretto()) {
     start = link_last.getPointStart().x;
     end = link_last.getPointEnd().x;
   } else {
     start = link_last.getPointEnd().x;
     end = link_last.getPointStart().x;
   }
   for (int i = 0; i < list_mess.size(); i++) {
     prec_lev = (ElementoSeqLink) list_mess.get(i);
     if (prec_lev.getFlussoDiretto()) {
       if (prec_lev.getPointStart().x < start) start = prec_lev.getPointStart().x;
       if (prec_lev.getPointEnd().x > end) end = prec_lev.getPointEnd().x;
     } else {
       if (prec_lev.getPointEnd().x < start) start = prec_lev.getPointEnd().x;
       if (prec_lev.getPointStart().x > end) end = prec_lev.getPointStart().x;
     }
   }
   sim_width = end - start;
   width_back = sim_width;
   this.testAndReset(bo);
 }
Пример #17
0
 /** setta l'altezza della figura* */
 public void setSim_Height() {
   boolean bo = this.testAndSet();
   sim_height = link_last.getPointEnd().y - link_first.getPointStart().y;
   height_back = sim_height;
   testAndReset(bo);
 }
Пример #18
0
  /** Stampa tutti gli oggetti della lista. */
  public void paintLista(Graphics2D g2D) {
    for (int i = 0; i < lista.size(); i++) {
      ElementoSeqLink esl = (ElementoSeqLink) lista.get(i);
      esl.paintCanale(g2D);
      if (esl.getPrec() != null) {
        if (esl.isStrict()) {
          if (esl.getFlussoDiretto())
            esl.creaGraficoStrict(
                esl.getPointStart().x,
                esl.getPointStart().y,
                esl.getPointStart().x,
                esl.getPrec().getPointEnd().y,
                g2D);
          else
            esl.creaGraficoStrict(
                esl.getPointEnd().x,
                esl.getPointEnd().y,
                esl.getPointEnd().x,
                esl.getPrec().getPointEnd().y,
                g2D);
        }

      } else if (esl.isStrict()) {
        if (esl.getFlussoDiretto())
          esl.creaGraficoStrict(
              esl.getPointStart().x,
              esl.getPointStart().y,
              esl.getPointStart().x,
              esl.getProcY(),
              g2D);
        else
          esl.creaGraficoStrict(
              esl.getPointEnd().x, esl.getPointEnd().y, esl.getPointEnd().x, esl.getProcY(), g2D);
      }
    }
  }