Update of /cvsroot/fudaa/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data
In directory sc8-pr-cvs1:/tmp/cvs-serv15821/tr/data
Modified Files:
TrCalqueBord.java TrCalqueCL.java TrGroupeCL.java
TrModeleBord.java TrModeleBordAdapter.java TrModeleCL.java
TrModeleCLAbstract.java
Log Message:
boundary condition edition for telemac
Index: TrCalqueBord.java
===================================================================
RCS file: /cvsroot/fudaa/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrCalqueBord.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** TrCalqueBord.java 8 Oct 2003 12:07:11 -0000 1.4
--- TrCalqueBord.java 29 Oct 2003 11:54:33 -0000 1.5
***************
*** 1 ****
! /*
* @file ZCalqueBord.java
* @creation 25 août 2003
* @modification $Date$
* @license GNU General Public License 2
* @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
* @mail de...@fu...
*/
package org.fudaa.fudaa.tr.data;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.util.HashMap;
import javax.swing.Icon;
import org.fudaa.dodico.h2d.H2dBord;
import org.fudaa.dodico.h2d.H2dBorderPerFrontierInterface;
import org.fudaa.dodico.h2d.type.H2dBordType;
import org.fudaa.ebli.calque.ZCalqueAffichageDonnees;
import org.fudaa.ebli.calque.ZModeleDonnees;
import org.fudaa.ebli.commun.EbliListeSelection;
import org.fudaa.ebli.geometrie.GrBoite;
import org.fudaa.ebli.geometrie.GrMorphisme;
import org.fudaa.ebli.geometrie.GrPoint;
import org.fudaa.ebli.geometrie.GrPolygone;
import org.fudaa.ebli.geometrie.GrSegment;
import org.fudaa.ebli.trace.TraceLigne;
import org.fudaa.fudaa.commun.FudaaLib;
import org.fudaa.fudaa.tr.TrContextMenuBuilder;
import org.fudaa.fudaa.tr.TrResource;
/**
* Layer which manage the borders.
* @author deniger
* @version $Id$
*/
public class TrCalqueBord extends ZCalqueAffichageDonnees {
public class BordTraceLigneData {
HashMap bdTypeTlDataMap_;
public BordTraceLigneData() {}
public TraceLigne.Data getTlData(H2dBordType _bd) {
if (bdTypeTlDataMap_ == null)
bdTypeTlDataMap_= new HashMap(6);
TraceLigne.Data r= (TraceLigne.Data)bdTypeTlDataMap_.get(_bd);
if (r == null) {
r= initBordTraceLigneData(_bd);
bdTypeTlDataMap_.put(_bd, r);
}
return r;
}
protected TraceLigne.Data initBordTraceLigneData(H2dBordType _t) {
if (_t == H2dBordType.SOLIDE_FROTTEMENT)
return new TraceLigne.Data(
TraceLigne.MIXTE,
1f,
new Color(174, 105, 40));
else if (_t == H2dBordType.SOLIDE)
return new TraceLigne.Data(
TraceLigne.LISSE,
1f,
new Color(164, 95, 30));
else if (_t == H2dBordType.LIQUIDE_DEBIT_IMPOSE)
return new TraceLigne.Data(TraceLigne.LISSE, 1f, Color.red);
else if (_t == H2dBordType.LIQUIDE_ONDE_INCIDENCE)
return new TraceLigne.Data(TraceLigne.TIRETE, 1f, Color.cyan);
else if (_t == H2dBordType.LIQUIDE_HAUTEUR_VITESSES_IMPOSEES)
return new TraceLigne.Data(TraceLigne.TIRETE, 1f, Color.green);
else if (_t == H2dBordType.LIQUIDE_HAUTEUR_IMPOSEE)
return new TraceLigne.Data(TraceLigne.LISSE, 1f, Color.green);
else if (_t == H2dBordType.LIQUIDE_VITESSES_IMPOSEES)
return new TraceLigne.Data(TraceLigne.TIRETE, 1f, Color.cyan);
//liquid
else if (_t.isLiquide())
return new TraceLigne.Data(TraceLigne.LISSE, 1f, Color.cyan);
else
return new TraceLigne.Data(TraceLigne.LISSE, 1f, Color.black);
}
}
BordTraceLigneData bdTlData_;
TrContextMenuBuilder ctxBuilder_;
TrModeleBord m_;
TraceLigne tl_;
TraceLigne tlSelection_= null;
/**
*
*/
public TrCalqueBord(TrModeleBord _m) {
setTitle(TrResource.getS("Bords"));
m_= _m;
bdTlData_= new BordTraceLigneData();
}
public BordTraceLigneData getBordTraceLigneData() {
return bdTlData_;
}
private TraceLigne.Data getTlData(H2dBordType _t) {
return bdTlData_.getTlData(_t);
}
/**
*
*/
public ZModeleDonnees modeleDonnees() {
return m_;
}
/**
*
*/
public void paintComponent(Graphics g) {
GrBoite clip= getClipReel(g);
GrBoite domaine= m_.getDomaine();
//Si le domaine des polys n'est pas dans le domaine d'affichage on arrete
if (!domaine.intersectXY(clip)) {
return;
}
//on recupere le morphisme qui va bien (transfo coordonnees reelle
//en coordonnes ecran.
GrMorphisme versEcran= getVersEcran();
if (tl_ == null)
tl_= new TraceLigne((Graphics2D)g);
else
tl_.setGraphics((Graphics2D)g);
tl_.setEpaisseur(1f);
tl_.setCouleur(Color.red);
int n= m_.getNbFrontier();
GrSegment seg= new GrSegment();
seg.o= new GrPoint();
seg.e= new GrPoint();
GrPoint grpTemp= new GrPoint();
TraceLigne.Data data;
//une boite tempo contenenant les points fin et init
GrBoite b= new GrBoite();
int idxEnCours;
H2dBord.BordIndexIterator it= new H2dBord.BordIndexIterator();
H2dBord bdElt;
//on parcourt les frontiere du maillage
for (int i= 0; i < n; i++) {
H2dBorderPerFrontierInterface bd= m_.getBord(i);
int nbPt= m_.getNbPoint(i);
int nbBord= bd.getNbBord();
//on parcourt les different type de bord pour la frontiere i
for (int j= 0; j < nbBord; j++) {
bdElt= bd.getBord(j);
data= getTlData(bdElt.getType());
it.set(nbPt, bdElt);
idxEnCours= it.next();
m_.getPoint(i, idxEnCours, seg.o);
while (it.hasNext()) {
idxEnCours= it.next();
m_.getPoint(i, idxEnCours, seg.e);
seg.boite(b);
if (clip.intersectXY(b)) {
grpTemp.initialise(seg.e);
seg.autoApplique(versEcran);
tl_.init(data);
tl_.dessineTrait(seg.o.x, seg.o.y, seg.e.x, seg.e.y);
seg.o.initialise(grpTemp);
} else
seg.o.initialise(seg.e);
}
//pour faire le tour si bord unique.
if (nbBord == 1) {
idxEnCours= bdElt.getIdxDeb();
m_.getPoint(i, idxEnCours, seg.e);
seg.boite(b);
if (clip.intersectXY(b)) {
tl_.init(data);
seg.autoApplique(versEcran);
tl_.dessineTrait(seg.o.x, seg.o.y, seg.e.x, seg.e.y);
}
}
}
}
if ((!rapide_) && (!isSelectionEmpty())) {
if (tlSelection_ == null) {
tlSelection_= new TraceLigne(g);
} else
tlSelection_.setGraphics((Graphics2D)g);
initIconeSelection();
initCouleurSelection();
Color cs= couleurSelection();
Icon ic= iconeSelection();
if (isAttenue()) {
cs= attenueCouleur(cs);
ic= attenueIcone(ic);
}
tlSelection_.setCouleur(cs);
int nb= selection_.getMaxIndex();
int idxFrontiere;
for (int i= nb; i >= 0; i--) {
if (selection_.isSelected(i)) {
bdElt= m_.getBordInIdxGeneral(i);
idxFrontiere= bdElt.getIdxFrontiere();
it.set(m_.getNbPoint(idxFrontiere), bdElt);
idxEnCours= it.next();
m_.getPoint(idxFrontiere, idxEnCours, seg.o);
while (it.hasNext()) {
idxEnCours= it.next();
m_.getPoint(idxFrontiere, idxEnCours, seg.e);
seg.boite(b);
if (clip.intersectXY(b)) {
grpTemp.initialise(seg.e);
seg.autoApplique(versEcran);
tlSelection_.dessineTrait(seg.o.x, seg.o.y, seg.e.x, seg.e.y);
seg.o.initialise(grpTemp);
} else
seg.o.initialise(seg.e);
}
//pour faire le tour si bord unique.
if (bdElt.isUnique()) {
idxEnCours= bdElt.getIdxDeb();
m_.getPoint(idxFrontiere, idxEnCours, seg.e);
seg.boite(b);
if (clip.intersectXY(b)) {
seg.autoApplique(versEcran);
tlSelection_.dessineTrait(seg.o.x, seg.o.y, seg.e.x, seg.e.y);
}
}
}
}
}
}
/**
*
*/
public EbliListeSelection selection(
GrPoint _pt,
int _tolerance) {
GrMorphisme versEcran= getVersEcran();
GrBoite bClip= getDomaine();
bClip.autoApplique(versEcran);
if ((!bClip.contientXY(_pt)) && (bClip.distanceXY(_pt) > _tolerance))
return null;
int nb= m_.getNbTotalBord();
bClip= getClipReel(getGraphics());
H2dBord b;
GrSegment seg= new GrSegment();
seg.e= new GrPoint();
seg.o= new GrPoint();
GrPoint oReel= new GrPoint();
GrBoite boite= new GrBoite();
H2dBord.BordIndexIterator it= new H2dBord.BordIndexIterator();
int idxFrontiere, idxEnCours;
for (int i= 0; i < nb; i++) {
b= m_.getBordInIdxGeneral(i);
idxFrontiere= b.getIdxFrontiere();
it.set(m_.getNbPoint(idxFrontiere), b);
//le premier indice
idxEnCours= it.next();
//on initialise le point e.
m_.getPoint(idxFrontiere, idxEnCours, seg.e);
while (it.hasNext()) {
idxEnCours= it.next();
//on recupere les coordonnees du point suivant dans seg.o
m_.getPoint(idxFrontiere, idxEnCours, seg.o);
//le point e pour la prochaine iteration
oReel.initialise(seg.o);
seg.boite(boite);
if (boite.intersectXY(bClip)) {
seg.autoApplique(versEcran);
if (seg.estSelectionne(_tolerance, _pt)) {
EbliListeSelection r= new EbliListeSelection(nb);
r.setSelectionInterval(i, i);
return r;
}
//on initialise le point est avec les val sauv de o
seg.e.initialise(oReel);
}
}
}
return null;
}
/**
*
*/
public EbliListeSelection selection(GrPolygone _poly) {
return null;
}
}
\ No newline at end of file
--- 1 ----
! /*
* @file ZCalqueBord.java
* @creation 25 août 2003
* @modification $Date$
* @license GNU General Public License 2
* @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
* @mail de...@fu...
*/
package org.fudaa.fudaa.tr.data;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.util.HashMap;
import javax.swing.Icon;
import org.fudaa.dodico.h2d.H2dBord;
import org.fudaa.dodico.h2d.H2dBorderPerFrontierInterface;
import org.fudaa.dodico.h2d.type.H2dBordType;
import org.fudaa.ebli.calque.ZCalqueAffichageDonnees;
import org.fudaa.ebli.calque.ZModeleDonnees;
import org.fudaa.ebli.commun.EbliListeSelection;
import org.fudaa.ebli.geometrie.GrBoite;
import org.fudaa.ebli.geometrie.GrMorphisme;
import org.fudaa.ebli.geometrie.GrPoint;
import org.fudaa.ebli.geometrie.GrPolygone;
import org.fudaa.ebli.geometrie.GrSegment;
import org.fudaa.ebli.trace.TraceLigne;
import org.fudaa.fudaa.commun.FudaaLib;
import org.fudaa.fudaa.tr.TrContextMenuBuilder;
import org.fudaa.fudaa.tr.TrResource;
/**
* Layer which manage the borders.
* @author deniger
* @version $Id$
*/
public class TrCalqueBord extends ZCalqueAffichageDonnees {
public class BordTraceLigneData {
HashMap bdTypeTlDataMap_;
public BordTraceLigneData() {}
public TraceLigne.Data getTlData(H2dBordType _bd) {
if (bdTypeTlDataMap_ == null)
bdTypeTlDataMap_= new HashMap(6);
TraceLigne.Data r= (TraceLigne.Data)bdTypeTlDataMap_.get(_bd);
if (r == null) {
r= initBordTraceLigneData(_bd);
bdTypeTlDataMap_.put(_bd, r);
}
return r;
}
protected TraceLigne.Data initBordTraceLigneData(H2dBordType _t) {
if (_t == H2dBordType.SOLIDE_FROTTEMENT)
return new TraceLigne.Data(
TraceLigne.MIXTE,
1f,
new Color(174, 105, 40));
else if (_t == H2dBordType.SOLIDE)
return new TraceLigne.Data(
TraceLigne.LISSE,
1f,
new Color(164, 95, 30));
else if (_t == H2dBordType.LIQUIDE_DEBIT_IMPOSE)
return new TraceLigne.Data(TraceLigne.LISSE, 1f, Color.red);
else if (_t == H2dBordType.LIQUIDE_ONDE_INCIDENCE)
return new TraceLigne.Data(TraceLigne.TIRETE, 1f, Color.cyan);
else if (_t == H2dBordType.LIQUIDE_HAUTEUR_VITESSES_IMPOSEES)
return new TraceLigne.Data(TraceLigne.TIRETE, 1f, Color.green);
else if (_t == H2dBordType.LIQUIDE_HAUTEUR_IMPOSEE)
return new TraceLigne.Data(TraceLigne.LISSE, 1f, Color.green);
else if (_t == H2dBordType.LIQUIDE_VITESSES_IMPOSEES)
return new TraceLigne.Data(TraceLigne.TIRETE, 1f, Color.cyan);
//liquid
else if (_t.isLiquide())
return new TraceLigne.Data(TraceLigne.LISSE, 1f, Color.cyan);
else
return new TraceLigne.Data(TraceLigne.LISSE, 1f, Color.black);
}
}
BordTraceLigneData bdTlData_;
TrModeleBord m_;
TraceLigne tl_;
TraceLigne tlSelection_= null;
/**
*
*/
public TrCalqueBord(TrModeleBord _m) {
setTitle(TrResource.getS("Bords"));
m_= _m;
bdTlData_= new BordTraceLigneData();
}
public BordTraceLigneData getBordTraceLigneData() {
return bdTlData_;
}
private TraceLigne.Data getTlData(H2dBordType _t) {
return bdTlData_.getTlData(_t);
}
/**
*
*/
public ZModeleDonnees modeleDonnees() {
return m_;
}
/**
*
*/
public void paintComponent(Graphics g) {
GrBoite clip= getClipReel(g);
GrBoite domaine= m_.getDomaine();
//Si le domaine des polys n'est pas dans le domaine d'affichage on arrete
if (!domaine.intersectXY(clip)) {
return;
}
//on recupere le morphisme qui va bien (transfo coordonnees reelle
//en coordonnes ecran.
GrMorphisme versEcran= getVersEcran();
if (tl_ == null)
tl_= new TraceLigne((Graphics2D)g);
else
tl_.setGraphics((Graphics2D)g);
tl_.setEpaisseur(1f);
tl_.setCouleur(Color.red);
int n= m_.getNbFrontier();
GrSegment seg= new GrSegment();
seg.o= new GrPoint();
seg.e= new GrPoint();
GrPoint grpTemp= new GrPoint();
TraceLigne.Data data;
//une boite tempo contenenant les points fin et init
GrBoite b= new GrBoite();
int idxEnCours;
H2dBord.BordIndexIterator it= new H2dBord.BordIndexIterator();
H2dBord bdElt;
//on parcourt les frontiere du maillage
for (int i= 0; i < n; i++) {
H2dBorderPerFrontierInterface bd= m_.getBord(i);
int nbPt= bd.getNbPt();
int nbBord= bd.getNbBord();
//on parcourt les different type de bord pour la frontiere i
for (int j= 0; j < nbBord; j++) {
bdElt= bd.getBord(j);
data= getTlData(bdElt.getType());
it.set(nbPt, bdElt);
idxEnCours= it.next();
m_.getPoint(bd.getCl(idxEnCours).getIndexPt(), seg.o);
while (it.hasNext()) {
idxEnCours= it.next();
m_.getPoint(bd.getCl(idxEnCours).getIndexPt(), seg.e);
seg.boite(b);
if (clip.intersectXY(b)) {
grpTemp.initialise(seg.e);
seg.autoApplique(versEcran);
tl_.init(data);
tl_.dessineTrait(seg.o.x, seg.o.y, seg.e.x, seg.e.y);
seg.o.initialise(grpTemp);
} else
seg.o.initialise(seg.e);
}
//pour faire le tour si bord unique.
if (nbBord == 1) {
idxEnCours= bdElt.getIdxDeb();
m_.getPoint(bd.getCl(idxEnCours).getIndexPt(), seg.e);
seg.boite(b);
if (clip.intersectXY(b)) {
tl_.init(data);
seg.autoApplique(versEcran);
tl_.dessineTrait(seg.o.x, seg.o.y, seg.e.x, seg.e.y);
}
}
}
}
if ((!rapide_) && (!isSelectionEmpty())) {
if (tlSelection_ == null) {
tlSelection_= new TraceLigne(g);
} else
tlSelection_.setGraphics((Graphics2D)g);
initIconeSelection();
initCouleurSelection();
Color cs= couleurSelection();
Icon ic= iconeSelection();
if (isAttenue()) {
cs= attenueCouleur(cs);
ic= attenueIcone(ic);
}
tlSelection_.setCouleur(cs);
int nb= selection_.getMaxIndex();
for (int i= nb; i >= 0; i--) {
if (selection_.isSelected(i)) {
bdElt= m_.getBordInIdxGeneral(i);
// idxFrontiere= bdElt.getIdxFrontiere();
H2dBorderPerFrontierInterface bd= m_.getBord(bdElt.getIdxFrontiere());
it.set(bd.getNbPt(), bdElt);
idxEnCours= it.next();
m_.getPoint(bd.getCl(idxEnCours).getIndexPt(), seg.o);
while (it.hasNext()) {
idxEnCours= it.next();
m_.getPoint(bd.getCl(idxEnCours).getIndexPt(), seg.e);
seg.boite(b);
if (clip.intersectXY(b)) {
grpTemp.initialise(seg.e);
seg.autoApplique(versEcran);
tlSelection_.dessineTrait(seg.o.x, seg.o.y, seg.e.x, seg.e.y);
seg.o.initialise(grpTemp);
} else
seg.o.initialise(seg.e);
}
//pour faire le tour si bord unique.
if (bdElt.isUnique()) {
idxEnCours= bdElt.getIdxDeb();
m_.getPoint(bd.getCl(idxEnCours).getIndexPt(), seg.e);
seg.boite(b);
if (clip.intersectXY(b)) {
seg.autoApplique(versEcran);
tlSelection_.dessineTrait(seg.o.x, seg.o.y, seg.e.x, seg.e.y);
}
}
}
}
}
}
/**
*
*/
public EbliListeSelection selection(GrPoint _pt, int _tolerance) {
GrMorphisme versEcran= getVersEcran();
GrBoite bClip= getDomaine();
bClip.autoApplique(versEcran);
if ((!bClip.contientXY(_pt)) && (bClip.distanceXY(_pt) > _tolerance))
return null;
int nb= m_.getNbTotalBord();
bClip= getClipReel(getGraphics());
H2dBord b;
GrSegment seg= new GrSegment();
seg.e= new GrPoint();
seg.o= new GrPoint();
GrPoint oReel= new GrPoint();
GrBoite boite= new GrBoite();
H2dBord.BordIndexIterator it= new H2dBord.BordIndexIterator();
int idxEnCours;
H2dBorderPerFrontierInterface frontierBord;
for (int i= 0; i < nb; i++) {
b= m_.getBordInIdxGeneral(i);
frontierBord= m_.getBord(b.getIdxFrontiere());
//idxFrontiere= b.getIdxFrontiere();
it.set(frontierBord.getNbPt(), b);
//le premier indice
idxEnCours= it.next();
//on initialise le point e.
m_.getPoint(frontierBord.getCl(idxEnCours).getIndexPt(), seg.e);
while (it.hasNext()) {
idxEnCours= it.next();
//on recupere les coordonnees du point suivant dans seg.o
m_.getPoint(frontierBord.getCl(idxEnCours).getIndexPt(), seg.o);
//le point e pour la prochaine iteration
oReel.initialise(seg.o);
seg.boite(boite);
if (boite.intersectXY(bClip)) {
seg.autoApplique(versEcran);
if (seg.estSelectionne(_tolerance, _pt)) {
EbliListeSelection r= new EbliListeSelection(nb);
r.setSelectionInterval(i, i);
return r;
}
//on initialise le point est avec les val sauv de o
seg.e.initialise(oReel);
}
}
}
return null;
}
/**
*
*/
public EbliListeSelection selection(GrPolygone _poly) {
return null;
}
}
\ No newline at end of file
Index: TrCalqueCL.java
===================================================================
RCS file: /cvsroot/fudaa/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrCalqueCL.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** TrCalqueCL.java 6 Oct 2003 08:09:07 -0000 1.2
--- TrCalqueCL.java 29 Oct 2003 11:54:33 -0000 1.3
***************
*** 8,27 ****
*/
package org.fudaa.fudaa.tr.data;
!
! import org.fudaa.ebli.calque.ZCalquePoint;
!
import org.fudaa.fudaa.tr.TrResource;
-
/**
* @author deniger
* @version $Id$
*/
! public class TrCalqueCL extends ZCalquePoint {
!
! public TrCalqueCL(TrModeleCL _cl){
! super(_cl);
setTitle(TrResource.getS("points"));
}
-
-
}
--- 8,157 ----
*/
package org.fudaa.fudaa.tr.data;
! import gnu.trove.TIntObjectIterator;
! import java.awt.Color;
! import java.awt.Graphics;
! import javax.swing.Icon;
! import org.fudaa.dodico.h2d.H2dBorderPerFrontierInterface;
! import org.fudaa.ebli.calque.ZCalqueAffichageDonneesMutliSelection;
! import org.fudaa.ebli.calque.ZModeleDonnees;
! import org.fudaa.ebli.commun.EbliListeSelection;
! import org.fudaa.ebli.commun.EbliListeSelectionMulti;
! import org.fudaa.ebli.geometrie.GrBoite;
! import org.fudaa.ebli.geometrie.GrMorphisme;
! import org.fudaa.ebli.geometrie.GrPoint;
! import org.fudaa.ebli.geometrie.GrPolygone;
! import org.fudaa.ebli.palette.BPaletteCouleur;
! import org.fudaa.ebli.palette.BPaletteIcone;
import org.fudaa.fudaa.tr.TrResource;
/**
* @author deniger
* @version $Id$
*/
! public class TrCalqueCL extends ZCalqueAffichageDonneesMutliSelection {
! private TrModeleCL m_;
! public TrCalqueCL(TrModeleCL _cl) {
setTitle(TrResource.getS("points"));
+ m_= _cl;
+ }
+
+ public TrModeleCL getModeleCl(){
+ return (TrModeleCL)modeleDonnees();
+ }
+ /**
+ * @param _g
+ */
+ public void paintComponent(Graphics _g) {
+ super.paintComponent(_g);
+ if (isSelectionEmpty() || isRapide())
+ return;
+ int nombre= m_.getNombre();
+ if ((m_ == null) || (nombre <= 0))
+ return;
+ GrBoite clip= getClipReel(_g);
+ GrBoite domaine= m_.getDomaine();
+ //Si le domaine des polys n'est pas dans le domaine d'affichage on arrete
+ if (!domaine.intersectXY(clip)) {
+ return;
+ }
+ GrMorphisme versEcran= getVersEcran();
+ boolean attenue= isAttenue();
+ //boolean rapide= isRapide();
+ initIconeSelection();
+ initCouleurSelection();
+ Color cs= couleurSelection();
+ Icon ic= iconeSelection();
+ if (attenue) {
+ cs= attenueCouleur(cs);
+ ic= attenueIcone(ic);
+ }
+ _g.setColor(cs);
+ TIntObjectIterator it= selection_.getIterator();
+ GrPoint p= new GrPoint();
+ for (int i= selection_.getNbList(); i-- > 0;) {
+ it.advance();
+ H2dBorderPerFrontierInterface frontier= m_.getClFrontier(it.key());
+ int[] selected= ((EbliListeSelection)it.value()).getSelectedIndex();
+ for (int j= selected.length - 1; j >= 0; j--) {
+ m_.point(p, frontier.getCl(selected[j]).getIndexPt());
+ if (clip.contientXY(p)) {
+ p.autoApplique(versEcran);
+ ic.paintIcon(this, _g, (int)p.x, (int)p.y);
+ }
+ }
+ }
+ }
+ /**
+ *
+ */
+ public ZModeleDonnees modeleDonnees() {
+ return m_;
+ }
+ /**
+ *
+ */
+ public EbliListeSelectionMulti selection(GrPoint _pt, int _tolerance) {
+ GrMorphisme versEcran= getVersEcran();
+ GrBoite bClip= getDomaine();
+ bClip.autoApplique(versEcran);
+ if ((!bClip.contientXY(_pt)) && (bClip.distanceXY(_pt) > _tolerance))
+ return null;
+ int nb= m_.getNbFrontier() - 1;
+ bClip= getClipReel(getGraphics());
+ GrPoint p= new GrPoint();
+ for (int i= nb; i >= 0; i--) {
+ H2dBorderPerFrontierInterface frontier= m_.getClFrontier(i);
+ int nbPt= frontier.getNbPt() - 1;
+ for (int j= nbPt; j >= 0; j--) {
+ m_.point(p, frontier.getCl(j).getIndexPt());
+ if (bClip.contientXY(p)) {
+ p.autoApplique(versEcran);
+ if (GrPoint.estSelectionne(p, _tolerance, _pt)) {
+ EbliListeSelectionMulti r= new EbliListeSelectionMulti(1);
+ r.add(i, j);
+ return r;
+ }
+ }
+ }
+ }
+ return null;
+ }
+ /**
+ *
+ */
+ public EbliListeSelectionMulti selection(GrPolygone _poly) {
+ GrBoite boitePoly= _poly.boite();
+ GrMorphisme versEcran= getVersEcran();
+ GrBoite bClip= getDomaine();
+ bClip.autoApplique(versEcran);
+ if (!boitePoly.intersectXY(bClip))
+ return null;
+ EbliListeSelectionMulti r= createSelection();
+ GrPoint p= new GrPoint();
+ int nb= m_.getNbFrontier() - 1;
+ bClip= getClipReel(getGraphics());
+ for (int i= nb; i >= 0; i--) {
+ H2dBorderPerFrontierInterface frontier= m_.getClFrontier(i);
+ int nbPt= frontier.getNbPt() - 1;
+ EbliListeSelection l= null;
+ for (int j= nbPt; j >= 0; j--) {
+ m_.point(p, frontier.getCl(j).getIndexPt());
+ if (bClip.contientXY(p)) {
+ p.autoApplique(versEcran);
+ if (boitePoly.contientXY(p)) {
+ if (_poly.contientXY(p)) {
+ if (l == null)
+ l= new EbliListeSelection(nbPt);
+ l.add(j);
+ }
+ }
+ }
+ }
+ if (l != null)
+ r.set(i, l);
+ }
+ if (r.isEmpty())
+ return null;
+ else
+ return r;
}
}
Index: TrGroupeCL.java
===================================================================
RCS file: /cvsroot/fudaa/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrGroupeCL.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** TrGroupeCL.java 10 Oct 2003 14:49:09 -0000 1.4
--- TrGroupeCL.java 29 Oct 2003 11:54:33 -0000 1.5
***************
*** 8,21 ****
*/
package org.fudaa.fudaa.tr.data;
-
import org.fudaa.dodico.h2d.H2dCLManagerInterface;
-
import org.fudaa.ebli.calque.BGroupeCalque;
import org.fudaa.ebli.calque.ContextuelDelegator;
-
import org.fudaa.fudaa.tr.TrContextMenuBuilder;
import org.fudaa.fudaa.tr.TrParametres;
import org.fudaa.fudaa.tr.TrResource;
-
/**
* @author deniger
--- 8,17 ----
***************
*** 24,54 ****
public class TrGroupeCL extends BGroupeCalque {
! H2dCLManagerInterface clm_;
!
!
! public TrGroupeCL(TrParametres _param){
! if(_param==null) throw new IllegalArgumentException("param null");
setTitle(TrResource.getS("cl"));
! TrCalqueBord cqBord=new TrCalqueBord(_param.createModelBord());
! cqBord.setName("cqBord");
! add(cqBord);
! TrCalqueCL cqCL=new TrCalqueCL(new TrModeleCLAbstract(_param.getH2dParametres().getMaillage()));
! cqCL.setName("cqCL");
! add(cqCL);
}
!
! public TrCalqueCL getCalqueCL(){
! return (TrCalqueCL)getCalqueParNom("cqCL");
}
!
! public TrCalqueBord getCalqueBord(){
! return (TrCalqueBord)getCalqueParNom("cqBord");
}
!
! public void setContextuelDelegator(TrContextMenuBuilder _d){
getCalqueCL().setContextuelDelegator(_d);
getCalqueBord().setContextuelDelegator(_d);
}
-
-
}
--- 20,46 ----
public class TrGroupeCL extends BGroupeCalque {
! public TrGroupeCL(){
setTitle(TrResource.getS("cl"));
! setDestructible(false);
}
! public final TrCalqueCL getCalqueCL() {
! return (TrCalqueCL)getCalqueParNom("cqCL");
}
! public final TrCalqueBord getCalqueBord() {
! return (TrCalqueBord)getCalqueParNom("cqBord");
}
! public final void addCalqueCL(TrCalqueCL _c) {
! _c.setName("cqCL");
! _c.setDestructible(false);
! add(_c);
! }
! public final void addCalqueBord(TrCalqueBord _c) {
! _c.setName("cqBord");
! _c.setDestructible(false);
! add(_c);
! }
! public final void setContextuelDelegator(TrContextMenuBuilder _d) {
getCalqueCL().setContextuelDelegator(_d);
getCalqueBord().setContextuelDelegator(_d);
}
}
Index: TrModeleBord.java
===================================================================
RCS file: /cvsroot/fudaa/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrModeleBord.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** TrModeleBord.java 8 Oct 2003 12:07:11 -0000 1.3
--- TrModeleBord.java 29 Oct 2003 11:54:33 -0000 1.4
***************
*** 1 ****
! /*
* @file ZModeleBord.java
* @creation 25 août 2003
* @modification $Date$
* @license GNU General Public License 2
* @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
* @mail de...@fu...
*/
package org.fudaa.fudaa.tr.data;
import org.fudaa.dodico.h2d.H2dBord;
import org.fudaa.dodico.h2d.H2dBorderPerFrontierInterface;
import org.fudaa.dodico.h2d.reflux.H2dRefluxCLManager;
import org.fudaa.ebli.calque.ZModeleDonnees;
import org.fudaa.ebli.geometrie.GrPoint;
/**
* @author deniger
* @version $Id$
*/
public interface TrModeleBord extends ZModeleDonnees {
/**
* Le nombre de frontiere du maillage
*/
public int getNbFrontier();
/**
* Renvoie le nombre de points de la frontiere d'indice
* <code>_idxFrontiere</code>
*/
public int getNbPoint(int _idxFrontiere);
/**
* Renvoie les bords de la frontiere _i
*/
public H2dBorderPerFrontierInterface getBord(int _idxFrontier);
/**
* Renvoie le nb de bord total ( addition du nb de bord de chaque frontiere).
*/
public int getNbTotalBord();
/**
* Renvoie le bord d'index general donne.
*/
public H2dBord getBordInIdxGeneral(int _idxGeneral);
/**
* Initialise <code>_p</code> a partir des donnees du point
* d'indice <code>_idxPtSurFrontiere</code>
* de la frontiere d'indice <code>_idxFrontiere</code>.
*/
public void getPoint(int _idxFrontiere, int _idxPtSurFrontiere, GrPoint _p);
}
\ No newline at end of file
--- 1 ----
! /*
* @file ZModeleBord.java
* @creation 25 août 2003
* @modification $Date$
* @license GNU General Public License 2
* @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
* @mail de...@fu...
*/
package org.fudaa.fudaa.tr.data;
import org.fudaa.dodico.h2d.H2dBord;
import org.fudaa.dodico.h2d.H2dBorderPerFrontierInterface;
import org.fudaa.dodico.h2d.H2dCLManagerInterface;
import org.fudaa.dodico.h2d.reflux.H2dRefluxCLManager;
import org.fudaa.ebli.calque.ZModeleDonnees;
import org.fudaa.ebli.geometrie.GrPoint;
/**
* @author deniger
* @version $Id$
*/
public interface TrModeleBord extends ZModeleDonnees {
/**
* Le nombre de frontiere du maillage
*/
public int getNbFrontier();
/**
* Renvoie les bords de la frontiere _i
*/
public H2dBorderPerFrontierInterface getBord(int _idxFrontier);
/**
* Renvoie le nb de bord total ( addition du nb de bord de chaque frontiere).
*/
public int getNbTotalBord();
/**
* Renvoie le bord d'index general donne.
*/
public H2dBord getBordInIdxGeneral(int _idxGeneral);
/**
* Initialise <code>_p</code> a partir des donnees du point
* d'indice <code>_idxGlobal</code> sur le domaine
*/
public void getPoint(int _idxGlobal, GrPoint _p);
public H2dCLManagerInterface getClMng();
}
\ No newline at end of file
Index: TrModeleBordAdapter.java
===================================================================
RCS file: /cvsroot/fudaa/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrModeleBordAdapter.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** TrModeleBordAdapter.java 23 Sep 2003 21:49:47 -0000 1.1
--- TrModeleBordAdapter.java 29 Oct 2003 11:54:33 -0000 1.2
***************
*** 63,67 ****
*/
public H2dBord getBordInIdxGeneral(int _idxGeneral) {
! return clMng_.getBordFromIdxGeneral(_idxGeneral);
}
--- 63,67 ----
*/
public H2dBord getBordInIdxGeneral(int _idxGeneral) {
! return clMng_.getBord(_idxGeneral);
}
***************
*** 69,74 ****
*
*/
! public void getPoint(int _idxFrontiere, int _idxPtSurFrontiere, GrPoint _p) {
! H2dPoint p= clMng_.getPoint(_idxFrontiere, _idxPtSurFrontiere);
_p.setCoordonnees(p.getX(), p.getY(), p.getZ());
}
--- 69,74 ----
*
*/
! public void getPoint(int _idxGlobal, GrPoint _p) {
! H2dPoint p= clMng_.getMaillage().getPt(_idxGlobal);
_p.setCoordonnees(p.getX(), p.getY(), p.getZ());
}
***************
*** 93,96 ****
--- 93,103 ----
public Object getObject(int _ind) {
return null;
+ }
+
+ /**
+ *
+ */
+ public H2dCLManagerInterface getClMng() {
+ return clMng_;
}
Index: TrModeleCL.java
===================================================================
RCS file: /cvsroot/fudaa/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrModeleCL.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** TrModeleCL.java 23 Sep 2003 21:49:47 -0000 1.1
--- TrModeleCL.java 29 Oct 2003 11:54:33 -0000 1.2
***************
*** 9,13 ****
package org.fudaa.fudaa.tr.data;
! import org.fudaa.ebli.calque.ZModelePoint;
/**
--- 9,17 ----
package org.fudaa.fudaa.tr.data;
! import org.fudaa.dodico.h2d.H2dBorderPerFrontierInterface;
! import org.fudaa.dodico.h2d.H2dCLManagerInterface;
!
! import org.fudaa.ebli.calque.ZModeleDonnees;
! import org.fudaa.ebli.geometrie.GrPoint;
/**
***************
*** 15,19 ****
* @version $Id$
*/
! public interface TrModeleCL extends ZModelePoint {
--- 19,30 ----
* @version $Id$
*/
! public interface TrModeleCL extends ZModeleDonnees{
! public boolean point(GrPoint _p, int _idxGlobal) ;
!
! public int getNbFrontier();
!
! public H2dBorderPerFrontierInterface getClFrontier(int _i);
! public H2dCLManagerInterface getClMng();
!
Index: TrModeleCLAbstract.java
===================================================================
RCS file: /cvsroot/fudaa/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrModeleCLAbstract.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** TrModeleCLAbstract.java 23 Sep 2003 21:49:47 -0000 1.1
--- TrModeleCLAbstract.java 29 Oct 2003 11:54:33 -0000 1.2
***************
*** 9,13 ****
--- 9,16 ----
package org.fudaa.fudaa.tr.data;
+ import org.fudaa.dodico.h2d.H2dBorderPerFrontierInterface;
+ import org.fudaa.dodico.h2d.H2dCLManagerInterface;
import org.fudaa.dodico.h2d.H2dMaillage;
+ import org.fudaa.dodico.h2d.H2dPoint;
import org.fudaa.ebli.geometrie.GrBoite;
***************
*** 20,28 ****
public class TrModeleCLAbstract implements TrModeleCL {
! H2dMaillage m_;
! public TrModeleCLAbstract(H2dMaillage _m){
! if(_m==null) throw new IllegalArgumentException("param null");
! m_=_m;
}
--- 23,31 ----
public class TrModeleCLAbstract implements TrModeleCL {
! private H2dCLManagerInterface clMng_;
! public TrModeleCLAbstract(H2dCLManagerInterface _clMng){
! if(_clMng==null) throw new IllegalArgumentException("param null");
! clMng_=_clMng;
}
***************
*** 30,44 ****
*
*/
! public boolean point(GrPoint _p, int _i) {
! int idxGeneral=m_.getPtsFrontiere().getIdxGeneral(_i);
! TrCalqueMaillage.initGrPoint(m_.getPt(idxGeneral), _p);
! return idxGeneral>=0;
}
!
/**
*
*/
public GrBoite getDomaine() {
! return TrCalqueMaillage.getDomaine(m_);
}
--- 33,55 ----
*
*/
! public boolean point(GrPoint _p, int _idxGlobal) {
! H2dPoint p= clMng_.getMaillage().getPt(_idxGlobal);
! _p.setCoordonnees(p.getX(),p.getY(), p.getZ());
! return true;
}
!
! public int getNbFrontier(){
! return clMng_.getNbFrontiere();
! }
!
! public H2dBorderPerFrontierInterface getClFrontier(int _i){
! return clMng_.getBordPerFrontier(_i);
! }
!
/**
*
*/
public GrBoite getDomaine() {
! return TrCalqueMaillage.getDomaine(clMng_.getMaillage());
}
***************
*** 47,51 ****
*/
public int getNombre() {
! return m_.getPtsFrontiere().getNbTotalPt();
}
--- 58,62 ----
*/
public int getNombre() {
! return clMng_.getMaillage().getPtsFrontiere().getNbTotalPt();
}
***************
*** 55,58 ****
--- 66,76 ----
public Object getObject(int _ind) {
return null;
+ }
+
+ /**
+ *
+ */
+ public H2dCLManagerInterface getClMng() {
+ return clMng_;
}
|