/** * 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(); } }
/** * @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; }
/** 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); }
/** * 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(); } } }
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); }
/** 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; }
/** 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; }
/** 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; }
/** * 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(); } } }
/** 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); }
/** 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; }
/** * 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); } // } } }
/** 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; } }
/** 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; }
/** 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); }
/** 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); }
/** 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); }
/** 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); } } }