You can subscribe to this list here.
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(46) |
Jul
(37) |
Aug
(154) |
Sep
(140) |
Oct
(132) |
Nov
(104) |
Dec
(67) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2009 |
Jan
(113) |
Feb
(73) |
Mar
(102) |
Apr
(106) |
May
(114) |
Jun
(67) |
Jul
(116) |
Aug
(48) |
Sep
(108) |
Oct
(296) |
Nov
(56) |
Dec
(53) |
2010 |
Jan
(95) |
Feb
(31) |
Mar
(40) |
Apr
(12) |
May
(10) |
Jun
(27) |
Jul
(19) |
Aug
(81) |
Sep
(48) |
Oct
(45) |
Nov
(40) |
Dec
(7) |
2011 |
Jan
(16) |
Feb
(32) |
Mar
(55) |
Apr
(38) |
May
(24) |
Jun
(37) |
Jul
(12) |
Aug
(16) |
Sep
(97) |
Oct
(90) |
Nov
(101) |
Dec
(89) |
2012 |
Jan
(18) |
Feb
(2) |
Mar
(54) |
Apr
(69) |
May
(97) |
Jun
(131) |
Jul
(70) |
Aug
(48) |
Sep
(48) |
Oct
(119) |
Nov
(194) |
Dec
(60) |
2013 |
Jan
(73) |
Feb
(35) |
Mar
(42) |
Apr
(28) |
May
(7) |
Jun
(17) |
Jul
(27) |
Aug
(10) |
Sep
(38) |
Oct
(12) |
Nov
(4) |
Dec
(16) |
2014 |
Jan
(33) |
Feb
(37) |
Mar
(19) |
Apr
(3) |
May
(47) |
Jun
(26) |
Jul
(22) |
Aug
|
Sep
(10) |
Oct
(30) |
Nov
(24) |
Dec
(19) |
2015 |
Jan
(13) |
Feb
(16) |
Mar
(36) |
Apr
(19) |
May
(5) |
Jun
(5) |
Jul
(3) |
Aug
(11) |
Sep
(22) |
Oct
(7) |
Nov
(14) |
Dec
|
2016 |
Jan
|
Feb
(26) |
Mar
(13) |
Apr
(61) |
May
|
Jun
|
Jul
(4) |
Aug
|
Sep
|
Oct
(27) |
Nov
(14) |
Dec
(21) |
2017 |
Jan
(30) |
Feb
(4) |
Mar
(3) |
Apr
(5) |
May
(69) |
Jun
(29) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <emm...@us...> - 2008-11-03 14:29:33
|
Revision: 4154 http://fudaa.svn.sourceforge.net/fudaa/?rev=4154&view=rev Author: emmanuel_martin Date: 2008-11-03 14:29:31 +0000 (Mon, 03 Nov 2008) Log Message: ----------- tache #29 : "Le d?\195?\169placement vers un calque cible d'une g?\195?\169om?\195?\169trie n'oblige pas ?\195?\160 respecter le caract?\195?\168re ouvert/ferm?\195?\169." Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-11-03 13:56:37 UTC (rev 4153) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-11-03 14:29:31 UTC (rev 4154) @@ -18,7 +18,6 @@ import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JPanel; -import javax.swing.border.Border; import org.fudaa.ctulu.CtuluCommandComposite; import org.fudaa.ctulu.CtuluListSelection; @@ -29,6 +28,7 @@ import org.fudaa.ctulu.gis.GISCoordinateSequenceContainerInterface; import org.fudaa.ctulu.gis.GISDataModel; import org.fudaa.ctulu.gis.GISGeometryFactory; +import org.fudaa.ctulu.gis.GISLib; import org.fudaa.ctulu.gis.GISMultiPoint; import org.fudaa.ctulu.gis.GISZoneCollection; import org.fudaa.ctulu.gis.GISZoneCollectionGeometry; @@ -42,6 +42,8 @@ import org.fudaa.ebli.calque.ZModeleDonnees; import org.fudaa.ebli.calque.ZModeleGeometry; import org.fudaa.ebli.calque.ZScene; +import org.fudaa.ebli.calque.dessin.DeForme; +import org.fudaa.ebli.calque.edition.ZCalqueEditable; import org.fudaa.ebli.calque.edition.ZSceneEditor; import org.fudaa.fudaa.commun.FudaaLib; import org.fudaa.fudaa.modeleur.layer.MdlModel2dLine; @@ -139,7 +141,7 @@ geoms[i]=(Geometry)getScene().getObject(idxGeom[i]); } - final CtuluCommandComposite cmp = new CtuluCommandComposite(); + final CtuluCommandComposite cmp = new CtuluCommandComposite(FudaaLib.getS("D\xE9placement de g\xE9om\xE9tries")); // Controle qu'une bloc n'est pas constitu\xE9 que d'un point => Message d'erreur. if (mdldest instanceof MdlModel2dLine) { @@ -236,7 +238,14 @@ coldest.addGeometry(gn,datadest,cmp); } else if (mdldest instanceof MdlModel2dLine) { - Geometry gn=GISGeometryFactory.INSTANCE.createLineString(geoms[i].getCoordinates()); + Geometry gn; + CoordinateSequence coordSeq=((GISCoordinateSequenceContainerInterface) geoms[i]).getCoordinateSequence(); + boolean isFerme=coordSeq.getCoordinate(0).equals(coordSeq.getCoordinate(coordSeq.size()-1)); + ZCalqueEditable calque=(ZCalqueEditable)getScene().getCalqueActif(); + if((calque.canAddForme(DeForme.LIGNE_BRISEE)&&!isFerme)||!calque.canAddForme(DeForme.POLYGONE)) + gn=GISLib.toPolyligne(coordSeq); + else + gn=GISLib.toPolygone(coordSeq); coldest.addGeometry(gn,datadest,cmp); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2008-11-03 13:56:42
|
Revision: 4153 http://fudaa.svn.sourceforge.net/fudaa/?rev=4153&view=rev Author: emmanuel_martin Date: 2008-11-03 13:56:37 +0000 (Mon, 03 Nov 2008) Log Message: ----------- tache #75 : "Raffiner ou d?\195?\169cimer sur plusieurs profils ?\195?\160 la fois". Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneDecimationAction.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneRefinementAction.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-11-03 12:28:29 UTC (rev 4152) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-11-03 13:56:37 UTC (rev 4153) @@ -260,32 +260,36 @@ if (getScene().isAtomicMode()) title=MdlResource.MDL.getString("D\xE9cimation entre 2 sommets"); else - title=MdlResource.MDL.getString("D\xE9cimation sur une polyligne"); + title=MdlResource.MDL.getString("D\xE9cimation sur une ou plusieurs polyligne(s)"); if (pnDecimation_.afficheModaleOk(pn_.getFrame(), title)) { - // La g\xE9om\xE9trie. - int idxGeom=getScene().getSelectionHelper().getUniqueSelectedIdx(); - Geometry geom=(Geometry)getScene().getObject(idxGeom); - int idxdeb; - int idxfin; - if (getScene().isAtomicMode()) { - int[] idxa=getScene().getLayerSelectionMulti().getSelection(idxGeom).getSelectedIndex(); - idxdeb=idxa[0]; - idxfin=idxa[1]; + // Les g\xE9om\xE9tries. On n'a plusieurs g\xE9om\xE9tries que dans le cas o\xF9 on n'est + // pas en mode sommet. + int[] geoms=getScene().getSelectionHelper().getSelectedIndexes(); + for (int i=0; i<geoms.length; i++) { + int idxGeom=geoms[i]; + Geometry geom=(Geometry)getScene().getObject(idxGeom); + int idxdeb; + int idxfin; + if (getScene().isAtomicMode()) { + int[] idxa=getScene().getLayerSelectionMulti().getSelection(idxGeom).getSelectedIndex(); + idxdeb=idxa[0]; + idxfin=idxa[1]; + } + else { + idxdeb=0; + idxfin=geom.getNumPoints()-1; + } + + ZModeleDonnees mdld=getScene().getLayerForId(idxGeom).modeleDonnees(); + if (mdld instanceof MdlModel2dLine) { + MdlModel2dLine mdl=(MdlModel2dLine)mdld; + mdl.decimate(getScene().sceneId2LayerId(idxGeom), idxdeb, idxfin, pnDecimation_.isNbPtsGiven() ? 0:1, pnDecimation_ + .getNbPts(), pnDecimation_.getDistance(), getMng()); + } + + super.getScene().clearSelection(); } - else { - idxdeb=0; - idxfin=geom.getNumPoints()-1; - } - - ZModeleDonnees mdld=getScene().getLayerForId(idxGeom).modeleDonnees(); - if (mdld instanceof MdlModel2dLine) { - MdlModel2dLine mdl=(MdlModel2dLine)mdld; - mdl.decimate(getScene().sceneId2LayerId(idxGeom),idxdeb,idxfin,pnDecimation_.isNbPtsGiven()?0:1, - pnDecimation_.getNbPts(),pnDecimation_.getDistance(),getMng()); - } - - super.getScene().clearSelection(); } } @@ -303,29 +307,33 @@ title=MdlResource.MDL.getString("Raffinement sur une polyligne"); if (pnRaffinement_.afficheModaleOk(pn_.getFrame(), title)) { - // La g\xE9om\xE9trie. - int idxGeom=getScene().getSelectionHelper().getUniqueSelectedIdx(); - Geometry geom=(Geometry)getScene().getObject(idxGeom); - int idxdeb; - int idxfin; - if (getScene().isAtomicMode()) { - int[] idxa=getScene().getLayerSelectionMulti().getSelection(idxGeom).getSelectedIndex(); - idxdeb=idxa[0]; - idxfin=idxa[1]; + // Les g\xE9om\xE9tries. On n'a plusieurs g\xE9om\xE9tries que dans le cas o\xF9 on n'est + // pas en mode sommet. + int[] geoms=getScene().getSelectionHelper().getSelectedIndexes(); + for (int i=0; i<geoms.length; i++) { + int idxGeom=geoms[i]; + Geometry geom=(Geometry)getScene().getObject(idxGeom); + int idxdeb; + int idxfin; + if (getScene().isAtomicMode()) { + int[] idxa=getScene().getLayerSelectionMulti().getSelection(idxGeom).getSelectedIndex(); + idxdeb=idxa[0]; + idxfin=idxa[1]; + } + else { + idxdeb=0; + idxfin=geom.getNumPoints()-1; + } + + ZModeleDonnees mdld=getScene().getLayerForId(idxGeom).modeleDonnees(); + if (mdld instanceof MdlModel2dLine) { + MdlModel2dLine mdl=(MdlModel2dLine)mdld; + mdl.refine(getScene().sceneId2LayerId(idxGeom), idxdeb, idxfin, pnRaffinement_.isNbPtsGiven() ? 0:1, pnRaffinement_ + .getNbPts(), pnRaffinement_.getDistance(), getMng()); + } + + super.getScene().clearSelection(); } - else { - idxdeb=0; - idxfin=geom.getNumPoints()-1; - } - - ZModeleDonnees mdld=getScene().getLayerForId(idxGeom).modeleDonnees(); - if (mdld instanceof MdlModel2dLine) { - MdlModel2dLine mdl=(MdlModel2dLine)mdld; - mdl.refine(getScene().sceneId2LayerId(idxGeom),idxdeb,idxfin,pnRaffinement_.isNbPtsGiven()?0:1, - pnRaffinement_.getNbPts(),pnRaffinement_.getDistance(),getMng()); - } - - super.getScene().clearSelection(); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneDecimationAction.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneDecimationAction.java 2008-11-03 12:28:29 UTC (rev 4152) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneDecimationAction.java 2008-11-03 13:56:37 UTC (rev 4153) @@ -61,8 +61,8 @@ b&=!scn.isSelectionEmpty(); // Si le nombre d'atomiques est de 2 sur le m\xEAme bloc b&=!scn.isAtomicMode() || (hlp.getNbAtomicSelected()==2 && (idGeom=hlp.getUniqueSelectedIdx())!=-1); - // Si le nombre de selectionn\xE9s est de 1 en mode global - b&=scn.isAtomicMode() || (idGeom=hlp.getUniqueSelectedIdx())!=-1; + // Si le nombre de selectionn\xE9s est de 1 ou plus en mode global + b&=scn.isAtomicMode() || true; // Si la g\xE9om\xE9trie appartient a un calque polylignes. b&=scn.getLayerForId(idGeom) instanceof MdlLayer2dLine; @@ -70,7 +70,7 @@ } public String getEnableCondition() { - return EbliResource.EBLI.getString("<p>En mode sommet, s\xE9lectionner 2 sommets d'un m\xEAme objet<p>En mode global, un objet"); + return EbliResource.EBLI.getString("<p>En mode sommet, s\xE9lectionner 2 sommets d'un m\xEAme objet<p>En mode global, un ou plusieurs objet(s)"); } /* (non-Javadoc) Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneRefinementAction.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneRefinementAction.java 2008-11-03 12:28:29 UTC (rev 4152) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneRefinementAction.java 2008-11-03 13:56:37 UTC (rev 4153) @@ -61,8 +61,8 @@ b&=!scn.isSelectionEmpty(); // Si le nombre d'atomiques est de 2 sur le m\xEAme bloc b&=!scn.isAtomicMode() || (hlp.getNbAtomicSelected()==2 && (idGeom=hlp.getUniqueSelectedIdx())!=-1); - // Si le nombre de selectionn\xE9s est de 1 en mode global - b&=scn.isAtomicMode() || (idGeom=hlp.getUniqueSelectedIdx())!=-1; + // Si le nombre de selectionn\xE9s est de 1 ou plus en mode global + b&=scn.isAtomicMode() || true; // Si la g\xE9om\xE9trie appartient a un calque polylignes. b&=scn.getLayerForId(idGeom) instanceof MdlLayer2dLine; @@ -70,7 +70,7 @@ } public String getEnableCondition() { - return EbliResource.EBLI.getString("<p>En mode sommet, s\xE9lectionner 2 sommets d'un m\xEAme objet<p>En mode global, un objet"); + return EbliResource.EBLI.getString("<p>En mode sommet, s\xE9lectionner 2 sommets d'un m\xEAme objet<p>En mode global, un ou plusieurs objet(s)"); } /* (non-Javadoc) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2008-11-03 12:28:34
|
Revision: 4152 http://fudaa.svn.sourceforge.net/fudaa/?rev=4152&view=rev Author: emmanuel_martin Date: 2008-11-03 12:28:29 +0000 (Mon, 03 Nov 2008) Log Message: ----------- tache #72 : "Duplication de points ayant les m?\195?\170me coordonn?\195?\169es lors d'interpolation entre 2 entit?\195?\169s diff?\195?\169rentes" Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlInterpolationPanel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dMultiPoint.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlInterpolationPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlInterpolationPanel.java 2008-11-03 11:20:21 UTC (rev 4151) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlInterpolationPanel.java 2008-11-03 12:28:29 UTC (rev 4152) @@ -11,10 +11,14 @@ import java.awt.event.ActionListener; import javax.swing.ButtonGroup; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.gui.CtuluDialogPanel; +import org.fudaa.ebli.commun.EbliLib; +import com.memoire.bu.BuCheckBox; import com.memoire.bu.BuGridLayout; import com.memoire.bu.BuRadioButton; import com.memoire.bu.BuTextField; @@ -24,7 +28,7 @@ * @author Bertrand Marchand * @version $Id: MdlInterpolationPanel.java,v 1.1.2.1 2008-05-13 12:10:11 bmarchan Exp $ */ -public class MdlInterpolationPanel extends CtuluDialogPanel { +public class MdlInterpolationPanel extends CtuluDialogPanel implements ChangeListener { private class InterpolationActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { @@ -37,6 +41,7 @@ private BuTextField tfDist_; private BuRadioButton rbNbPts_; private BuRadioButton rbDist_; + private boolean useBorderPoints_; private int nbPts_=0; private double dist_=0; @@ -64,6 +69,12 @@ tfDist_=addDoubleText("1.0"); rbNbPts_.doClick(); + + // La checkBox indiquant l'utilisation ou non des points d'extr\xE9mit\xE9s + useBorderPoints_=false; + BuCheckBox cb=new BuCheckBox(EbliLib.getS("Duplication des points aux extr\xE9mit\xE9s.")); + cb.addChangeListener(this); + add(cb); } public boolean valide() { @@ -89,4 +100,15 @@ public boolean isNbPtsGiven() { return rbNbPts_.isSelected(); } + + public boolean useBorderPoints(){ + return useBorderPoints_; + } + + /* (non-Javadoc) + * @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent) + */ + public void stateChanged(ChangeEvent e) { + useBorderPoints_=!useBorderPoints_; + } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-11-03 11:20:21 UTC (rev 4151) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-11-03 12:28:29 UTC (rev 4152) @@ -115,11 +115,13 @@ ZModeleDonnees mdld=((ZCalqueAffichageDonneesInterface)getScene().getCalqueActif()).modeleDonnees(); if (mdld instanceof MdlModel2dMultiPoint) { MdlModel2dMultiPoint mdl=(MdlModel2dMultiPoint)mdld; - mdl.interpolate(coords, dist, getMng()); + if(!mdl.interpolate(coords, dist, pnInterpolation_.useBorderPoints(), getMng())) + ui_.warn(FudaaLib.getS("Interpolation"), FudaaLib.getS("L'interpolation n'a pas pu avoir lieu par manque de point."), false); } else if (mdld instanceof MdlModel2dLine) { MdlModel2dLine mdl=(MdlModel2dLine)mdld; - mdl.interpolate(coords, dist, getMng()); + if(!mdl.interpolate(coords, dist, pnInterpolation_.useBorderPoints(), getMng())) + ui_.warn(FudaaLib.getS("Interpolation"), FudaaLib.getS("L'interpolation n'a pas pu avoir lieu par manque de point."), false); } } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java 2008-11-03 11:20:21 UTC (rev 4151) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java 2008-11-03 12:28:29 UTC (rev 4152) @@ -46,30 +46,44 @@ * Interpole entre 2 points, suivant un nombre de points donn\xE9s. * @param _coords Les 2 coordonn\xE9es * @param _dist La distance entre 2 points cons\xE9cutifs. + * @param _useBorderPoints vrai si la ligne int\xE9pol\xE9e doit contenir les coordonn\xE9es fournies. * @param _cmd Le container de commandes. * @return true si modif ok. */ - public boolean interpolate(Coordinate[] _coords, double _dist, final CtuluCommandContainer _cmd){ + public boolean interpolate(Coordinate[] _coords, double _dist, boolean _useBorderPoints, final CtuluCommandContainer _cmd){ double distTot= Math.sqrt((_coords[1].x-_coords[0].x)*(_coords[1].x-_coords[0].x)+(_coords[1].y-_coords[0].y)*(_coords[1].y-_coords[0].y)); int nbpts=(int)Math.round(distTot/_dist)-1; - - Coordinate[] coords=new Coordinate[_coords.length+nbpts]; - for (int i=1; i<coords.length-1; i++) { - Coordinate c=new Coordinate(); - c.x=_coords[0].x+(_coords[1].x-_coords[0].x)*i*_dist/distTot; - c.y=_coords[0].y+(_coords[1].y-_coords[0].y)*i*_dist/distTot; - c.z=_coords[0].z+(_coords[1].z-_coords[0].z)*i*_dist/distTot; - coords[i]=c; + Coordinate[] coords; + if (_useBorderPoints) { + coords=new Coordinate[_coords.length+nbpts]; + for (int i=1; i<coords.length-1; i++) + coords[i]=new Coordinate( + _coords[0].x+(_coords[1].x-_coords[0].x)*i*_dist/distTot, + _coords[0].y+(_coords[1].y-_coords[0].y)*i*_dist/distTot, + _coords[0].z+(_coords[1].z-_coords[0].z)*i*_dist/distTot + ); + coords[0]=(Coordinate)_coords[0].clone(); + coords[coords.length-1]=(Coordinate)_coords[1].clone(); } - coords[0]=(Coordinate)_coords[0].clone(); - coords[coords.length-1]=(Coordinate)_coords[1].clone(); - - GISPolyligne poly = (GISPolyligne)GISGeometryFactory.INSTANCE.createLineString(coords); - int idx = getGeomData().addGeometry(poly, null, _cmd); - if(idx!=-1) - setGeomModif(idx, _cmd); - return true; + else { + coords=new Coordinate[nbpts]; + for (int i=0; i<coords.length; i++) + coords[i]=new Coordinate( + _coords[0].x+(_coords[1].x-_coords[0].x)*(i+1)*_dist/distTot, + _coords[0].y+(_coords[1].y-_coords[0].y)*(i+1)*_dist/distTot, + _coords[0].z+(_coords[1].z-_coords[0].z)*(i+1)*_dist/distTot + ); + } + if (coords.length>=2) { + GISPolyligne poly=(GISPolyligne)GISGeometryFactory.INSTANCE.createLineString(coords); + int idx=getGeomData().addGeometry(poly, null, _cmd); + if (idx!=-1) + setGeomModif(idx, _cmd); + return true; + } + else + return false; } /** Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dMultiPoint.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dMultiPoint.java 2008-11-03 11:20:21 UTC (rev 4151) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dMultiPoint.java 2008-11-03 12:28:29 UTC (rev 4152) @@ -37,29 +37,43 @@ * Interpole entre 2 points, suivant un nombre de points donn\xE9s. * @param _coords Les 2 coordonn\xE9es * @param _dist La distance entre 2 points cons\xE9cutifs. + * @param _useBorderPoints vrai si la ligne int\xE9pol\xE9e doit contenir les coordonn\xE9es fournies. * @return true si modif ok. */ - public boolean interpolate(Coordinate[] _coords, double _dist, final CtuluCommandContainer _cmd){ + public boolean interpolate(Coordinate[] _coords, double _dist, boolean _useBorderPoints, final CtuluCommandContainer _cmd){ double distTot= Math.sqrt((_coords[1].x-_coords[0].x)*(_coords[1].x-_coords[0].x)+(_coords[1].y-_coords[0].y)*(_coords[1].y-_coords[0].y)); int nbpts=(int)Math.round(distTot/_dist)-1; - - Coordinate[] coords=new Coordinate[_coords.length+nbpts]; - for (int i=1; i<coords.length-1; i++) { - Coordinate c=new Coordinate(); - c.x=_coords[0].x+(_coords[1].x-_coords[0].x)*i*_dist/distTot; - c.y=_coords[0].y+(_coords[1].y-_coords[0].y)*i*_dist/distTot; - c.z=_coords[0].z+(_coords[1].z-_coords[0].z)*i*_dist/distTot; - coords[i]=c; + Coordinate[] coords; + if (_useBorderPoints) { + coords=new Coordinate[_coords.length+nbpts]; + for (int i=1; i<coords.length-1; i++) + coords[i]=new Coordinate( + _coords[0].x+(_coords[1].x-_coords[0].x)*i*_dist/distTot, + _coords[0].y+(_coords[1].y-_coords[0].y)*i*_dist/distTot, + _coords[0].z+(_coords[1].z-_coords[0].z)*i*_dist/distTot + ); + coords[0]=(Coordinate)_coords[0].clone(); + coords[coords.length-1]=(Coordinate)_coords[1].clone(); } - coords[0]=(Coordinate)_coords[0].clone(); - coords[coords.length-1]=(Coordinate)_coords[1].clone(); - - GISMultiPoint poly = (GISMultiPoint) GISGeometryFactory.INSTANCE.createMultiPoint(coords); - int idx = geometries_.addGeometry(poly, null, _cmd); - // Modification de l'etat de la g\xE9ometrie en modifi\xE9e - if(idx != -1) - setGeomModif(idx, _cmd); - return true; + else { + coords=new Coordinate[nbpts]; + for (int i=0; i<coords.length; i++) + coords[i]=new Coordinate( + _coords[0].x+(_coords[1].x-_coords[0].x)*(i+1)*_dist/distTot, + _coords[0].y+(_coords[1].y-_coords[0].y)*(i+1)*_dist/distTot, + _coords[0].z+(_coords[1].z-_coords[0].z)*(i+1)*_dist/distTot + ); + } + if (coords.length>=2) { + GISMultiPoint poly=(GISMultiPoint)GISGeometryFactory.INSTANCE.createMultiPoint(coords); + int idx=geometries_.addGeometry(poly, null, _cmd); + // Modification de l'etat de la g\xE9ometrie en modifi\xE9e + if (idx!=-1) + setGeomModif(idx, _cmd); + return true; + } + else + return false; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2008-11-03 11:20:31
|
Revision: 4151 http://fudaa.svn.sourceforge.net/fudaa/?rev=4151&view=rev Author: emmanuel_martin Date: 2008-11-03 11:20:21 +0000 (Mon, 03 Nov 2008) Log Message: ----------- bugfix #50 : "Jonction de 2 courbes de niveau ?\195?\160 Z diff?\195?\169rents : Afficher message pour demander la valeur de Z." Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-11-03 10:36:06 UTC (rev 4150) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-11-03 11:20:21 UTC (rev 4151) @@ -91,7 +91,7 @@ // On vide la selection, les 2 lignes sont supprim\xE9es par la jonction. clearSelection(); - return getModelePoly().joinGeometries(idxLines, idxSels, _cmd)!=-1; + return getModelePoly().joinGeometries(idxLines, idxSels, editor_, _cmd)!=-1; } private boolean removeAtomicObjects(final CtuluCommandContainer _cmd, final CtuluUI _ui) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-11-03 10:36:06 UTC (rev 4150) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-11-03 11:20:21 UTC (rev 4151) @@ -9,6 +9,16 @@ import gnu.trove.TIntObjectIterator; +import java.awt.Frame; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JPanel; + import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.CtuluCommandComposite; import org.fudaa.ctulu.CtuluCommandContainer; @@ -31,6 +41,8 @@ import org.fudaa.ebli.geometrie.GrPolyligne; import org.fudaa.ebli.geometrie.GrSegment; +import com.memoire.bu.BuBorderLayout; +import com.memoire.bu.BuLabel; import com.memoire.fu.FuLog; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.CoordinateSequence; @@ -350,10 +362,11 @@ * * @param _ligneIdx Les index des 2 lignes. * @param _idx Les index des 2 sommets des 2 lignes. + * @param _editor le ZEditorDefault pour pouvoir demander \xE0 l'utilisateur la valeur de Z. Peut \xEAtre null. * @param _cmd Le conteneur de commandes. * @return L'index de la nouvelle ligne si OK, -1 sinon. */ - public int joinGeometries(int[] _ligneIdx, int[] _idx, final CtuluCommandContainer _cmd) { + public int joinGeometries(int[] _ligneIdx, int[] _idx, final ZEditorDefault _editor, final CtuluCommandContainer _cmd) { if (geometries_ == null) { return -1; } @@ -427,6 +440,47 @@ else if (geometries_.getModel(att).getAttribute()==GISAttributeConstants.ETAT_GEOM) { dataline[att]=GISAttributeConstants.ATT_VAL_ETAT_MODI; } + // Cas particulier de l'attribut Z, demande de la valeur \xE0 l'utilisateur si non identique entre les deux polylignes + else if (geometries_.getModel(att).getAttribute().getID().equals("Z")) { + // Valeurs identiques + if(geometries_.getModel(att).getObjectValueAt(_ligneIdx[0])==geometries_.getModel(att).getObjectValueAt(_ligneIdx[1])) + dataline[att]=geometries_.getModel(att).getAttribute().createDataForGeom(geometries_.getModel(att).getObjectValueAt(_ligneIdx[0]),1); + // Valeurs diff\xE9rentes => demande \xE0 l'utilisateur + else { + // Utilisation d'une fen\xEAtre modale pour l'obtension du Z. + class myDialogModal extends JDialog implements ActionListener{ + private JComponent text_; + public myDialogModal(Frame _frame){ + super(_frame, EbliLib.getS("Choix du Z"), true); + // Position & resizable + setLocation(_frame.getLocation().x+_frame.getSize().width/2, _frame.getLocation().y+_frame.getSize().height/2); + setResizable(false); + // Contenu + JPanel container=new JPanel(new BuBorderLayout(2, 2)); + container.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); + text_=GISAttributeConstants.BATHY.getEditor().createEditorComponent(); + JButton ok=new JButton(EbliLib.getS("Valider")); + ok.addActionListener(this); + container.add(new BuLabel(EbliLib.getS("Valeur de Z :")), BuBorderLayout.WEST); + container.add(text_, BuBorderLayout.EAST); + container.add(ok, BuBorderLayout.SOUTH); + add(container); + pack(); + } + public void actionPerformed(ActionEvent e) { + setVisible(false); + dispose(); + } + public Double getValue(){ + return (Double) GISAttributeConstants.BATHY.getEditor().getValue(text_); + } + } + myDialogModal dialog =new myDialogModal(_editor.getFrame()); + dialog.setVisible(true); + dataline[att]=geometries_.getModel(att).getAttribute().createDataForGeom(dialog.getValue(),1); + } + } + // On prend arbitrairement la valeur de la premi\xE8re polyligne. else dataline[att]=geometries_.getModel(att).getAttribute().createDataForGeom(geometries_.getModel(att).getObjectValueAt(_ligneIdx[0]),1); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2008-11-03 10:36:15
|
Revision: 4150 http://fudaa.svn.sourceforge.net/fudaa/?rev=4150&view=rev Author: emmanuel_martin Date: 2008-11-03 10:36:06 +0000 (Mon, 03 Nov 2008) Log Message: ----------- bigfix #44 : "D?\195?\169placement d'un semis vers ligne de niveau ou inversement : Attribut Z non restaur?\195?\169." Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-11-02 01:09:08 UTC (rev 4149) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-11-03 10:36:06 UTC (rev 4150) @@ -7,15 +7,25 @@ */ package org.fudaa.fudaa.modeleur; +import java.awt.Frame; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JPanel; +import javax.swing.border.Border; + import org.fudaa.ctulu.CtuluCommandComposite; -import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.CtuluListSelection; import org.fudaa.ctulu.CtuluListSelectionInterface; import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISAttributeInterface; +import org.fudaa.ctulu.gis.GISAttributeModelDoubleArray; import org.fudaa.ctulu.gis.GISCoordinateSequenceContainerInterface; import org.fudaa.ctulu.gis.GISDataModel; import org.fudaa.ctulu.gis.GISGeometryFactory; @@ -37,6 +47,8 @@ import org.fudaa.fudaa.modeleur.layer.MdlModel2dLine; import org.fudaa.fudaa.modeleur.layer.MdlModel2dMultiPoint; +import com.memoire.bu.BuBorderLayout; +import com.memoire.bu.BuLabel; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.CoordinateSequence; import com.vividsolutions.jts.geom.Geometry; @@ -151,6 +163,69 @@ if (colsrc.getAttribute(idxAtt)==GISAttributeConstants.ETAT_GEOM) datadest[iatt]=GISAttributeConstants.ATT_VAL_ETAT_MODI; } + // Cas particuliers de mapping entre les attributs Z et z \\ + else{ + // On va essayer de renseigner le Z global de destination + if(coldest.getAttribute(iatt).getID().equals("Z")){ + // Cas o\xF9 un z atomique existe dans la source et qu'il est constant + boolean identique=true; + int indexBathy=colsrc.getIndiceOf(GISAttributeConstants.BATHY); + if(indexBathy!=-1){ + GISAttributeModelDoubleArray data=(GISAttributeModelDoubleArray) colsrc.getValue(indexBathy, getScene().sceneId2LayerId(idxGeom[i])); + identique=data.getMin()==data.getMax(); + } + if(identique&&indexBathy!=-1) + datadest[iatt]=((GISAttributeModelDoubleArray) colsrc.getValue(indexBathy, getScene().sceneId2LayerId(idxGeom[i]))).getObjectValueAt(0); + // Dans le cas contraire, on demande \xE0 l'utilisateur + else{ + // Utilisation d'une fen\xEAtre modale pour l'obtension du Z. + class myDialogModal extends JDialog implements ActionListener{ + private JComponent text_; + public myDialogModal(Frame _frame){ + super(_frame, MdlResource.MDL.getString("Choix du Z"), true); + // Position & resizable + setLocation(_frame.getLocation().x+_frame.getSize().width/2, _frame.getLocation().y+_frame.getSize().height/2); + setResizable(false); + // Contenu + JPanel container=new JPanel(new BuBorderLayout(2, 2)); + container.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); + text_=GISAttributeConstants.BATHY.getEditor().createEditorComponent(); + JButton ok=new JButton(MdlResource.MDL.getString("Valider")); + ok.addActionListener(this); + container.add(new BuLabel(MdlResource.MDL.getString("Valeur de Z :")), BuBorderLayout.WEST); + container.add(text_, BuBorderLayout.EAST); + container.add(ok, BuBorderLayout.SOUTH); + add(container); + pack(); + } + public void actionPerformed(ActionEvent e) { + setVisible(false); + dispose(); + } + public Double getValue(){ + return (Double) GISAttributeConstants.BATHY.getEditor().getValue(text_); + } + } + myDialogModal dialog =new myDialogModal(calquePanel_.getDefaultGisEditor().getFrame()); + dialog.setVisible(true); + datadest[iatt]=dialog.getValue(); + } + } + else if(coldest.getAttribute(iatt)==GISAttributeConstants.BATHY){ + // Recherche d'un attribut ayant pour ID 'Z' pour pouvoir utiliser sa valeur + boolean found=false; + int j=-1; + while(!found&&++j<colsrc.getNbAttributes()) + found=colsrc.getAttribute(j).getID().equals("Z"); + if(found){ + // Duplication de la valeur + Object[] values=new Object[geoms[i].getNumPoints()]; + for(int k=0;k<values.length;k++) + values[k]=colsrc.getValue(j, getScene().sceneId2LayerId(idxGeom[i])); + datadest[iatt]=values; + } + } + } } // La g\xE9om\xE9trie This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2008-11-02 01:09:20
|
Revision: 4149 http://fudaa.svn.sourceforge.net/fudaa/?rev=4149&view=rev Author: deniger Date: 2008-11-02 01:09:08 +0000 (Sun, 02 Nov 2008) Log Message: ----------- Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireGridDataProvider.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/graphe/EbliWidgetGraphe.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliWidgetTreeTableNode.java Added Paths: ----------- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataCacheSoftReferenceDecorator.java Removed Paths: ------------- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataCacheWeakDecorator.java Copied: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataCacheSoftReferenceDecorator.java (from rev 4135, branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataCacheWeakDecorator.java) =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataCacheSoftReferenceDecorator.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataCacheSoftReferenceDecorator.java 2008-11-02 01:09:08 UTC (rev 4149) @@ -0,0 +1,130 @@ +/** + * Licence GPL + * Copyright Genesis + */ +package org.fudaa.dodico.ef.decorator; + +import gnu.trove.TIntObjectHashMap; + +import java.io.IOException; +import java.lang.ref.SoftReference; +import java.util.HashMap; +import java.util.Map; + +import org.fudaa.ctulu.CtuluVariable; +import org.fudaa.dodico.ef.EfData; +import org.fudaa.dodico.ef.EfGridData; +import org.fudaa.dodico.ef.EfGridInterface; + +import com.memoire.fu.FuLog; + +/** + * Un decorateur permettant de cacher des donnees. Utilise des SoftReference pour les datas pour eviter d'encombrer la + * memoire + * + * @author deniger + */ +public class EfGridDataCacheSoftReferenceDecorator implements EfGridData { + + final EfGridData init_; + + int maxSize_ = 10; + + TIntObjectHashMap timeMap_ = new TIntObjectHashMap((int) (maxSize_ / 0.75)); + + public EfGridDataCacheSoftReferenceDecorator(EfGridData _init) { + super(); + init_ = _init; + } + + @SuppressWarnings("unchecked") + protected EfData getCachedData(CtuluVariable _o, int _timeIdx) { + Map<CtuluVariable, SoftReference<EfData>> res = (Map<CtuluVariable, SoftReference<EfData>>) timeMap_.get(_timeIdx); + if (res == null) return null; + SoftReference<EfData> reference = res.get(_o); + EfData efData = reference == null ? null : reference.get(); + if (FuLog.isDebug()) { + + FuLog.debug("EfGridDataCacheDecorator getDataFrom cache for " + _o + " " + _timeIdx + " found " + + (efData != null)); + + } + return efData; + + } + + public EfData getData(CtuluVariable _o, int _timeIdx) throws IOException { + EfData data = getCachedData(_o, _timeIdx); + // en cache: on renvoie + if (data != null) return data; + data = init_.getData(_o, _timeIdx); + if (data != null) setCachedData(_o, _timeIdx, data); + return data; + } + + public double getData(CtuluVariable _o, int _timeIdx, int _idxObjet) throws IOException { + EfData data = getCachedData(_o, _timeIdx); + if (data != null) return data.getValue(_idxObjet); + return init_.getData(_o, _timeIdx, _idxObjet); + } + + /** + * @return + * @see org.fudaa.dodico.ef.EfGridData#getGrid() + */ + public EfGridInterface getGrid() { + return init_.getGrid(); + } + + /** + * @return the maxSize + */ + public int getMaxSize() { + return maxSize_; + } + + /** + * @param _var + * @return + * @see org.fudaa.dodico.ef.EfGridData#isDefined(org.fudaa.ctulu.CtuluVariable) + */ + public boolean isDefined(CtuluVariable _var) { + return init_.isDefined(_var); + } + + /** + * @param _idxVar + * @return + * @see org.fudaa.dodico.ef.EfGridData#isElementVar(org.fudaa.ctulu.CtuluVariable) + */ + public boolean isElementVar(CtuluVariable _idxVar) { + return init_.isElementVar(_idxVar); + } + + @SuppressWarnings("unchecked") + protected void setCachedData(CtuluVariable _o, int _timeIdx, EfData _data) { + Map<CtuluVariable, SoftReference<EfData>> res = (Map<CtuluVariable, SoftReference<EfData>>) timeMap_.get(_timeIdx); + if (res == null) { + // on reduit la map + // if (timeMap_.size() > maxSize_) { + // int[] keys = timeMap_.keys(); + // Arrays.sort(keys); + // timeMap_.remove(keys[0]); + // } + res = new HashMap<CtuluVariable, SoftReference<EfData>>(10); + timeMap_.put(_timeIdx, res); + } + res.put(_o, new SoftReference<EfData>(_data)); + + } + + /** + * La taille max du nombre de pas de pour lesquels on veut cacher les donnees + * + * @param _maxSize the maxSize to set + */ + public void setMaxSize(int _maxSize) { + maxSize_ = _maxSize; + } + +} Property changes on: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataCacheSoftReferenceDecorator.java ___________________________________________________________________ Added: svn:mergeinfo + Deleted: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataCacheWeakDecorator.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataCacheWeakDecorator.java 2008-11-02 00:42:09 UTC (rev 4148) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataCacheWeakDecorator.java 2008-11-02 01:09:08 UTC (rev 4149) @@ -1,131 +0,0 @@ -/** - * Licence GPL - * Copyright Genesis - */ -package org.fudaa.dodico.ef.decorator; - -import gnu.trove.TIntObjectHashMap; - -import java.io.IOException; -import java.lang.ref.WeakReference; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; - -import org.fudaa.ctulu.CtuluVariable; -import org.fudaa.dodico.ef.EfData; -import org.fudaa.dodico.ef.EfGridData; -import org.fudaa.dodico.ef.EfGridInterface; - -import com.memoire.fu.FuLog; - -/** - * Un decorateur permettant de cacher des donnees. Utilise des WeakReference pour les datas pour eviter d'encombrer la - * memoire - * - * @author deniger - */ -public class EfGridDataCacheWeakDecorator implements EfGridData { - - final EfGridData init_; - - int maxSize_ = 10; - - TIntObjectHashMap timeMap_ = new TIntObjectHashMap((int) (maxSize_ / 0.75)); - - public EfGridDataCacheWeakDecorator(EfGridData _init) { - super(); - init_ = _init; - } - - @SuppressWarnings("unchecked") - protected EfData getCachedData(CtuluVariable _o, int _timeIdx) { - Map<CtuluVariable, WeakReference<EfData>> res = (Map<CtuluVariable, WeakReference<EfData>>) timeMap_.get(_timeIdx); - if (res == null) return null; - WeakReference<EfData> reference = res.get(_o); - EfData efData = reference == null ? null : reference.get(); - if (FuLog.isDebug()) { - - FuLog.debug("EfGridDataCacheDecorator getDataFrom cache for " + _o + " " + _timeIdx + " found " - + (efData != null)); - - } - return efData; - - } - - public EfData getData(CtuluVariable _o, int _timeIdx) throws IOException { - EfData data = getCachedData(_o, _timeIdx); - // en cache: on renvoie - if (data != null) return data; - data = init_.getData(_o, _timeIdx); - if (data != null) setCachedData(_o, _timeIdx, data); - return data; - } - - public double getData(CtuluVariable _o, int _timeIdx, int _idxObjet) throws IOException { - EfData data = getCachedData(_o, _timeIdx); - if (data != null) return data.getValue(_idxObjet); - return init_.getData(_o, _timeIdx, _idxObjet); - } - - /** - * @return - * @see org.fudaa.dodico.ef.EfGridData#getGrid() - */ - public EfGridInterface getGrid() { - return init_.getGrid(); - } - - /** - * @return the maxSize - */ - public int getMaxSize() { - return maxSize_; - } - - /** - * @param _var - * @return - * @see org.fudaa.dodico.ef.EfGridData#isDefined(org.fudaa.ctulu.CtuluVariable) - */ - public boolean isDefined(CtuluVariable _var) { - return init_.isDefined(_var); - } - - /** - * @param _idxVar - * @return - * @see org.fudaa.dodico.ef.EfGridData#isElementVar(org.fudaa.ctulu.CtuluVariable) - */ - public boolean isElementVar(CtuluVariable _idxVar) { - return init_.isElementVar(_idxVar); - } - - @SuppressWarnings("unchecked") - protected void setCachedData(CtuluVariable _o, int _timeIdx, EfData _data) { - Map<CtuluVariable, WeakReference<EfData>> res = (Map<CtuluVariable, WeakReference<EfData>>) timeMap_.get(_timeIdx); - if (res == null) { - // on reduit la map - // if (timeMap_.size() > maxSize_) { - // int[] keys = timeMap_.keys(); - // Arrays.sort(keys); - // timeMap_.remove(keys[0]); - // } - res = new HashMap<CtuluVariable, WeakReference<EfData>>(10); - timeMap_.put(_timeIdx, res); - } - res.put(_o, new WeakReference<EfData>(_data)); - - } - - /** - * La taille max du nombre de pas de pour lesquels on veut cacher les donnees - * - * @param _maxSize the maxSize to set - */ - public void setMaxSize(int _maxSize) { - maxSize_ = _maxSize; - } - -} Modified: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireGridDataProvider.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireGridDataProvider.java 2008-11-02 00:42:09 UTC (rev 4148) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireGridDataProvider.java 2008-11-02 01:09:08 UTC (rev 4149) @@ -8,7 +8,7 @@ import org.fudaa.dodico.ef.EfGridData; import org.fudaa.dodico.ef.EfGridInterface; import org.fudaa.dodico.ef.decorator.EfGridDataCacheOneTimeDecorator; -import org.fudaa.dodico.ef.decorator.EfGridDataCacheWeakDecorator; +import org.fudaa.dodico.ef.decorator.EfGridDataCacheSoftReferenceDecorator; import org.fudaa.dodico.ef.decorator.EfGridDataTimeDecorator; /** @@ -48,7 +48,7 @@ public Trajectoire(double[] _initTimeStep, EfGridData _init) { super(); - init_ = new EfGridDataCacheWeakDecorator(_init); + init_ = new EfGridDataCacheSoftReferenceDecorator(_init); initTimeStep_ = _initTimeStep; } Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/graphe/EbliWidgetGraphe.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/graphe/EbliWidgetGraphe.java 2008-11-02 00:42:09 UTC (rev 4148) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/graphe/EbliWidgetGraphe.java 2008-11-02 01:09:08 UTC (rev 4149) @@ -14,7 +14,10 @@ import org.fudaa.ctulu.image.CtuluLibImage; import org.fudaa.ebli.animation.EbliAnimatedInterface; +import org.fudaa.ebli.animation.EbliAnimationAdapterInterface; +import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.courbe.EGAxe; +import org.fudaa.ebli.courbe.EGCourbe; import org.fudaa.ebli.courbe.EGFillePanel; import org.fudaa.ebli.courbe.EGGraphe; import org.fudaa.ebli.courbe.EGGrapheModelListener; @@ -23,6 +26,8 @@ import org.fudaa.ebli.visuallibrary.EbliNodeDefault; import org.fudaa.ebli.visuallibrary.EbliScene; import org.fudaa.ebli.visuallibrary.EbliWidget; +import org.fudaa.ebli.visuallibrary.animation.EbliWidgetAnimatedItem; +import org.geotools.xml.xsi.XSISimpleTypes.Int; import org.netbeans.api.visual.action.InplaceEditorProvider; import org.netbeans.api.visual.widget.Widget; @@ -43,7 +48,7 @@ public EGFillePanel getPanelGraphe() { return panelGraphe_; } - + BuPanel conteneurEditor; private EbliNodeDefault nodeLegende = null; @@ -51,16 +56,41 @@ public EbliNodeDefault getNodeLegende() { return nodeLegende; } - - public EbliAnimatedInterface getAnimatedInterface() { if (panelGraphe_ instanceof EbliAnimatedInterface) return (EbliAnimatedInterface) panelGraphe_; return null; } + @Override + public List<EbliWidgetAnimatedItem> getAnimatedItems() { + final EGCourbe[] cqs = panelGraphe_.getGraphe().getModel().getCourbes(); + final List<EbliWidgetAnimatedItem> res = new ArrayList<EbliWidgetAnimatedItem>(20); + for (int i = 0; i < cqs.length; i++) { + EGCourbe courbe = cqs[i]; + if (courbe.isVisible() && courbe instanceof EbliAnimationAdapterInterface) { + res.add(new EbliWidgetAnimatedItem((EbliAnimationAdapterInterface) courbe, courbe, getId(), getAnimId(courbe), + courbe.getTitle())); + } + } + return res; + } + private String getAnimId(EGCourbe courbe) { + return courbe.hashCode() + courbe.getTitle(); + } + @Override + public boolean isAnimatedItemAlive(final String _id) { + if(_id==null) return false; + final EGCourbe[] cqs = panelGraphe_.getGraphe().getModel().getCourbes(); + for (int i = 0; i < cqs.length; i++) { + EGCourbe courbe = cqs[i]; + if(_id.equals(getAnimId(courbe))) return true; + } + return false; + } + public void setNodeLegende(final EbliNodeDefault node) { nodeLegende = node; } @@ -77,7 +107,7 @@ // this.graphe_ = graphe; // } EbliWidgetControllerGraphe controllerGraphe_; - + public EbliWidgetGraphe(final EbliScene scene, final Point preferredLocation, final EGFillePanel _pn) { super(scene); panelGraphe_ = _pn; @@ -117,24 +147,24 @@ final Rectangle rec = getClientArea(); final Graphics2D g = getGraphics(); // g.translate(rec.x, rec.y); - if(rec.width>0 && rec.height>0){ - if (frame_ == null) { - getGraphe().setSize(rec.width - 1, rec.height - 1); - // getGraphe().computeMarges(g); - // getGraphe().dessine(g, rec.width - 1, rec.height - 1, false); - } + if (rec.width > 0 && rec.height > 0) { + if (frame_ == null) { + getGraphe().setSize(rec.width - 1, rec.height - 1); + // getGraphe().computeMarges(g); + // getGraphe().dessine(g, rec.width - 1, rec.height - 1, false); + } - // mode edition - if (imageGraphe == null || imageGraphe.getWidth() != rec.width || imageGraphe.getHeight() != rec.height) { - FuLog.debug("EWI: recreate image"); - final Map params = new HashMap(); - CtuluLibImage.setCompatibleImageAsked(params); + // mode edition + if (imageGraphe == null || imageGraphe.getWidth() != rec.width || imageGraphe.getHeight() != rec.height) { + FuLog.debug("EWI: recreate image"); + final Map params = new HashMap(); + CtuluLibImage.setCompatibleImageAsked(params); - imageGraphe = getGraphe().produceImage(rec.width - 1, rec.height - 1, params); + imageGraphe = getGraphe().produceImage(rec.width - 1, rec.height - 1, params); + } + g.drawImage(imageGraphe, rec.x, rec.y, rec.width - 1, rec.height - 1, null); } - g.drawImage(imageGraphe, rec.x, rec.y, rec.width - 1, rec.height - 1, null); - } // g.translate(-rec.x, -rec.y); } @@ -285,14 +315,12 @@ } public boolean hasSattelite() { - if (controllerGraphe_.hasLegende()) - return true; + if (controllerGraphe_.hasLegende()) return true; return false; } public List<EbliWidget> getSattelite() { - if (!hasSattelite()) - return null; + if (!hasSattelite()) return null; List<EbliWidget> liste = new ArrayList<EbliWidget>(); liste.add(getNodeLegende().getWidget()); @@ -300,17 +328,15 @@ return liste; } - + public void setSattelite(List<EbliWidget> liste) { - if(liste.size()<=0) - return; - - EbliWidget widg=liste.get(0); - - EbliNodeDefault node= (EbliNodeDefault) getEbliScene().findObject(widg); - setNodeLegende( node); - - + if (liste.size() <= 0) return; + + EbliWidget widg = liste.get(0); + + EbliNodeDefault node = (EbliNodeDefault) getEbliScene().findObject(widg); + setNodeLegende(node); + } - + } Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliWidgetTreeTableNode.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliWidgetTreeTableNode.java 2008-11-02 00:42:09 UTC (rev 4148) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/tree/EbliWidgetTreeTableNode.java 2008-11-02 01:09:08 UTC (rev 4149) @@ -1,6 +1,7 @@ package org.fudaa.ebli.visuallibrary.tree; import java.util.ArrayList; +import java.util.List; import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ebli.visuallibrary.EbliNode; @@ -33,7 +34,9 @@ static void addChilds(final ObjectScene _sc, final Widget w, final EbliWidgetTreeTableNode parent, final EbliNode parentNode) { - for (final Widget child : w.getChildren()) { + List<Widget> children = w.getChildren(); + for (int i = children.size() - 1; i >= 0; i--) { + Widget child = children.get(i); final EbliNode n = (EbliNode) _sc.findObject(child); if (n != null && n != parentNode) { final EbliWidgetTreeTableNode treeNode = new EbliWidgetTreeTableNode(n); @@ -94,7 +97,7 @@ // -- cas particulier si il s agit d un calque ou d un graphe, on masque // aussi - + if ((((EbliNode) getUserObject()).getWidget()) instanceof EbliWidgetBordureSingle && (((EbliNode) getUserObject()).getWidget()).getChildren() != null) { @@ -102,16 +105,16 @@ final EbliWidgetVueCalque wid = (EbliWidgetVueCalque) (((EbliNode) getUserObject()).getWidget()) .getChildren().get(0); if (((EbliWidgetControllerCalque) wid.getController()).hasLegende()) { - wid.nodeLegende.getWidget().setVisible(((Boolean) _value).booleanValue()); - listeWidgetUndo.add(wid.nodeLegende.getWidget()); + wid.nodeLegende.getWidget().setVisible(((Boolean) _value).booleanValue()); + listeWidgetUndo.add(wid.nodeLegende.getWidget()); } } else if ((((EbliNode) getUserObject()).getWidget()).getChildren().get(0) instanceof EbliWidgetGraphe) { final EbliWidgetGraphe wid = (EbliWidgetGraphe) (((EbliNode) getUserObject()).getWidget()).getChildren() .get(0); if (((EbliWidgetControllerGraphe) wid.getController()).hasLegende()) { - wid.getNodeLegende().getWidget().setVisible(((Boolean) _value).booleanValue()); - listeWidgetUndo.add(wid.getNodeLegende().getWidget()); + wid.getNodeLegende().getWidget().setVisible(((Boolean) _value).booleanValue()); + listeWidgetUndo.add(wid.getNodeLegende().getWidget()); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2008-11-02 00:42:15
|
Revision: 4148 http://fudaa.svn.sourceforge.net/fudaa/?rev=4148&view=rev Author: deniger Date: 2008-11-02 00:42:09 +0000 (Sun, 02 Nov 2008) Log Message: ----------- Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/CtuluNumberFormat.java branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/CtuluNumberFormatDefault.java branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/ctulu_en.fr_txt branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/gui/CtuluDecimalFormatEditPanel.java branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/gui/CtuluDialogPanel.java branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/image/CtuluImageExport.java branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/pdf/CtuluPanelPdfViewer.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/dico/DicoEntite.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/EfFilterNone.java branches/Prepro-0.92-SNAPSHOT/dodico/test/org/fudaa/dodico/telemac/TestJSerafin.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/BVueCalque.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZCalqueGrille.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/commun/EbliActionPaletteAbstract.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/commun/EbliFormatter.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/commun/EbliTableInfoPanel.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGCourbeSurfacePainter.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGFille.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGFillePanel.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGFillePanelDialog.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheDuplicator.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/ressource/ebli_en.fr_txt branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliScene.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetController.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EbliWidgetControllerCalque.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EbliWidgetFusionCalques.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/graphe/EbliWidgetControllerGraphe.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/graphe/EbliWidgetCreatorGraphe.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/graphe/EbliWidgetGraphe.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaGrapheTimeAnimatedVisuPanel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/impl/FudaaCommonImplementation.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/layer/MvNodeLayer.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileFillePanel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileFlowrateVolumeBuilder.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/ressource/fudaa_en.fr_txt branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/sig/layer/FSigGrillePalette.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerGroup.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/sig/layer/FSigVisuPanel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/sig/layer/FSigVisuPanelController.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/TrLauncherDefault.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/common/tr_en.fr_txt branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrIsoLayerDefault.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeFille.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostExprFlecheSupplier.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostFille.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostFlecheContent.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostFlecheContentDefaut.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostFlecheLayer.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostFlecheModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostMinMaxTableModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProfileFille.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjectCompPanel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjetCompTimeStepPanel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostRubarEnvFlecheContent.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostRubarLoader.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostScene.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSource.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceAbstract.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceComparatorBuilder.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceProjected.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceRubar.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceRubarMaxContainer.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceTelemac3D.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostUserVariableSaver.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostVisuPanel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/actions/TrPostActionCubature.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/actions/TrPostVolumeAction.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostDialogBilan.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostDialogCubature.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostTrajectoireTaskModel.java Added Paths: ----------- branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/Thumbs.db branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/copie-image_16.png branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/copie-image_22.png branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/gui/CtuluCellTextDecimalRenderer.java branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/image/CtuluImageSelection.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/cubature/ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/cubature/EfBilanHelper.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/cubature/EfComputeVolume.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/cubature/EfComputeVolumeSeuil.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/cubature/EfDataIntegrale.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireComputeAndDisplayActivity.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireGisDataModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireLineLayer.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireLineLayerPersistence.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreated.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreatedConstant.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreatedCstTime.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreatedCstTimeSaver.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreatedDefault.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreatedExpr.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreatedFroud.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreatedImport.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreatedMoins.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreatedNorm.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreatedNorme3D.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreatedPlus.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreatedRubarBathy.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreatedRubarVitesse.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreatedSaver.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreatedStatistic.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreatedStatisticSaver.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreationActions.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreationFille.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreationPanel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataEditCommonPanel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataEditCstPanel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataEditExprPanel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataEditStatisticPanel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataInfoDoc.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataListener.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataMinMaxGlobalItem.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataUserVarModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataVecteur.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostExtremVisitor.java Removed Paths: ------------- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/EfComputeVolume.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/EfComputeVolumeSeuil.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/EfDataIntegrale.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/impl/FudaaImageSelection.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/ressource/copie-image_16.png branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/ressource/copie-image_22.png branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreated.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreatedConstant.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreatedCstTime.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreatedCstTimeSaver.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreatedDefault.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreatedExpr.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreatedFroud.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreatedImport.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreatedMoins.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreatedNorm.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreatedNorme3D.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreatedPlus.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreatedRubarBathy.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreatedRubarVitesse.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreatedSaver.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreatedStatistic.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreatedStatisticSaver.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreationActions.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreationFille.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataCreationPanel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataEditCommonPanel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataEditCstPanel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataEditExprPanel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataEditStatisticPanel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataInfoDoc.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataListener.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataMinMaxGlobalItem.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataUserVarModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostDataVecteur.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostExtremVisitor.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrTrajectoireComputeAndDisplayActivity.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrTrajectoireGisDataModel.java Modified: branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/CtuluNumberFormat.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/CtuluNumberFormat.java 2008-10-31 18:14:47 UTC (rev 4147) +++ branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/CtuluNumberFormat.java 2008-11-02 00:42:09 UTC (rev 4148) @@ -9,6 +9,7 @@ import java.text.FieldPosition; import java.text.Format; +import java.text.NumberFormat; import java.text.ParsePosition; import com.memoire.fu.FuLog; @@ -18,6 +19,9 @@ * @version $Id: CtuluNumberFormat.java,v 1.10 2007-05-21 10:28:29 deniger Exp $ */ public abstract class CtuluNumberFormat extends Format implements CtuluNumberFormatI { + + + public void format(final double _d, final StringBuffer _dest) { _dest.append(format(_d)); Modified: branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/CtuluNumberFormatDefault.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/CtuluNumberFormatDefault.java 2008-10-31 18:14:47 UTC (rev 4147) +++ branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/CtuluNumberFormatDefault.java 2008-11-02 00:42:09 UTC (rev 4148) @@ -18,6 +18,13 @@ */ public class CtuluNumberFormatDefault extends CtuluNumberFormat { + public static CtuluNumberFormatDefault DEFAULT_FMT = new CtuluNumberFormatDefault(); + static { + final NumberFormat fmt = CtuluLib.getDecimalFormat(); + fmt.setMaximumFractionDigits(2); + DEFAULT_FMT.setFmt(fmt); + } + /** * @author fred deniger * @version $Id: CtuluNumberFormatDefault.java,v 1.8 2007-05-21 10:28:29 deniger Exp $ Added: branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/Thumbs.db =================================================================== (Binary files differ) Property changes on: branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/Thumbs.db ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Copied: branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/copie-image_16.png (from rev 3976, branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/ressource/copie-image_16.png) =================================================================== (Binary files differ) Property changes on: branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/copie-image_16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Copied: branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/copie-image_22.png (from rev 3976, branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/ressource/copie-image_22.png) =================================================================== (Binary files differ) Property changes on: branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/copie-image_22.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Modified: branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/ctulu_en.fr_txt =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/ctulu_en.fr_txt 2008-10-31 18:14:47 UTC (rev 4147) +++ branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/ctulu_en.fr_txt 2008-11-02 00:42:09 UTC (rev 4148) @@ -150,6 +150,7 @@ Le fichier '{0}' existe d\xE9j\xE0 et est prot\xE9g\xE9=The file {0} already exists and it's write protected Le r\xE9pertoire parent '{0}' est prot\xE9g\xE9 en \xE9criture=The parent folder {0} is write protected Choisir un autre fichier=Choose another file +Choisir le format=Chooser the decimal format Exportation annul\xE9e=Export cancelled Export r\xE9ussie=Export succeed Export=Export @@ -270,4 +271,10 @@ Supprimer les \xE9l\xE9ments s\xE9lectionn\xE9s=Delete selected items Erreur fichier inexistant= Error file is missing Erreur lors de la lecture du fichier= Error while reading the file -Chapitres=Chapters \ No newline at end of file +Chapitres=Chapters +Exporter donn\xE9es=Export data +Image enregistr\xE9e=Image saved +Enregistrement dans le presse-papier=Save image in the clipboard +Placer l'image de la fen\xEAtre active dans le presse-papier=Copy the image of the current frame in the clipboard +Copier l'image dans le presse-papier=Copy the image in the clipboard +Cr\xE9er une image \xE0 partir de la fen\xEAtre active=Create an image from the current frama \ No newline at end of file Added: branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/gui/CtuluCellTextDecimalRenderer.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/gui/CtuluCellTextDecimalRenderer.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/gui/CtuluCellTextDecimalRenderer.java 2008-11-02 00:42:09 UTC (rev 4148) @@ -0,0 +1,37 @@ +/** + * Licence GPL + * Copyright Genesis + */ +package org.fudaa.ctulu.gui; + +import org.fudaa.ctulu.CtuluNumberFormatDefault; +import org.fudaa.ctulu.CtuluNumberFormatI; + +/** + * @author deniger + */ +public class CtuluCellTextDecimalRenderer extends CtuluCellTextRenderer { + CtuluNumberFormatI formatter = CtuluNumberFormatDefault.DEFAULT_FMT; + + /** + * @return the formatter + */ + public CtuluNumberFormatI getFormatter() { + return formatter; + } + + /** + * @param _formatter the formatter to set + */ + public void setFormatter(CtuluNumberFormatI _formatter) { + formatter = _formatter; + } + + @Override + protected void setValue(Object _value) { + setHorizontalTextPosition(RIGHT); + setHorizontalAlignment(RIGHT); + if (_value == null) return; + super.setValue(formatter.format(((Number) _value).doubleValue())); + } +} Modified: branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/gui/CtuluDecimalFormatEditPanel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/gui/CtuluDecimalFormatEditPanel.java 2008-10-31 18:14:47 UTC (rev 4147) +++ branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/gui/CtuluDecimalFormatEditPanel.java 2008-11-02 00:42:09 UTC (rev 4148) @@ -45,6 +45,14 @@ */ public class CtuluDecimalFormatEditPanel extends CtuluDialogPanel implements BuBorders { + public static CtuluNumberFormatI chooseNumberFormat(CtuluNumberFormatI _init) { + CtuluDecimalFormatEditPanel pn = new CtuluDecimalFormatEditPanel(_init); + if (pn.afficheModaleOk(CtuluLibSwing.getActiveWindow(), CtuluLib.getS("Choisir le format"))) { + return pn.getCurrentFmt(); } + return _init; + + } + JPanel pnDecimalFormat_; JPanel pnFixedFormat_; @@ -129,9 +137,7 @@ } private JPanel createFixedPanel() { - if (pnFixedFormat_ != null) { - return pnFixedFormat_; - } + if (pnFixedFormat_ != null) { return pnFixedFormat_; } pnFixedFormat_ = new BuPanel(new BuGridLayout(2, 5, 5)); final CtuluValueValidator min = new CtuluValueValidator.IntMin(1); tfNbDigits_ = BuTextField.createIntegerField(); @@ -165,9 +171,7 @@ } private JPanel createDecimalPanel() { - if (pnDecimalFormat_ != null) { - return pnDecimalFormat_; - } + if (pnDecimalFormat_ != null) { return pnDecimalFormat_; } pnDecimalFormat_ = new BuPanel(new BuGridLayout(2, 5, 5)); cbISExp_ = new BuCheckBox(); tfFraction_ = BuTextField.createIntegerField(); Modified: branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/gui/CtuluDialogPanel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/gui/CtuluDialogPanel.java 2008-10-31 18:14:47 UTC (rev 4147) +++ branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/gui/CtuluDialogPanel.java 2008-11-02 00:42:09 UTC (rev 4148) @@ -195,7 +195,7 @@ return r; } - protected BuTextField addStringText() { + public BuTextField addStringText() { return addStringText(this); } Modified: branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/image/CtuluImageExport.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/image/CtuluImageExport.java 2008-10-31 18:14:47 UTC (rev 4147) +++ branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/image/CtuluImageExport.java 2008-11-02 00:42:09 UTC (rev 4148) @@ -7,6 +7,9 @@ */ package org.fudaa.ctulu.image; +import java.awt.Toolkit; +import java.awt.datatransfer.Clipboard; +import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; import java.io.File; import java.io.IOException; @@ -23,7 +26,9 @@ import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluLibFile; import org.fudaa.ctulu.CtuluPermanentList; +import org.fudaa.ctulu.CtuluTaskDelegate; import org.fudaa.ctulu.CtuluUI; +import org.fudaa.ctulu.ProgressionInterface; /** * @author Fred Deniger @@ -95,4 +100,24 @@ return true; } + public static void exportImageInClipboard(final CtuluImageProducer frame, final CtuluUI _ui) { + final BufferedImage produceImage = frame.produceImage(null); + final CtuluTaskDelegate task = _ui.createTask(CtuluLib.getS("Enregistrement dans le presse-papier")); + task.start(new Runnable() { + + public void run() { + final ProgressionInterface prog = task.getStateReceiver(); + + final Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); + prog.setProgression(10); + final CtuluImageSelection selection = new CtuluImageSelection(produceImage); + prog.setProgression(30); + clipboard.setContents(selection, selection); + prog.setProgression(90); + _ui.message("Image", CtuluLib.getS("Image enregistr\xE9e"), true); + } + + }); + } + } \ No newline at end of file Copied: branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/image/CtuluImageSelection.java (from rev 3976, branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/impl/FudaaImageSelection.java) =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/image/CtuluImageSelection.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/image/CtuluImageSelection.java 2008-11-02 00:42:09 UTC (rev 4148) @@ -0,0 +1,87 @@ +/* + * @creation 6 d\xE9c. 06 + * @modification $Date: 2007-02-07 09:56:20 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.ctulu.image; + +import java.awt.Image; +import java.awt.datatransfer.Clipboard; +import java.awt.datatransfer.ClipboardOwner; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; + +import javax.swing.JComponent; +import javax.swing.TransferHandler; + + +/** + * @author fred deniger + * @version $Id: FudaaImageSelection.java,v 1.3 2007-02-07 09:56:20 deniger Exp $ + */ +public class CtuluImageSelection extends TransferHandler implements Transferable, ClipboardOwner { + + public CtuluImageSelection(final Image _image) { + super(); + image_ = _image; + } + public CtuluImageSelection() { + super(); + } + + public void lostOwnership(final Clipboard _clipboard, final Transferable _contents) {} + + private static final DataFlavor[] FLAVORS = { DataFlavor.imageFlavor }; + + private Image image_; + + public int getSourceActions(final JComponent _c) { + return TransferHandler.COPY; + } + + public boolean canImport(final JComponent _comp, final DataFlavor[] _flavor) { + if (!(_comp instanceof CtuluImageProducer)) { + return false; + } + for (int i = 0, n = _flavor.length; i < n; i++) { + if (_flavor.equals(FLAVORS[0])) { + return true; + } + } + return false; + } + + public Transferable createTransferable(final JComponent _comp) { + // Clear + image_ = null; + + if (_comp instanceof CtuluImageProducer) { + image_ = ((CtuluImageProducer) _comp).produceImage(null); + return this; + } + return null; + } + + public boolean importData(final JComponent _comp, final Transferable _t) { + return false; + } + + // Transferable + public Object getTransferData(final DataFlavor _flavor) { + if (isDataFlavorSupported(_flavor)) { + return image_; + } + return null; + } + + public DataFlavor[] getTransferDataFlavors() { + return FLAVORS; + } + + public boolean isDataFlavorSupported(final DataFlavor _flavor) { + return _flavor.equals(FLAVORS[0]); + } + +} Property changes on: branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/image/CtuluImageSelection.java ___________________________________________________________________ Added: svn:mergeinfo + Modified: branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/pdf/CtuluPanelPdfViewer.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/pdf/CtuluPanelPdfViewer.java 2008-10-31 18:14:47 UTC (rev 4147) +++ branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/pdf/CtuluPanelPdfViewer.java 2008-11-02 00:42:09 UTC (rev 4148) @@ -3,60 +3,47 @@ import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; +import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; import java.awt.geom.Rectangle2D; import java.awt.print.Book; import java.awt.print.PageFormat; import java.awt.print.PrinterException; import java.awt.print.PrinterJob; -import java.awt.Toolkit; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; import java.io.RandomAccessFile; -import java.net.Socket; +import java.lang.reflect.InvocationTargetException; import java.net.URL; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; -import java.util.Date; -import java.util.HashMap; import javax.swing.AbstractAction; import javax.swing.Action; -import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.ButtonGroup; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JCheckBoxMenuItem; import javax.swing.JDialog; import javax.swing.JFileChooser; -import javax.swing.JFrame; import javax.swing.JMenu; -import javax.swing.JMenuBar; -import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JScrollPane; -import javax.swing.JSplitPane; import javax.swing.JTextField; import javax.swing.JToggleButton; import javax.swing.JToolBar; import javax.swing.JTree; +import javax.swing.SwingUtilities; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.filechooser.FileFilter; -import javax.swing.SwingUtilities; -import org.fudaa.ctulu.CtuluResource; import org.fudaa.ctulu.CtuluUI; import com.memoire.bu.BuPanel; @@ -74,7 +61,6 @@ import com.sun.pdfview.ThumbPanel; import com.sun.pdfview.action.GoToAction; import com.sun.pdfview.action.PDFAction; -import java.lang.reflect.InvocationTargetException; /** * Classe qui g\xE9n\xE8re un panel disposant de toutes les fonctionnalit\xE9 du lecteur pdf. * Ce panel s'autosuffie pour la gestion des pdfs Modified: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/dico/DicoEntite.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/dico/DicoEntite.java 2008-10-31 18:14:47 UTC (rev 4147) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/dico/DicoEntite.java 2008-11-02 00:42:09 UTC (rev 4148) @@ -387,6 +387,8 @@ */ public void setTaille(final int _i) { taille_ = _i; + //Nombre magique qui indique qu'un tableau est dynamique +// if(taille_==2) dynamique_=true; } public String toString() { Deleted: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/EfComputeVolume.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/EfComputeVolume.java 2008-10-31 18:14:47 UTC (rev 4147) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/EfComputeVolume.java 2008-11-02 00:42:09 UTC (rev 4148) @@ -1,195 +0,0 @@ -/* - * @creation 1 f\xE9vr. 07 - * @modification $Date: 2007-06-11 13:04:05 $ - * @license GNU General Public License 2 - * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne - * @mail de...@fu... - */ -package org.fudaa.dodico.ef; - -import gnu.trove.TIntArrayList; -import gnu.trove.TIntObjectHashMap; - -import java.io.IOException; - -import com.memoire.fu.FuLog; - -import org.fudaa.ctulu.CtuluActivity; -import org.fudaa.ctulu.CtuluAnalyze; -import org.fudaa.ctulu.CtuluVariable; -import org.fudaa.ctulu.ProgressionInterface; -import org.fudaa.ctulu.ProgressionUpdater; - -import org.fudaa.dodico.commun.DodicoLib; - -/** - * Permet de calculer le volume d'eau sur une s\xE9lection d'\xE9l\xE9ment ou de noeuds. - * - * @author fred deniger - * @version $Id: EfComputeVolume.java,v 1.4 2007-06-11 13:04:05 deniger Exp $ - */ -public abstract class EfComputeVolume implements CtuluActivity { - - public static class ForMeshData extends EfComputeVolume { - - ForMeshData(final EfFilter _filter, final ProgressionInterface _prog, final EfGridData _data, - final CtuluVariable _hVar) { - super(_filter, _prog, _data, _hVar); - } - - double computeVolume(final EfGridInterface _grid, final EfData _h) { - double resi = 0; - for (int ielt = 0; ielt < _grid.getEltNb(); ielt++) { - if (filter_.isActivatedElt(ielt, _grid, false)) { - resi += _grid.getAire(ielt) * _h.getValue(ielt); - } - } - return resi; - } - - } - - public static class ForNodeData extends EfComputeVolume { - - ForNodeData(final EfFilter _filter, final ProgressionInterface _prog, final EfGridData _data, - final CtuluVariable _hVar) { - super(_filter, _prog, _data, _hVar); - } - - double computeVolume(final EfGridInterface _grid, final EfData _h) { - double resi = 0; - for (int ipt = 0; ipt < _grid.getPtsNb(); ipt++) { - // le calcul du volume se fait: - // Volume=(surface des elements adjacents)* hauteur au point /3 - if (filter_.isActivated(ipt)) { - // liste des elements adjacents. - final TIntArrayList list = (TIntArrayList) idxPtAdjMes_.get(ipt); - // la liste est nulle: ne devrait jamais arriv\xE9: un point isol\xE9 que faire ? - // pour l'instant on ignore. - if (list != null) { - // s est la surface des elements adjacents. - double s = 0D; - for (int k = 0; k < list.size(); k++) { - s += _grid.getAire(list.getQuick(k)); - } - // la formule qui tue - resi += s * _h.getValue(ipt) / 3D; - } - } - } - return resi; - } - - public double[] getVolume(final int _nbTimeStep) { - computeNeighborMeshes(); - return super.getVolume(_nbTimeStep); - } - } - - final EfGridData data_; - final EfFilter filter_; - final CtuluVariable h_; - /** - * Stocke indice du noeuds -> list element adjacent. Pour les noeuds s\xE9lecionn\xE9s uniquement - */ - TIntObjectHashMap idxPtAdjMes_; - ProgressionInterface prog_; - - boolean stop_; - - public static EfComputeVolume getVolumeComputer(final EfFilter _filter, final ProgressionInterface _prog, - final EfGridData _data, final CtuluVariable _hVar, final CtuluAnalyze _analyze) { - if (!_data.isDefined(_hVar)) { - _analyze.addFatalError(DodicoLib.getS("La hauteur d'eau n'est pas d\xE9finie")); - return null; - } - if (_data.isElementVar(_hVar)) { - return new ForMeshData(_filter, _prog, _data, _hVar); - } - return new ForNodeData(_filter, _prog, _data, _hVar); - - } - - EfComputeVolume(final EfFilter _filter, final ProgressionInterface _prog, final EfGridData _data, - final CtuluVariable _hVar) { - super(); - prog_ = _prog; - data_ = _data; - h_ = _hVar; - filter_ = _filter == null ? new EfFilterNone() : _filter; - } - - abstract double computeVolume(final EfGridInterface _grid, EfData _h); - - protected void computeNeighborMeshes() { - if (idxPtAdjMes_ != null) { - return; - } - final ProgressionUpdater up = new ProgressionUpdater(prog_); - final EfGridInterface grid = data_.getGrid(); - up.setValue(10, grid.getEltNb()); - up.majProgessionStateOnly(DodicoLib.getS("Recherche des \xE9l\xE9ments voisins")); - idxPtAdjMes_ = new TIntObjectHashMap(grid.getPtsNb()); - for (int i = 0; i < grid.getEltNb(); i++) { - if (stop_) { - idxPtAdjMes_ = null; - return; - } - final EfElement elt = grid.getElement(i); - for (int j = 0; j < elt.getPtNb(); j++) { - final int ptIndex = elt.getPtIndex(j); - // si le noeud est s\xE9lectionne - if (filter_.isActivated(ptIndex)) { - TIntArrayList list = (TIntArrayList) idxPtAdjMes_.get(ptIndex); - // ce noeud n'a pas encore \xE9t\xE9 trait\xE9 - if (list == null) { - list = new TIntArrayList(10); - idxPtAdjMes_.put(ptIndex, list); - } - list.add(i); - - } - } - up.majAvancement(); - } - } - - public double[] getVolume(final int _nbTimeStep) { - final ProgressionUpdater up = new ProgressionUpdater(prog_); - final EfGridInterface grid = data_.getGrid(); - up.setValue(10, _nbTimeStep); - final double[] res = new double[_nbTimeStep]; - up.majProgessionStateOnly(DodicoLib.getS("Calcul du volume")); - for (int i = 0; i < res.length; i++) { - if (stop_) { - return null; - } - EfData h = null; - try { - h = data_.getData(h_, i); - } catch (final IOException _evt) { - FuLog.error(_evt); - - } - if (h == null) { - return null; - } - res[i] = computeVolume(grid, h); - up.majAvancement(); - } - return res; - } - - public ProgressionInterface getProg() { - return prog_; - } - - public void setProg(final ProgressionInterface _prog) { - prog_ = _prog; - } - - public void stop() { - stop_ = true; - } - -} Deleted: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/EfComputeVolumeSeuil.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/EfComputeVolumeSeuil.java 2008-10-31 18:14:47 UTC (rev 4147) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/EfComputeVolumeSeuil.java 2008-11-02 00:42:09 UTC (rev 4148) @@ -1,187 +0,0 @@ -package org.fudaa.dodico.ef; - -import gnu.trove.TIntArrayList; -import gnu.trove.TIntObjectHashMap; - -import java.io.IOException; - -import org.fudaa.ctulu.CtuluActivity; -import org.fudaa.ctulu.CtuluAnalyze; -import org.fudaa.ctulu.CtuluVariable; -import org.fudaa.ctulu.ProgressionInterface; -import org.fudaa.ctulu.ProgressionUpdater; -import org.fudaa.dodico.commun.DodicoLib; - -import com.memoire.fu.FuLog; - -/** - * Calcul du volume par rapport a un seuil et non plus 0. - * - * @author Adrien Hadoux - */ -public abstract class EfComputeVolumeSeuil implements CtuluActivity { - - public static class ForMeshData extends EfComputeVolumeSeuil { - - ForMeshData(final EfFilter _filter, final ProgressionInterface _prog, final EfGridData _data, - final CtuluVariable _hVar, final int timestep, final double seuil) { - super(_filter, _prog, _data, _hVar, timestep, seuil); - } - - EfDataIntegrale computeVolume(final EfGridInterface _grid, final EfData _h) { - EfDataIntegrale resi = new EfDataIntegrale(); - for (int ielt = 0; ielt < _grid.getEltNb(); ielt++) { - if (filter_.isActivatedElt(ielt, _grid, false)) { - - double value = _grid.getAire(ielt) * (_h.getValue(ielt) - seuil_);// Todo je pense que c'est la diff - if (value >= 0) resi.zonePlus_ += value; - else resi.zoneMoins_ -= value; - } - } - return resi; - } - } - - public static class ForNodeData extends EfComputeVolumeSeuil { - - ForNodeData(final EfFilter _filter, final ProgressionInterface _prog, final EfGridData _data, - final CtuluVariable _hVar, final int timestep, final double seuil) { - super(_filter, _prog, _data, _hVar, timestep, seuil); - } - - EfDataIntegrale computeVolume(final EfGridInterface _grid, final EfData _h) { - EfDataIntegrale resi = new EfDataIntegrale(); - for (int ipt = 0; ipt < _grid.getPtsNb(); ipt++) { - // le calcul du volume se fait: - // Volume=(surface des elements adjacents)* hauteur au point /3 - if (filter_.isActivated(ipt)) { - // liste des elements adjacents. - final TIntArrayList list = (TIntArrayList) idxPtAdjMes_.get(ipt); - // la liste est nulle: ne devrait jamais arriv\xE9: un point isol\xE9 que faire ? - // pour l'instant on ignore. - if (list != null) { - // s est la surface des elements adjacents. - double s = 0D; - for (int k = 0; k < list.size(); k++) { - s += _grid.getAire(list.getQuick(k)); - } - double d = s * (_h.getValue(ipt)) / 3D - seuil_;// TODO a verifier - if (d >= 0) resi.zonePlus_ += d; - else resi.zoneMoins_ -= d; - } - } - } - return resi; - } - - public EfDataIntegrale getVolume(int _choosenTimestep) { - computeNeighborMeshes(); - return super.getVolume(_choosenTimestep); - } - } - - final EfGridData data_; - final EfFilter filter_; - final CtuluVariable h_; - protected final int timeStep_; - protected final double seuil_; - - /** - * Stocke indice du noeuds -> list element adjacent. Pour les noeuds s\xE9lecionn\xE9s uniquement - */ - TIntObjectHashMap idxPtAdjMes_; - ProgressionInterface prog_; - - boolean stop_; - - public static EfComputeVolumeSeuil getVolumeComputer(final EfFilter _filter, final ProgressionInterface _prog, - final EfGridData _data, final CtuluVariable _hVar, final int timestep, final double seuil, - final CtuluAnalyze _analyze) { - if (!_data.isDefined(_hVar)) { - _analyze.addFatalError(DodicoLib.getS("La variable n'est pas d\xE9finie")); - return null; - } - if (_data.isElementVar(_hVar)) { return new ForMeshData(_filter, _prog, _data, _hVar, timestep, seuil); } - return new ForNodeData(_filter, _prog, _data, _hVar, timestep, seuil); - - } - - EfComputeVolumeSeuil(final EfFilter _filter, final ProgressionInterface _prog, final EfGridData _data, - final CtuluVariable _hVar, final int timestep, final double seuil) { - super(); - prog_ = _prog; - data_ = _data; - h_ = _hVar; - timeStep_ = timestep; - seuil_ = seuil; - filter_ = _filter == null ? new EfFilterNone() : _filter; - } - - abstract EfDataIntegrale computeVolume(final EfGridInterface _grid, EfData _h); - - protected void computeNeighborMeshes() { - if (idxPtAdjMes_ != null) { return; } - final ProgressionUpdater up = new ProgressionUpdater(prog_); - final EfGridInterface grid = data_.getGrid(); - up.setValue(10, grid.getEltNb()); - up.majProgessionStateOnly(DodicoLib.getS("Recherche des \xE9l\xE9ments voisins")); - idxPtAdjMes_ = new TIntObjectHashMap(grid.getPtsNb()); - for (int i = 0; i < grid.getEltNb(); i++) { - if (stop_) { - idxPtAdjMes_ = null; - return; - } - final EfElement elt = grid.getElement(i); - for (int j = 0; j < elt.getPtNb(); j++) { - final int ptIndex = elt.getPtIndex(j); - // si le noeud est s\xE9lectionne - if (filter_.isActivated(ptIndex)) { - TIntArrayList list = (TIntArrayList) idxPtAdjMes_.get(ptIndex); - // ce noeud n'a pas encore \xE9t\xE9 trait\xE9 - if (list == null) { - list = new TIntArrayList(10); - idxPtAdjMes_.put(ptIndex, list); - } - list.add(i); - - } - } - up.majAvancement(); - } - } - - public EfDataIntegrale getVolume(int choosenTimestep) { - final ProgressionUpdater up = new ProgressionUpdater(prog_); - final EfGridInterface grid = data_.getGrid(); - up.setValue(10, 100); - EfDataIntegrale res; - up.majProgessionStateOnly(DodicoLib.getS("Calcul du volume")); - - if (stop_) { return null; } - EfData h = null; - try { - h = data_.getData(h_, timeStep_); - } catch (final IOException _evt) { - FuLog.error(_evt); - - } - if (h == null) { return null; } - res = computeVolume(grid, h); - up.majAvancement(); - - return res; - } - - public ProgressionInterface getProg() { - return prog_; - } - - public void setProg(final ProgressionInterface _prog) { - prog_ = _prog; - } - - public void stop() { - stop_ = true; - } - -} Deleted: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/EfDataIntegrale.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/EfDataIntegrale.java 2008-10-31 18:14:47 UTC (rev 4147) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/EfDataIntegrale.java 2008-11-02 00:42:09 UTC (rev 4148) @@ -1,213 +0,0 @@ -package org.fudaa.dodico.ef; - -import org.fudaa.dodico.ef.operation.EfLineIntersectionsResultsI; - -/** - * Classe qui gere les bilans ainsi que les cubatures. - * - * @author Adrien Hadoux - * - */ -public class EfDataIntegrale { - - /** - * Valeur pour la zone plus - */ - double zonePlus_ = 0; - - /** - * Valeur int\xE9grale pour la zone moins - */ - double zoneMoins_ = 0; - - - - - public double getZonePlus() { - return zonePlus_; - } - - public double getZoneMoins() { - return zoneMoins_; - } - - /** - * Integration des donnees par la methode des trapezes entre la courbe - * representee par les x et y et la droite d\xE9finie par la fonction affine de - * coeff a et d'ordonn\xE9\xE9e a l origine b y=a*x+b - * - * @param lx - * @param ly - * @return - */ - public static EfDataIntegrale integrerMethodeTrapeze(double[] lx, double[] ly, double a, double b) { - - EfDataIntegrale data = new EfDataIntegrale(); - - for (int i = 0; i < Math.min(lx.length, ly.length)-1; i++) { - double x = lx[i]; - double x2= lx[i+1]; - double y = ly[i]; - double y2= ly[i+1]; - - double ySeuil1=a*x+b; - double ySeuil2=a*x2+b; - if (y > ySeuil1 && y2 > ySeuil2) { - // courbe au dessus de la ligne - data.zonePlus_ += calculAireTrapeze(x, y, x2, y2, ySeuil1, ySeuil2); - - } else if (y < ySeuil1 && y2 < ySeuil2) { - // courbe en dessous de la ligne - data.zoneMoins_ += calculAireTrapeze(x, y, x2, y2, ySeuil1, ySeuil2); - - } else { - // cas particulier : intersection, on calcule l'intersection entre les - // points - // cas particulier : intersection, on calcule l'intersection entre les - // points - double yIntersect = 0; - double xIntersect = 0; - // on prend la droite form\xE9e par les 2 points et on calcule son - // intersection avec la droite affine - if (x2 - x != 0) { - // droite non parrallele a l axe des abscisses - double coefDirecteur = (y2 - y) / (x2 - x); - double ordoOrigine = y2 - coefDirecteur * x2; - - // intersection de droites avec le seuil - - - if(coefDirecteur - a!=0){ - //droie non paralleles - xIntersect = (ordoOrigine-b) / (coefDirecteur-a); - yIntersect=coefDirecteur*xIntersect+ordoOrigine; - } - else - { - // droite parrallele confondue au seuil, on ne fais rien... - } - - } else { - // x2=x droite d equation x=Cste - - xIntersect = x; - yIntersect = a*x+b; - } - - //maintenant que l on a le point d'intersection, on test si on ajoute en positif ou negatif - if (y >= ySeuil1 && y2 <= ySeuil2) { - data.zonePlus_ += calculAireTrapeze(x, y, xIntersect, yIntersect, ySeuil1, ySeuil2); - data.zoneMoins_ += calculAireTrapeze(xIntersect, yIntersect, x2, y2, ySeuil1, ySeuil2); - - } else { - data.zoneMoins_ += calculAireTrapeze(x, y, xIntersect, yIntersect, ySeuil1, ySeuil2); - data.zonePlus_ += calculAireTrapeze(xIntersect, yIntersect, x2, y2, ySeuil1, ySeuil2); - } - - } - - - } - - - return data; - } - - - - /** - * Calcule l'aire du trapeze en utilisant un objet - * EfLineIntersectionsResultsI. EfLineIntersectionsResultsI fonctionne de la - * maniere suivante: getNbIntersect():donne le nombre de points - * getDistFromDeb(i) donne le Xi: distance entre le debut et le point - * getIntersect(i) getValueBadInterpolation(EfData _d) donne le y associ\xE9 au x - */ - public static EfDataIntegrale integrerMethodeTrapeze(EfLineIntersectionsResultsI interfaceResults, EfData crbdata, - double seuil) { - - EfDataIntegrale data = new EfDataIntegrale(); - - for (int i = 0; i < interfaceResults.getNbIntersect() - 1; i++) { - double x = interfaceResults.getDistFromDeb(i); - double x2 = interfaceResults.getDistFromDeb(i + 1); - double y = interfaceResults.getIntersect(i).getValueBadInterpolation(crbdata); - double y2 = interfaceResults.getIntersect(i + 1).getValueBadInterpolation(crbdata); - - - if (y >= seuil && y2 >= seuil) { - // courbe au dessus de la ligne - data.zonePlus_ += calculAireTrapeze(x, y, x2, y2, seuil, seuil); - } else if (y <= seuil && y2 <= seuil) { - // courbe en dessous de la ligne - data.zoneMoins_ += calculAireTrapeze(x, y, x2, y2, seuil, seuil); - } else { - // cas particulier : intersection, on calcule l'intersection entre les - // points - final double yIntersect = seuil; - double xIntersect = 0; - // on prend la droite form\xE9e par les 2 points et on calcule son - // intersection avec la droite affine - if (x2 - x != 0) { - // droite non parrallele a l axe des ordonn\xE9e ! - double coefDirecteur = (y2 - y) / (x2 - x); - double ordoOrigine = y2 - coefDirecteur * x2; - - // intersection de droites avec le seuil -// yIntersect = seuil; - - - if(coefDirecteur!=0) - //droie non parallele au seuil - xIntersect = (yIntersect - ordoOrigine) / coefDirecteur; - else - { - // droite parrallele confondue au seuil, on ne fais rien... - } - - } else { - // x2=x droite perpendiculaire au seuil, le point d'intersection est - // donc (x,seuil) - xIntersect = x; -// yIntersect = seuil; - } - - //maintenant que l on a le point d'intersection, on test si on ajoute en positif ou negatif - if (y >= seuil && y2 <= seuil) { - data.zonePlus_ += calculAireTrapeze(x, y, xIntersect, yIntersect, seuil, seuil); - data.zoneMoins_ += calculAireTrapeze(xIntersect, yIntersect, x2, y2, seuil, seuil); - - } else { - data.zoneMoins_ += calculAireTrapeze(x, y, xIntersect, yIntersect, seuil, seuil); - data.zonePlus_ += calculAireTrapeze(xIntersect, yIntersect, x2, y2, seuil, seuil); - } - - } - - } - - return data; - } - - - /** - * calcul de l'aire du trapeze form\xE9 par les 4 points (x,y) (x2,y2) (x,y3) - * (x2,y4) - */ - public static double calculAireTrapeze(double x, double y, double x2, double y2, double y3, double y4) { - // 1: calcul de la hauteur - double h = Math.abs(x2 - x); - // 2 base 1: coordonnees cartesiennes entre le point x,y et x,y3 - double base1 = Math.abs(y3 - y); - // 3 base 2: coordonnees cartesiennes entre le point x2,y2 et x2,y4 - double base2 = Math.abs(y4 - y2); - // 4 calcul de l'aire - return h * (base1 + base2) / 2; -} - - - public double getResultat() { - return zonePlus_ - zoneMoins_; - } - - -} Modified: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/EfFilterNone.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/EfFilterNone.java 2008-10-31 18:14:47 UTC (rev 4147) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/EfFilterNone.java 2008-11-02 00:42:09 UTC (rev 4148) @@ -8,6 +8,8 @@ package org.fudaa.dodico.ef; /** + * Un filtre vide: tous les elements/ noeuds sont selectionnes. + * * @author fred deniger * @version $Id: EfFilterNone.java,v 1.2 2007-05-04 13:45:58 deniger Exp $ */ Added: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/cubature/EfBilanHelper.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/cubature/EfBilanHelper.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/cubature/EfBilanHelper.java 2008-11-02 00:42:09 UTC (rev 4148) @@ -0,0 +1,175 @@ +/** + * Licence GPL + * Copyright Genesis + */ +package org.fudaa.dodico.ef.cubature; + +import org.fudaa.dodico.ef.EfData; +import org.fudaa.dodico.ef.operation.EfLineIntersectionsResultsI; + +/** + * @author deniger + */ +public class EfBilanHelper { + + /** + * Integration des donnees par la methode des trapezes entre la courbe representee par les x et y et la droite d\xE9finie + * par la fonction affine de coeff a et d'ordonn\xE9\xE9e a l origine b y=a*x+b + * + * @param lx + * @param ly + * @return + */ + public static EfDataIntegrale integrerMethodeTrapeze(double[] lx, double[] ly, double a, double b) { + + EfDataIntegrale data = new EfDataIntegrale(); + + for (int i = 0; i < Math.min(lx.length, ly.length) - 1; i++) { + double x = lx[i]; + double x2 = lx[i + 1]; + double y = ly[i]; + double y2 = ly[i + 1]; + + double ySeuil1 = a * x + b; + double ySeuil2 = a * x2 + b; + if (y > ySeuil1 && y2 > ySeuil2) { + // courbe au dessus de la ligne + data.addZonePlus(calculAireTrapeze(x, y, x2, y2, ySeuil1, ySeuil2)); + + } else if (y < ySeuil1 && y2 < ySeuil2) { + // courbe en dessous de la ligne + data.addZoneMoins(calculAireTrapeze(x, y, x2, y2, ySeuil1, ySeuil2)); + + } else { + // cas particulier : intersection, on calcule l'intersection entre les + // points + // cas particulier : intersection, on calcule l'intersection entre les + // points + double yIntersect = 0; + double xIntersect = 0; + // on prend la droite form\xE9e par les 2 points et on calcule son + // intersection avec la droite affine + if (x2 - x != 0) { + // droite non parrallele a l axe des abscisses + double coefDirecteur = (y2 - y) / (x2 - x); + double ordoOrigine = y2 - coefDirecteur * x2; + + // intersection de droites avec le seuil + + if (coefDirecteur - a != 0) { + // droie non paralleles + xIntersect = (ordoOrigine - b) / (coefDirecteur - a); + yIntersect = coefDirecteur * xIntersect + ordoOrigine; + } else { + // droite parrallele confondue au seuil, on ne fais rien... + } + + } else { + // x2=x droite d equation x=Cste + + xIntersect = x; + yIntersect = a * x + b; + } + + // maintenant que l on a le point d'intersection, on test si on ajoute en positif ou negatif + if (y >= ySeuil1 && y2 <= ySeuil2) { + data.addZonePlus(calculAireTrapeze(x, y, xIntersect, yIntersect, ySeuil1, ySeuil2)); + data.addZoneMoins(calculAireTrapeze(xIntersect, yIntersect, x2, y2, ySeuil1, ySeuil2)); + + } else { + data.addZoneMoins(calculAireTrapeze(x, y, xIntersect, yIntersect, ySeuil1, ySeuil2)); + data.addZonePlus(calculAireTrapeze(xIntersect, yIntersect, x2, y2, ySeuil1, ySeuil2)); + } + + } + + } + + return data; + } + + /** + * Calcule l'aire du trapeze en utilisant un objet EfLineIntersectionsResultsI. EfLineIntersectionsResultsI fonctionne + * de la maniere suivante: getNbIntersect():donne le nombre de points getDistFromDeb(i) donne le Xi: distance entre le + * debut et le point getIntersect(i) getValueBadInterpolation(EfData _d) donne le y associ\xE9 au x + */ + public static EfDataIntegrale integrerMethodeTrapeze(EfLineIntersectionsResultsI _interfaceResults, EfData _crbdata, + double seuil) { + + EfDataIntegrale data = new EfDataIntegrale(); + + for (int i = 0; i < _interfaceResults.getNbIntersect() - 1; i++) { + // on ne traite pas ce cas, + if (_interfaceResults.isSegmentOut(i)) continue; + double x = _interfaceResults.getDistFromDeb(i); + double x2 = _interfaceResults.getDistFromDeb(i + 1); + double y = _interfaceResults.getIntersect(i).getValueBadInterpolation(_crbdata); + double y2 = _interfaceResults.getIntersect(i + 1).getValueBadInterpolation(_crbdata); + + if (y >= seuil && y2 >= seuil) { + // courbe au dessus de la ligne + data.addZonePlus(calculAireTrapeze(x, y, x2, y2, seuil, seuil)); + } else if (y <= seuil && y2 <= seuil) { + // courbe en dessous de la ligne + data.addZoneMoins(calculAireTrapeze(x, y, x2, y2, seuil, seuil)); + } else { + // cas particulier : intersection, on calcule l'intersection entre les + // points + final double yIntersect = seuil; + double xIntersect = 0; + // on prend la droite form\xE9e par les 2 points et on calcule son + // intersection avec la droite affine + if (x2 - x != 0) { + // droite non parrallele a l axe des ordonn\xE9e ! + double coefDirecteur = (y2 - y) / (x2 - x); + double ordoOrigine = y2 - coefDirecteur * x2; + + // intersection de droites avec le seuil + // yIntersect = seuil; + + if (coefDirecteur != 0) + // droie non parallele au seuil + xIntersect = (yIntersect - ordoOrigine) / coefDirecteur; + else { + // droite parrallele confondue au seuil, on ne fais rien... + } + + } else { + // x2=x droite perpendiculaire au seuil, le point d'intersection est + // donc (x,seuil) + xIntersect = x; + // yIntersect = seuil; + } + + // maintenant que l on a le point d'intersection, on test si on ajoute en positif ou negatif + if (y >= seuil && y2 <= seuil) { + data.addZonePlus(calculAireTrapeze(x, y, xIntersect, yIntersect, seuil, seuil)); + data.addZoneMoins(calculAireTrapeze(xIntersect, yIntersect, x2, y2, seuil, seuil)); + + } else { + data.addZoneMoins(calculAireTrapeze(x, y, xIntersect, yIntersect, seuil, seuil)); + data.addZonePlus(calculAireTrapeze(xIntersect, yIntersect, x2, y2, seuil, seuil)); + } + + } + + } + + return data; + } + + /** + * calcul de l'aire du trapeze form\xE9 par les 4 points (x,y) (x2,y2) (x,y3) (x2,y4) + */ + public static double calculAireTrapeze(double x, double y, double x2, double y2, double y3, double y4) { + // 1: calcul de la hauteur + double h = Math.abs(x2 - x); + // 2 base 1: coordonnees cartesiennes entre le point x,y et x,y3 + double base1 = Math.abs(y3 - y); + // 3 base 2: coordonnees cartesiennes entre le point x2,y2 et x2,y4 + double base2 = Math.abs(y4 - y2); + // 4 calcul de l'aire + return h * (base1 + base2) / 2; + } + +} Copied: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/cubature/EfComputeVolume.java (from rev 4018, branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/EfComputeVolume.java) =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/cubature/EfComputeVolume.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/cubature/EfComputeVolume.java 2008-11-02 00:42:09 UTC (rev 4148) @@ -0,0 +1,201 @@ +/* + * @creation 1 f\xE9vr. 07 + * @modification $Date: 2007-06-11 13:04:05 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.dodico.ef.cubature; + +import gnu.trove.TIntArrayList; +import gnu... [truncated message content] |
From: <had...@us...> - 2008-10-31 18:14:52
|
Revision: 4147 http://fudaa.svn.sourceforge.net/fudaa/?rev=4147&view=rev Author: hadouxad Date: 2008-10-31 18:14:47 +0000 (Fri, 31 Oct 2008) Log Message: ----------- - Corrections prepro Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java 2008-10-31 17:41:29 UTC (rev 4146) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java 2008-10-31 18:14:47 UTC (rev 4147) @@ -65,6 +65,8 @@ TrPostProjet projet_; + + private EGGroup updating_; final Map varGroup_; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <had...@us...> - 2008-10-31 17:41:33
|
Revision: 4146 http://fudaa.svn.sourceforge.net/fudaa/?rev=4146&view=rev Author: hadouxad Date: 2008-10-31 17:41:29 +0000 (Fri, 31 Oct 2008) Log Message: ----------- - Corrections prepro Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZebliCalquePersist.java Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZebliCalquePersist.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZebliCalquePersist.java 2008-10-31 17:41:20 UTC (rev 4145) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZebliCalquePersist.java 2008-10-31 17:41:29 UTC (rev 4146) @@ -31,7 +31,7 @@ */ private static String MAINFILE = "descriptorCalque.xml"; private static String DATA = "datas.xml"; - private static String SPECIFIQUEFILE = "specificDatas"; + private static String SPECIFIQUEFILE = "SPECIFICDATAS"; public ZebliCalquePersist(String directoryPath) { directoryPath_=directoryPath; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <had...@us...> - 2008-10-31 17:41:22
|
Revision: 4145 http://fudaa.svn.sourceforge.net/fudaa/?rev=4145&view=rev Author: hadouxad Date: 2008-10-31 17:41:20 +0000 (Fri, 31 Oct 2008) Log Message: ----------- - Corrections prepro Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGraphePersist.java Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGraphePersist.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGraphePersist.java 2008-10-31 17:41:06 UTC (rev 4144) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGraphePersist.java 2008-10-31 17:41:20 UTC (rev 4145) @@ -35,7 +35,7 @@ private static String MAINFILE="descriptorGraphe.xml"; private static String SPECIFIQUEFILE="specificDatas.xml"; - private static String COURBEDIRECTORY="courbes"; + private static String COURBEDIRECTORY="COURBES"; public EGGraphePersist(String directoryPath_) throws IOException { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <had...@us...> - 2008-10-31 17:41:11
|
Revision: 4144 http://fudaa.svn.sourceforge.net/fudaa/?rev=4144&view=rev Author: hadouxad Date: 2008-10-31 17:41:06 +0000 (Fri, 31 Oct 2008) Log Message: ----------- - Corrections prepro Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliScene.java Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliScene.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliScene.java 2008-10-31 17:40:17 UTC (rev 4143) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliScene.java 2008-10-31 17:41:06 UTC (rev 4144) @@ -328,28 +328,23 @@ public void moveWidgetTo(EbliWidget widget, int position){ - // this.removeChild(widget); - // this.addChild(position,widget ); - // getChildren().remove(widget); - // getChildren().add(position, widget); - // widget.bringToFront() + //-- ne marche pas.......................... --// - if (widget.getParentWidget() == null) - return; - List<Widget> children = widget.getParentWidget().getChildren(); - int i = children.indexOf (this); - if (i < 0) - return; - children.remove (i); - children.add (position, this); - revalidate (); - widget.getParentWidget().revalidate (); - +// +// if (widget.getParentWidget() == null) +// return; +// List<Widget> children = getChildren(); +// int i = children.indexOf (widget); +// if (i < 0) +// return; +// children.remove (i); +// children.add (position, widget); +// widget.revalidate (); +// widget.getParentWidget().revalidate (); +// refresh(); - refresh(); - } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <had...@us...> - 2008-10-31 17:40:20
|
Revision: 4143 http://fudaa.svn.sourceforge.net/fudaa/?rev=4143&view=rev Author: hadouxad Date: 2008-10-31 17:40:17 +0000 (Fri, 31 Oct 2008) Log Message: ----------- - Corrections prepro Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/persist/EbliWidgetGroupSerializeXml.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/persist/EbliWidgetSerializeXml.java Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/persist/EbliWidgetGroupSerializeXml.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/persist/EbliWidgetGroupSerializeXml.java 2008-10-31 17:39:40 UTC (rev 4142) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/persist/EbliWidgetGroupSerializeXml.java 2008-10-31 17:40:17 UTC (rev 4143) @@ -31,8 +31,13 @@ * Pour des raisons de conception, ce groupe ne se cr\xE9e pas \xE0 ce niveau, car il est sp\xE9cialis\xE9 (peut etre groupe classique, ou groupe de calque ou autre. * @param nodeGroup */ - public void updateGroup(EbliNode nodeGroup){ - nodeGroup.setTitle(getTitle()); + public void updateGroup(EbliNode nodeGroup, Map parameters){ + nodeGroup.getWidget().setId_(this.Id); + String title=(String) parameters.get("nodeName"); + if(title!=null) + nodeGroup.setTitle((String) parameters.get("nodeName")); + else + nodeGroup.setTitle(""); nodeGroup.getWidget().setPreferredLocation(new Point(getX(), getY())); nodeGroup.getWidget().setPreferredSize(new Dimension(getWidth(), getHeight())); } Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/persist/EbliWidgetSerializeXml.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/persist/EbliWidgetSerializeXml.java 2008-10-31 17:39:40 UTC (rev 4142) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/persist/EbliWidgetSerializeXml.java 2008-10-31 17:40:17 UTC (rev 4143) @@ -46,7 +46,7 @@ */ String Id; - String title; + //String title; /** * L'instance de la classe creator */ @@ -102,7 +102,7 @@ this.bordure = false; } this.Id = widget.getId(); - this.title = node.getTitle(); + // this.title = node.getTitle(); this.type = node.getCreator().getClass().toString(); if (widget.getParentBordure().getColorFond() != null) this.bacckground = node.getWidget().getParentBordure() .getColorFond(); @@ -204,14 +204,14 @@ } - public String getTitle() { - return title; - } +// public String getTitle() { +// return title; +// } +// +// public void setTitle(final String title) { +// this.title = title; +// } - public void setTitle(final String title) { - this.title = title; - } - public String getType() { return type; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <had...@us...> - 2008-10-31 17:39:42
|
Revision: 4142 http://fudaa.svn.sourceforge.net/fudaa/?rev=4142&view=rev Author: hadouxad Date: 2008-10-31 17:39:40 +0000 (Fri, 31 Oct 2008) Log Message: ----------- - Corrections prepro Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/persist/TrPostPersistenceManager.java Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/persist/TrPostPersistenceManager.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/persist/TrPostPersistenceManager.java 2008-10-31 17:36:20 UTC (rev 4141) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/persist/TrPostPersistenceManager.java 2008-10-31 17:39:40 UTC (rev 4142) @@ -1086,6 +1086,7 @@ if (widget instanceof EbliWidgetGroup /*|| widget instanceof EbliWidgetFusionCalques*/) { // -- cas widget group, il faut recuper ses child --// final EbliNode nodeGroupe = (EbliNode) scene.findObject(widget); + listeNomsComposants.add(new EbliWidgetSerializeXml.CoupleNomId(nodeGroupe.getTitle(), nodeGroupe.getWidget().getId())); // ecriture de l objet if (nodeGroupe != null) listeGroupes.add(new EbliWidgetGroupSerializeXml(nodeGroupe, parametres,( widget instanceof EbliWidgetFusionCalques))); @@ -1284,7 +1285,8 @@ nodeGroup = new TrPostActionFusionCalques(scenToUpdate, trprojet_).performGroupFusion(listeToGroup); if (infoGroup != null) { - infoGroup.updateGroup(nodeGroup); + parametres.put("nodeName", getNodeName(listeCouplesNoms, infoGroup.getId())); + infoGroup.updateGroup(nodeGroup,parametres); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-10-31 17:36:22
|
Revision: 4141 http://fudaa.svn.sourceforge.net/fudaa/?rev=4141&view=rev Author: bmarchan Date: 2008-10-31 17:36:20 +0000 (Fri, 31 Oct 2008) Log Message: ----------- Undo/redo sur destruction de calque + propre. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BArbreCalque.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BArbreCalqueModel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dMultiPoint.java Added Paths: ----------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/TreeDeleteCalqueAction.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/CalqueDeleteCalqueAction.java Property Changed: ---------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BArbreCalque.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BArbreCalqueModel.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BArbreCalque.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BArbreCalque.java 2008-10-31 15:52:43 UTC (rev 4140) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BArbreCalque.java 2008-10-31 17:36:20 UTC (rev 4141) @@ -1,6 +1,6 @@ /** * @creation 1998-09-02 - * @modification $Date: 2007-05-04 13:49:43 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... @@ -79,8 +79,7 @@ addMenuItem(EbliResource.EBLI.getString("En dernier"), "DERNIER", EbliResource.EBLI.getIcon("endernier"), true, 0, _arbre); addSeparator(); - addMenuItem(EbliResource.EBLI.getString("D\xE9truire"), "DETRUIRE", CtuluResource.CTULU.getIcon("detruire"), true, 0, - _arbre); + add(new JMenuItem(_arbre.actDelete_)); } } @@ -128,7 +127,7 @@ /** * Un arbre de calques. Composant graphique de representation de la hierarchie des calques sous forme d'arbre. * - * @version $Id: BArbreCalque.java,v 1.35 2007-05-04 13:49:43 deniger Exp $ + * @version $Id$ * @author Guillaume Desnoix */ Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BArbreCalque.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BArbreCalqueModel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BArbreCalqueModel.java 2008-10-31 15:52:43 UTC (rev 4140) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BArbreCalqueModel.java 2008-10-31 17:36:20 UTC (rev 4141) @@ -1,6 +1,6 @@ /** * @creation 15 sept. 2003 - * @modification $Date: 2008-05-13 12:10:38 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... @@ -43,71 +43,21 @@ import org.fudaa.ctulu.gui.CtuluLibSwing; import org.fudaa.ctulu.gui.CtuluPopupMenu; +import org.fudaa.ebli.calque.action.TreeDeleteCalqueAction; +import org.fudaa.ebli.commun.EbliActionInterface; import org.fudaa.ebli.commun.EbliLib; import org.fudaa.ebli.geometrie.GrBoite; import org.fudaa.ebli.ressource.EbliResource; /** * @author deniger - * @version $Id: BArbreCalqueModel.java,v 1.47.4.1 2008-05-13 12:10:38 bmarchan Exp $ + * @version $Id$ */ public class BArbreCalqueModel implements TreeModel, PropertyChangeListener, ActionListener, ContainerListener { private static final Object[] PROP_TO_LISTEN = CtuluLibArray.sort(new String[] { "foreground", "visible", "attenue", "rapide", "ajustement", "paletteCouleur", "iconeChanged", "title", "nodeEdit", "alpha", "model" }); - private static void fillPopupMenu(final CtuluPopupMenu _m, final BCalque _c, final BArbreCalqueModel _arbre) { - if ((_c == null) || (_arbre == null)) { - return; - } - _m.addMenuItem(EbliResource.EBLI.getString("Centrer la vue"), getActCenter(), EbliResource.EBLI - .getToolIcon("zoom-layer"), true, _arbre); - /* - * if (_c instanceof BCalqueAffichage) { final BCalqueAffichage ca = (BCalqueAffichage) _c; - * _m.addCheckBox(EbliResource.EBLI.getString("Att\xE9nu\xE9"), "ATTENUE", true, ca.isAttenue(), _arbre); - * _m.addCheckBox(EbliResource.EBLI.getString("Rapide"), "RAPIDE", true, ca.isRapide(), _arbre); } - */ - if (_c instanceof BCalqueInteraction) { - final BCalqueInteraction ci = (BCalqueInteraction) _c; - _m.addCheckBox(EbliResource.EBLI.getString("Gel\xE9"), "GELE", true, ci.isGele(), _arbre); - } - _m.addCheckBox(EbliResource.EBLI.getString("Visible"), "VISIBLE", true, _c.isVisible(), _arbre); - _m.addSeparator(); - _m.addMenuItem(EbliResource.EBLI.getString("En premier"), getActPrem(), EbliResource.EBLI.getIcon("enpremier"), - true, _arbre); - _m.addMenuItem(CtuluLib.getS("Monter"), getActUp(), CtuluResource.CTULU.getIcon("monter"), true, _arbre); - _m.addMenuItem(CtuluLib.getS("Descendre"), getActDown(), CtuluResource.CTULU.getIcon("descendre"), true, _arbre); - _m.addMenuItem(EbliResource.EBLI.getString("En dernier"), getActLast(), EbliResource.EBLI.getIcon("endernier"), - true, _arbre); - if (_c.isTitleModifiable()) { - _m - .addMenuItem(EbliResource.EBLI.getString("Renommer"), "RENAME", BuResource.BU.getIcon("renommer"), true, - _arbre); - } - if (_c.isDestructible()) { - _m.addSeparator(); - _m.addMenuItem(EbliResource.EBLI.getString("D\xE9truire"), getActDel(), EbliResource.EBLI.getIcon("detruire"), true, - _arbre); - } - final JMenuItem[] specificMenus = _c.getSpecificMenuItems(); - if (specificMenus != null) { - _m.addSeparator(); - final int nb = specificMenus.length; - for (int i = 0; i < nb; i++) { - if (specificMenus[i] == null) { - _m.addSeparator(); - } else { - _m.add(specificMenus[i]); - } - } - } - _m.setSize(_m.getPreferredSize()); - } - - private static String getActDel() { - return "DETRUIRE"; - } - private static String getActLast() { return "DERNIER"; } @@ -131,6 +81,7 @@ BCalque calque_; List listeners_; + EbliActionInterface actDelete_=new TreeDeleteCalqueAction(this); final boolean mustListen_; TreeSelectionModel selection_; @@ -250,8 +201,6 @@ actDown(c); } else if (action.equals(getActLast())) { actLast(c); - } else if (action.equals(getActDel())) { - actionDelete(c); } else { int i = action.indexOf('_'); if (i >= 0) { @@ -323,12 +272,8 @@ } } - private void actionDelete(final BCalque[] _c) { - final TreePath[] parent = getSelectionParent(); - for (int i = 0; i < _c.length; i++) { - _c[i].detruire(); - } - selection_.setSelectionPaths(parent); + public void setActionDelete(EbliActionInterface _actionDelete) { + actDelete_=_actionDelete; } private void actionCenter(final BCalque[] _c) { @@ -445,8 +390,7 @@ _m.addMenuItem(EbliResource.EBLI.getString("En dernier"), getActLast(), EbliResource.EBLI.getIcon("endernier"), true, 0, this); _m.addSeparator(); - _m.addMenuItem(EbliResource.EBLI.getString("D\xE9truire"), getActDel(), EbliResource.EBLI.getIcon("detruire"), true, - 0, this); + _m.add(new JMenuItem(actDelete_)); } private String getActNormal() { @@ -476,18 +420,64 @@ _m.addMenuItem(EbliResource.EBLI.getString("En dernier"), getActLast(), EbliResource.EBLI.getIcon("endernier"), true, this); _m.addSeparator(); - _m.addMenuItem(EbliResource.EBLI.getString("D\xE9truire"), getActDel(), EbliResource.EBLI.getIcon("detruire"), true, - this); + _m.add(new JMenuItem(actDelete_)); } public void fillPopupMenu(final CtuluPopupMenu _m) { if (selection_.getSelectionCount() > 1) { fillMenu(_m); } else if (selection_.getSelectionCount() == 1) { - fillPopupMenu(_m, getSelectedCalque(), this); + fillPopupMenu(_m, getSelectedCalque()); } } + private void fillPopupMenu(final CtuluPopupMenu _m, final BCalque _c) { + if ((_c == null) ) { + return; + } + _m.addMenuItem(EbliResource.EBLI.getString("Centrer la vue"), getActCenter(), EbliResource.EBLI + .getToolIcon("zoom-layer"), true, this); + /* + * if (_c instanceof BCalqueAffichage) { final BCalqueAffichage ca = (BCalqueAffichage) _c; + * _m.addCheckBox(EbliResource.EBLI.getString("Att\xE9nu\xE9"), "ATTENUE", true, ca.isAttenue(), _arbre); + * _m.addCheckBox(EbliResource.EBLI.getString("Rapide"), "RAPIDE", true, ca.isRapide(), _arbre); } + */ + if (_c instanceof BCalqueInteraction) { + final BCalqueInteraction ci = (BCalqueInteraction) _c; + _m.addCheckBox(EbliResource.EBLI.getString("Gel\xE9"), "GELE", true, ci.isGele(), this); + } + _m.addCheckBox(EbliResource.EBLI.getString("Visible"), "VISIBLE", true, _c.isVisible(), this); + _m.addSeparator(); + _m.addMenuItem(EbliResource.EBLI.getString("En premier"), getActPrem(), EbliResource.EBLI.getIcon("enpremier"), + true, this); + _m.addMenuItem(CtuluLib.getS("Monter"), getActUp(), CtuluResource.CTULU.getIcon("monter"), true, this); + _m.addMenuItem(CtuluLib.getS("Descendre"), getActDown(), CtuluResource.CTULU.getIcon("descendre"), true, this); + _m.addMenuItem(EbliResource.EBLI.getString("En dernier"), getActLast(), EbliResource.EBLI.getIcon("endernier"), + true, this); + if (_c.isTitleModifiable()) { + _m + .addMenuItem(EbliResource.EBLI.getString("Renommer"), "RENAME", BuResource.BU.getIcon("renommer"), true, + this); + } + if (_c.isDestructible()) { + _m.addSeparator(); + _m.add(new JMenuItem(actDelete_)); + } + final JMenuItem[] specificMenus = _c.getSpecificMenuItems(); + if (specificMenus != null) { + _m.addSeparator(); + final int nb = specificMenus.length; + for (int i = 0; i < nb; i++) { + if (specificMenus[i] == null) { + _m.addSeparator(); + } else { + _m.add(specificMenus[i]); + } + } + } + _m.setSize(_m.getPreferredSize()); + } + /** * Renvoie le fils numero <I>_index </I> du calque <I>_parent </I>. */ Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BArbreCalqueModel.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/TreeDeleteCalqueAction.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/TreeDeleteCalqueAction.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/TreeDeleteCalqueAction.java 2008-10-31 17:36:20 UTC (rev 4141) @@ -0,0 +1,55 @@ +/* + * @creation 1 avr. 2005 + * @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.ebli.calque.action; + +import java.awt.event.ActionEvent; + +import javax.swing.Icon; +import javax.swing.tree.TreePath; + +import org.fudaa.ctulu.CtuluCommand; +import org.fudaa.ctulu.CtuluNamedCommand; +import org.fudaa.ebli.calque.BArbreCalqueModel; +import org.fudaa.ebli.calque.BCalque; +import org.fudaa.ebli.calque.BGroupeCalque; +import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; +import org.fudaa.ebli.commun.EbliActionSimple; +import org.fudaa.ebli.ressource.EbliResource; + +/** + * Une action pour d\xE9truire un ou plusieurs calque sur un arbre. + * @author Bertrand Marchand + * @version $Id$ + */ +public class TreeDeleteCalqueAction extends EbliActionSimple { + + protected BArbreCalqueModel treeModel_; + + /** + * Construit l'action. + * @param _treeModel Le modele d'arbre. + */ + public TreeDeleteCalqueAction(BArbreCalqueModel _treeModel) { + super(EbliResource.EBLI.getString("D\xE9truire"), EbliResource.EBLI.getIcon("detruire"), "DETRUIRE"); + treeModel_=_treeModel; + } + + public void actionPerformed(final ActionEvent _e) { + if (treeModel_==null) return; + + final BCalque[] c = treeModel_.getSelection(); + if (c.length == 0) { + return; + } + final TreePath[] parent = treeModel_.getSelectionParent(); + for (int i = 0; i < c.length; i++) { + c[i].detruire(); + } + treeModel_.getTreeSelectionModel().setSelectionPaths(parent); + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/TreeDeleteCalqueAction.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java 2008-10-31 15:52:43 UTC (rev 4140) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java 2008-10-31 17:36:20 UTC (rev 4141) @@ -17,6 +17,7 @@ import org.fudaa.ebli.ressource.EbliResource; import org.fudaa.fudaa.commun.FudaaLib; import org.fudaa.fudaa.commun.impl.FudaaCommonImplementation; +import org.fudaa.fudaa.modeleur.action.CalqueDeleteCalqueAction; import org.fudaa.fudaa.modeleur.action.CalqueNewCalqueAction; import org.fudaa.fudaa.modeleur.layer.MdlLayer1dTrace; import org.fudaa.fudaa.modeleur.layer.MdlLayer2dCloud; @@ -107,6 +108,9 @@ EbliActionInterface actImport = new FSigImageImportAction(this, cqImg_); cqImg_.setActions(new EbliActionInterface[] { actImport }); + + EbliActionInterface actDeleteLayer=new CalqueDeleteCalqueAction(getGisEditor(),this.getArbreCalqueModel()); + this.getArbreCalqueModel().setActionDelete(actDeleteLayer); } /** Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/CalqueDeleteCalqueAction.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/CalqueDeleteCalqueAction.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/CalqueDeleteCalqueAction.java 2008-10-31 17:36:20 UTC (rev 4141) @@ -0,0 +1,139 @@ +/* + * @creation 1 avr. 2005 + * @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.modeleur.action; + +import java.awt.event.ActionEvent; + +import javax.swing.tree.TreePath; + +import org.fudaa.ctulu.CtuluCommand; +import org.fudaa.ctulu.CtuluNamedCommand; +import org.fudaa.ebli.calque.BArbreCalqueModel; +import org.fudaa.ebli.calque.BCalque; +import org.fudaa.ebli.calque.BGroupeCalque; +import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; +import org.fudaa.ebli.calque.action.TreeDeleteCalqueAction; +import org.fudaa.fudaa.modeleur.layer.MdlLayerFactory; +import org.fudaa.fudaa.modeleur.layer.MdlLayerInterface; +import org.fudaa.fudaa.ressource.FudaaResource; +import org.fudaa.fudaa.sig.layer.FSigEditor; + +/** + * Une action pour supprimer un calque, avec gestion du undo/redo. + * @author Bertrand Marchand + * @version $Id$ + */ +public class CalqueDeleteCalqueAction extends TreeDeleteCalqueAction { + + /** Une op\xE9ration de destruction d'un calque */ + private class OperationForLayerDestruction implements CtuluNamedCommand { + private final BCalque parent_; + private final ZCalqueAffichageDonnees la_; + private final int idx_; + + /** + * @param _parent le calque parent + * @param _la le calque ajout\xE9 + * @param _idx Position du calque. + */ + OperationForLayerDestruction(BCalque _parent, ZCalqueAffichageDonnees _la, int _idx) { + parent_ = _parent; + la_ = _la; + idx_=_idx; + } + + public void redo() { + la_.detruire(); + } + + public void undo() { + parent_.add(la_,idx_); + } + + public String getName() { + return FudaaResource.FUDAA.getString("D\xE9truire calque"); + } + } + + FSigEditor editor_; + + /** + * Construit l'action. + * @param _title Label de l'action + * @param _icon L'icone pour l'action. + * @param _cqType Le type de calque (Voir {@link MdlLayerFactory}) + * @param _parent Le calque parent dans lequel sera cr\xE9\xE9 le calque. + * @param _editor L'\xE9diteur. + */ + public CalqueDeleteCalqueAction(FSigEditor _editor, BArbreCalqueModel _mdl) { + super(_mdl); + setDefaultToolTip("Naze de chez naze..."); + editor_=_editor; + } + + public void actionPerformed(final ActionEvent _e) { + if (treeModel_==null) return; + + // On conserve le traitement par d\xE9faut pour tous les calques autres que modeleur. + if (!(treeModel_.getSelectedCalque() instanceof MdlLayerInterface)) { + super.actionPerformed(_e); + return; + } + + if (treeModel_.getSelection().length>1) { + editor_.getUi().error("Destruction non autoris\xE9e","La destruction n'est pas autoris\xE9e sur plusieurs calques.", false); + return; + } + + ZCalqueAffichageDonnees cqSel=(ZCalqueAffichageDonnees)treeModel_.getSelectedCalque(); + BGroupeCalque gc=(BGroupeCalque)cqSel.getParent(); + BCalque[] cqs=gc.getCalques(); + int nbexist=0; + for (BCalque cq: cqs) { + if (cq.getName().indexOf(((MdlLayerInterface)cqSel).getExtName())!=-1) nbexist++; + } + if (nbexist<=1) { + editor_.getUi().error("Destruction non autoris\xE9e","La destruction n'est pas autoris\xE9e.\nIl doit exister au moins 1 calque de ce type.", false); + return; + } + if (cqSel.modeleDonnees().getNombre()!=0) { + if (!editor_.getUi().question("Confirmez la destruction","Le calque contient des g\xE9om\xE9tries.\nVoulez vous poursuivre la destruction ?")) + return; + } + + int ind=0; + while (ind<cqs.length && cqs[ind]!=cqSel) ind++; + CtuluCommand cmd=new OperationForLayerDestruction(gc,cqSel,ind); + cmd.redo(); + cqSel.clearSelection(); + + if (editor_.getMng()!=null) { + editor_.getMng().addCmd(cmd); + } + final BCalque[] c = treeModel_.getSelection(); + if (c.length == 0) { + return; + } + final TreePath[] parent = treeModel_.getSelectionParent(); + for (int i = 0; i < c.length; i++) { + c[i].detruire(); + } + treeModel_.getTreeSelectionModel().setSelectionPaths(parent); + } + +// public void actionPerformed(final ActionEvent _e) { +// ZCalqueAffichageDonnees cq=MdlLayerFactory.getInstance().createLayer(cqType_, editor_); +// cq.setName(BGroupeCalque.findUniqueChildName(parent_, ((MdlLayerInterface)cq).getExtName())); +// CtuluCommand cmd=new OperationForLayerCreation(parent_,cq); +// cmd.redo(); +// +// if (editor_.getMng()!=null) { +// editor_.getMng().addCmd(cmd); +// } +// } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/CalqueDeleteCalqueAction.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java 2008-10-31 15:52:43 UTC (rev 4140) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java 2008-10-31 17:36:20 UTC (rev 4141) @@ -7,27 +7,13 @@ */ package org.fudaa.fudaa.modeleur.layer; -import java.awt.Color; import java.util.ArrayList; import java.util.Arrays; -import org.fudaa.ctulu.CtuluCommand; -import org.fudaa.ctulu.CtuluLibArray; -import org.fudaa.ctulu.CtuluNamedCommand; -import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.BCalquePersistenceInterface; -import org.fudaa.ebli.calque.BGroupeCalque; -import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeEditable; import org.fudaa.ebli.commun.EbliActionInterface; -import org.fudaa.ebli.trace.TraceLigne; -import org.fudaa.ebli.trace.TraceLigneModel; -import org.fudaa.fudaa.modeleur.MdlEditionManager; -import org.fudaa.fudaa.modeleur.MdlResource; -import org.fudaa.fudaa.modeleur.persistence.MdlLayer2dLinePersistence; -import org.fudaa.fudaa.ressource.FudaaResource; import org.fudaa.fudaa.sig.layer.FSigEditor; -import org.fudaa.fudaa.sig.layer.FSigLayerGroup; import org.fudaa.fudaa.sig.layer.FSigLayerLineEditable; /** @@ -37,35 +23,6 @@ */ public abstract class MdlLayer2dLine extends FSigLayerLineEditable implements MdlLayerInterface { - /** Une op\xE9ration de destruction d'un calque */ - private class OperationForLayerDestruction implements CtuluNamedCommand { - private final BCalque parent_; - private final ZCalqueAffichageDonnees la_; - private final int idx_; - - /** - * @param _parent le calque parent - * @param _la le calque ajout\xE9 - * @param _idx Position du calque. - */ - OperationForLayerDestruction(BCalque _parent, ZCalqueAffichageDonnees _la, int _idx) { - parent_ = _parent; - la_ = _la; - idx_=_idx; - } - - public void redo() { - MdlLayer2dLine.super.detruire(); - } - - public void undo() { - parent_.add(la_,idx_); - } - - public String getName() { - return FudaaResource.FUDAA.getString("D\xE9truire calque"); - } - } /** * Constructeur. Utilise un mod\xE8le de donn\xE9es et un editeur. @@ -100,34 +57,4 @@ super.setActions(acts); } - - /** - * Le calque peut \xEAtre d\xE9truit, seulement si plus de g\xE9ometries dedans, et qu'un autre calque du m\xEAme type existe. - */ - public void detruire() { - BGroupeCalque gc=(BGroupeCalque)getParent(); - BCalque[] cqs=gc.getCalques(); - int nbexist=0; - for (BCalque cq: cqs) { - if (cq.getName().indexOf(getExtName())!=-1) nbexist++; - } - if (nbexist<=1) { - ((MdlEditionManager)getEditor()).getUi().error("Destruction non autoris\xE9e","La destruction n'est pas autoris\xE9e.\nIl doit exister au moins 1 calque de ce type.", false); - return; - } - if (this.getModele().getNombre()!=0) { - if (!((MdlEditionManager)getEditor()).getUi().question("Confirmez la destruction","Le calque contient des g\xE9om\xE9tries.\nVoulez vous poursuivre la destruction ?")) - return; - } - - int ind=0; - while (ind<cqs.length && cqs[ind]!=this) ind++; - CtuluCommand cmd=new OperationForLayerDestruction(gc,this,ind); - cmd.redo(); - clearSelection(); - - if (getEditor().getMng()!=null) { - getEditor().getMng().addCmd(cmd); - } - } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dMultiPoint.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dMultiPoint.java 2008-10-31 15:52:43 UTC (rev 4140) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dMultiPoint.java 2008-10-31 17:36:20 UTC (rev 4141) @@ -10,20 +10,10 @@ import java.util.ArrayList; import java.util.Arrays; -import org.fudaa.ctulu.CtuluCommand; -import org.fudaa.ctulu.CtuluNamedCommand; -import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.BCalquePersistenceInterface; -import org.fudaa.ebli.calque.BGroupeCalque; -import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; import org.fudaa.ebli.calque.edition.ZCalqueMultiPointEditable; import org.fudaa.ebli.calque.edition.ZModeleMultiPointEditable; import org.fudaa.ebli.commun.EbliActionInterface; -import org.fudaa.fudaa.modeleur.MdlEditionManager; -import org.fudaa.fudaa.modeleur.MdlResource; -import org.fudaa.fudaa.modeleur.persistence.MdlLayer2dCloudPersistence; -import org.fudaa.fudaa.modeleur.persistence.MdlLayer2dMultiPointPersistence; -import org.fudaa.fudaa.ressource.FudaaResource; import org.fudaa.fudaa.sig.layer.FSigEditor; /** @@ -33,36 +23,6 @@ */ public abstract class MdlLayer2dMultiPoint extends ZCalqueMultiPointEditable implements MdlLayerInterface { - /** Une op\xE9ration de destruction d'un calque */ - private class OperationForLayerDestruction implements CtuluNamedCommand { - private final BCalque parent_; - private final ZCalqueAffichageDonnees la_; - private final int idx_; - - /** - * @param _parent le calque parent - * @param _la le calque ajout\xE9 - * @param _idx Position du calque. - */ - OperationForLayerDestruction(BCalque _parent, ZCalqueAffichageDonnees _la, int _idx) { - parent_ = _parent; - la_ = _la; - idx_=_idx; - } - - public void redo() { - MdlLayer2dMultiPoint.super.detruire(); - } - - public void undo() { - parent_.add(la_,idx_); - } - - public String getName() { - return FudaaResource.FUDAA.getString("D\xE9truire calque"); - } - } - /** * Constructeur. Utilise un mod\xE8le de donn\xE9es et un editeur. * @param _model Modele @@ -97,39 +57,4 @@ super.setActions(acts); } - /** - * Le calque peut \xEAtre d\xE9truit, seulement si plus de g\xE9ometries dedans, et qu'un autre calque du m\xEAme type existe. - */ - public void detruire() { - BGroupeCalque gc=(BGroupeCalque)getParent(); - BCalque[] cqs=gc.getCalques(); - int nbexist=0; - for (BCalque cq: cqs) { - if (cq.getName().indexOf(getExtName())!=-1) nbexist++; - } - if (nbexist<=1) { - ((MdlEditionManager)getEditor()).getUi().error("Destruction non autoris\xE9e","La destruction n'est pas autoris\xE9e.\nIl doit exister au moins 1 calque de ce type.", false); - return; - } - if (this.modeleDonnees().getNombre()!=0) { - if (!((MdlEditionManager)getEditor()).getUi().question("Confirmez la destruction","Le calque contient des g\xE9om\xE9tries.\nVoulez vous poursuivre la destruction ?")) - return; - } - - int ind=0; - while (ind<cqs.length && cqs[ind]!=this) ind++; - CtuluCommand cmd=new OperationForLayerDestruction(gc,this,ind); - cmd.redo(); - clearSelection(); - - if (getEditor().getMng()!=null) { - getEditor().getMng().addCmd(cmd); - } - } - -// /** -// * Retourne le nom par defaut du calque. -// * @return Le nom. -// */ -// public abstract String getExtName(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2008-10-31 15:52:57
|
Revision: 4140 http://fudaa.svn.sourceforge.net/fudaa/?rev=4140&view=rev Author: emmanuel_martin Date: 2008-10-31 15:52:43 +0000 (Fri, 31 Oct 2008) Log Message: ----------- bigfix #81 : "Import d'une image dans le calque Fond de cartes plante." Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-10-31 15:23:54 UTC (rev 4139) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-10-31 15:52:43 UTC (rev 4140) @@ -592,18 +592,23 @@ } } attr_ = newAtt; - fireAttributeValueChanged(-1, null, -1, null); + //TODO: A am\xE9liorer : appeler ces fire que quand il y a eu effectivement un ajout + // ou une suppression d'attribut. + fireAttributeAdded(-1, null); + fireAttributeRemoved(-1, null); if (_cmd != null) { _cmd.addCmd(new CtuluCommand() { public void redo() { attr_ = newAtt; - fireAttributeValueChanged(-1, null, -1, null); + fireAttributeAdded(-1, null); + fireAttributeRemoved(-1, null); } public void undo() { attr_ = old; - fireAttributeValueChanged(-1, null, -1, null); + fireAttributeAdded(-1, null); + fireAttributeRemoved(-1, null); } }); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java 2008-10-31 15:23:54 UTC (rev 4139) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java 2008-10-31 15:52:43 UTC (rev 4140) @@ -119,9 +119,11 @@ } protected void firePropertyChange(Object _source, String _propertyName, Object _oldValue, Object _newValue) { - PropertyChangeEvent event=new PropertyChangeEvent(_source, _propertyName, _oldValue, _newValue); - for (int i=0; i<listeners_.get(_propertyName).size(); i++) - listeners_.get(_propertyName).get(i).propertyChange(event); + if(listeners_.containsKey(_propertyName)){ + PropertyChangeEvent event=new PropertyChangeEvent(_source, _propertyName, _oldValue, _newValue); + for (int i=0; i<listeners_.get(_propertyName).size(); i++) + listeners_.get(_propertyName).get(i).propertyChange(event); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-10-31 15:23:58
|
Revision: 4139 http://fudaa.svn.sourceforge.net/fudaa/?rev=4139&view=rev Author: bmarchan Date: 2008-10-31 15:23:54 +0000 (Fri, 31 Oct 2008) Log Message: ----------- Undo/redo sur cr?\195?\169ation/destruction de calque. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/CalqueNewCalqueAction.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dMultiPoint.java Property Changed: ---------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/CalqueNewCalqueAction.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dMultiPoint.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-10-31 15:21:28 UTC (rev 4138) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-10-31 15:23:54 UTC (rev 4139) @@ -1,6 +1,6 @@ /* * @creation 1 avr. 2005 - * @modification $Date: 2008-03-28 15:01:01 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... @@ -32,17 +32,17 @@ /** * @author Fred Deniger - * @version $Id: ZCalqueLigneBriseeEditable.java,v 1.8.6.7 2008-03-28 15:01:01 bmarchan Exp $ + * @version $Id$ */ public class ZCalqueLigneBriseeEditable extends ZCalqueLigneBrisee implements ZCalqueEditable { - ZEditorInterface editor_; + ZEditorDefault editor_; public ZCalqueLigneBriseeEditable() { super(); } - public ZCalqueLigneBriseeEditable(final ZModeleLigneBriseeEditable _modele, final ZEditorInterface _editor) { + public ZCalqueLigneBriseeEditable(final ZModeleLigneBriseeEditable _modele, final ZEditorDefault _editor) { modele_ = _modele; if(modele_!=null) modele_.addModelListener(this); @@ -221,7 +221,7 @@ return true; } - public final ZEditorInterface getEditor() { + public final ZEditorDefault getEditor() { return editor_; } @@ -363,7 +363,7 @@ return r; } - public final void setEditor(final ZEditorInterface _editor) { + public final void setEditor(final ZEditorDefault _editor) { editor_ = _editor; } } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java 2008-10-31 15:21:28 UTC (rev 4138) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java 2008-10-31 15:23:54 UTC (rev 4139) @@ -1,6 +1,6 @@ /* * @creation 1 avr. 2005 - * @modification $Date: 2008-03-26 16:46:43 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... @@ -33,18 +33,18 @@ /** * Un calque pour les multipoints editables. * @author Bertrand Marchand - * @version $Id: ZCalqueMultiPointEditable.java,v 1.1.2.1 2008-03-26 16:46:43 bmarchan Exp $ + * @version $Id$ */ public class ZCalqueMultiPointEditable extends ZCalqueMultiPoint implements ZCalqueEditable { - ZEditorInterface editor_; + ZEditorDefault editor_; /** * Le seul constructeur, avec le modele \xE9ditable. * @param _modele * @param _editor */ - public ZCalqueMultiPointEditable(final ZModeleMultiPointEditable _modele, final ZEditorInterface _editor) { + public ZCalqueMultiPointEditable(final ZModeleMultiPointEditable _modele, final ZEditorDefault _editor) { super(_modele); editor_ = _editor; } @@ -127,7 +127,7 @@ * Retourne l'\xE9diteur pour les objets selectionn\xE9s. * @return L'editeur. Peut \xEAtre null. */ - public final ZEditorInterface getEditor() { + public final ZEditorDefault getEditor() { return editor_; } @@ -352,7 +352,7 @@ * Definit l'\xE9diteur pour les objets selectionn\xE9s. * @param _editor L'editeur. */ - public final void setEditor(final ZEditorInterface _editor) { + public final void setEditor(final ZEditorDefault _editor) { editor_ = _editor; } } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java 2008-10-31 15:21:28 UTC (rev 4138) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java 2008-10-31 15:23:54 UTC (rev 4139) @@ -1,6 +1,6 @@ /* * @creation 22 avr. 08 - * @modification $Date: 2008-05-13 12:10:30 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail fud...@li... @@ -15,11 +15,12 @@ import org.fudaa.ebli.calque.ZEbliCalquesPanel; import org.fudaa.ebli.calque.ZScene; import org.fudaa.ebli.geometrie.GrBoite; +import org.fudaa.ebli.ressource.EbliResource; /** * Regroupe les traitements d'\xE9dition de la scene. * @author Bertrand Marchand - * @version $Id: ZSceneEditor.java,v 1.1.2.1 2008-05-13 12:10:30 bmarchan Exp $ + * @version $Id$ */ public class ZSceneEditor { protected ZScene scene_; @@ -55,7 +56,8 @@ public void rotateSelectedObjects(double _angRad, double _xreel0, double _yreel0) { ZCalqueEditable[] cqs=scene_.getEditableLayers(); - final CtuluCommandComposite cmp = new CtuluCommandComposite(); + final CtuluCommandComposite cmp = new CtuluCommandComposite( + EbliResource.EBLI.getString("Rotation de s\xE9lection")); for (int i=0; i<cqs.length; i++) { cqs[i].rotateSelectedObjects(_angRad, _xreel0, _yreel0, cmp, ui_); } @@ -66,7 +68,8 @@ public void moveSelectedObjects(final double _dx, final double _dy, final double _dz) { ZCalqueEditable[] cqs=scene_.getEditableLayers(); - final CtuluCommandComposite cmp = new CtuluCommandComposite(); + final CtuluCommandComposite cmp = new CtuluCommandComposite( + EbliResource.EBLI.getString("D\xE9placer s\xE9lection")); for (int i=0; i<cqs.length; i++) { if (_dx != 0 || _dy != 0 || _dz!=0) { cqs[i].moveSelectedObjects(_dx, _dy, _dz, cmp, ui_); @@ -79,7 +82,8 @@ public void removeSelectedObjects(CtuluCommandContainer _cmd) { ZCalqueEditable[] cqs=scene_.getEditableLayers(); - final CtuluCommandComposite cmp = new CtuluCommandComposite(); + final CtuluCommandComposite cmp = new CtuluCommandComposite( + EbliResource.EBLI.getString("Supprimer s\xE9lection")); for (int i=0; i<cqs.length; i++) { cqs[i].removeSelectedObjects(cmp, ui_); } @@ -93,7 +97,8 @@ */ public void copySelectedObjects() { ZCalqueEditable[] cqs=scene_.getEditableLayers(); - final CtuluCommandComposite cmp = new CtuluCommandComposite(); + final CtuluCommandComposite cmp = new CtuluCommandComposite( + EbliResource.EBLI.getString("Dupliquer s\xE9lection")); for (int i=0; i<cqs.length; i++) { cqs[i].copySelectedObjects(cmp, ui_); } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/CalqueNewCalqueAction.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/CalqueNewCalqueAction.java 2008-10-31 15:21:28 UTC (rev 4138) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/CalqueNewCalqueAction.java 2008-10-31 15:23:54 UTC (rev 4139) @@ -1,6 +1,6 @@ /* * @creation 1 avr. 2005 - * @modification $Date: 2008/05/13 12:10:50 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... @@ -11,23 +11,50 @@ import javax.swing.Icon; +import org.fudaa.ctulu.CtuluCommand; +import org.fudaa.ctulu.CtuluNamedCommand; import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.BGroupeCalque; import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; import org.fudaa.ebli.commun.EbliActionSimple; -import org.fudaa.fudaa.modeleur.layer.MdlLayer2dCloud; -import org.fudaa.fudaa.modeleur.layer.MdlLayer2dLevel; -import org.fudaa.fudaa.modeleur.layer.MdlLayer2dProfile; import org.fudaa.fudaa.modeleur.layer.MdlLayerFactory; import org.fudaa.fudaa.modeleur.layer.MdlLayerInterface; +import org.fudaa.fudaa.ressource.FudaaResource; import org.fudaa.fudaa.sig.layer.FSigEditor; /** * Une action pour cr\xE9er un nouveau calque. * @author Bertrand Marchand - * @version $Id: CalqueNewCalqueAction.java,v 1.1.2.1 2008/05/13 12:10:50 bmarchan Exp $ + * @version $Id$ */ public class CalqueNewCalqueAction extends EbliActionSimple { + + /** Une op\xE9ration de construction d'un nouveau calque */ + class OperationForLayerCreation implements CtuluNamedCommand { + private final BCalque parent_; + private final ZCalqueAffichageDonnees la_; + + /** + * @param _parent le calque parent + * @param _la le calque ajout\xE9 + */ + OperationForLayerCreation(BCalque _parent, ZCalqueAffichageDonnees _la) { + parent_ = _parent; + la_ = _la; + } + + public void redo() { + parent_.enDernier(la_); + } + + public void undo() { + parent_.remove(la_); + } + + public String getName() { + return FudaaResource.FUDAA.getString("Nouveau calque"); + } + } FSigEditor editor_; BCalque parent_; @@ -51,6 +78,11 @@ public void actionPerformed(final ActionEvent _e) { ZCalqueAffichageDonnees cq=MdlLayerFactory.getInstance().createLayer(cqType_, editor_); cq.setName(BGroupeCalque.findUniqueChildName(parent_, ((MdlLayerInterface)cq).getExtName())); - parent_.enDernier(cq); + CtuluCommand cmd=new OperationForLayerCreation(parent_,cq); + cmd.redo(); + + if (editor_.getMng()!=null) { + editor_.getMng().addCmd(cmd); + } } } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/CalqueNewCalqueAction.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java 2008-10-31 15:21:28 UTC (rev 4138) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java 2008-10-31 15:23:54 UTC (rev 4139) @@ -1,6 +1,6 @@ /* * @creation 20 janv. 08 - * @modification $Date: 2008/05/13 12:10:44 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail fud...@li... @@ -11,9 +11,13 @@ import java.util.ArrayList; import java.util.Arrays; +import org.fudaa.ctulu.CtuluCommand; +import org.fudaa.ctulu.CtuluLibArray; +import org.fudaa.ctulu.CtuluNamedCommand; import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.BCalquePersistenceInterface; import org.fudaa.ebli.calque.BGroupeCalque; +import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeEditable; import org.fudaa.ebli.commun.EbliActionInterface; import org.fudaa.ebli.trace.TraceLigne; @@ -21,15 +25,47 @@ import org.fudaa.fudaa.modeleur.MdlEditionManager; import org.fudaa.fudaa.modeleur.MdlResource; import org.fudaa.fudaa.modeleur.persistence.MdlLayer2dLinePersistence; +import org.fudaa.fudaa.ressource.FudaaResource; import org.fudaa.fudaa.sig.layer.FSigEditor; +import org.fudaa.fudaa.sig.layer.FSigLayerGroup; import org.fudaa.fudaa.sig.layer.FSigLayerLineEditable; /** * Un calque pour le stockage et la manipulation des donn\xE9es altim\xE9triques. * @author Bertrand Marchand - * @version $Id: MdlLayer2dLine.java,v 1.1.2.1 2008/05/13 12:10:44 bmarchan Exp $ + * @version $Id$ */ public abstract class MdlLayer2dLine extends FSigLayerLineEditable implements MdlLayerInterface { + + /** Une op\xE9ration de destruction d'un calque */ + private class OperationForLayerDestruction implements CtuluNamedCommand { + private final BCalque parent_; + private final ZCalqueAffichageDonnees la_; + private final int idx_; + + /** + * @param _parent le calque parent + * @param _la le calque ajout\xE9 + * @param _idx Position du calque. + */ + OperationForLayerDestruction(BCalque _parent, ZCalqueAffichageDonnees _la, int _idx) { + parent_ = _parent; + la_ = _la; + idx_=_idx; + } + + public void redo() { + MdlLayer2dLine.super.detruire(); + } + + public void undo() { + parent_.add(la_,idx_); + } + + public String getName() { + return FudaaResource.FUDAA.getString("D\xE9truire calque"); + } + } /** * Constructeur. Utilise un mod\xE8le de donn\xE9es et un editeur. @@ -83,14 +119,15 @@ if (!((MdlEditionManager)getEditor()).getUi().question("Confirmez la destruction","Le calque contient des g\xE9om\xE9tries.\nVoulez vous poursuivre la destruction ?")) return; } + + int ind=0; + while (ind<cqs.length && cqs[ind]!=this) ind++; + CtuluCommand cmd=new OperationForLayerDestruction(gc,this,ind); + cmd.redo(); + clearSelection(); - super.detruire(); + if (getEditor().getMng()!=null) { + getEditor().getMng().addCmd(cmd); + } } - - -// /** -// * Retourne le nom par defaut du calque. -// * @return Le nom. -// */ -// public abstract String getExtName(); } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dMultiPoint.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dMultiPoint.java 2008-10-31 15:21:28 UTC (rev 4138) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dMultiPoint.java 2008-10-31 15:23:54 UTC (rev 4139) @@ -1,6 +1,6 @@ /* * @creation 20 janv. 08 - * @modification $Date: 2008/05/13 12:10:45 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail fud...@li... @@ -10,9 +10,12 @@ import java.util.ArrayList; import java.util.Arrays; +import org.fudaa.ctulu.CtuluCommand; +import org.fudaa.ctulu.CtuluNamedCommand; import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.BCalquePersistenceInterface; import org.fudaa.ebli.calque.BGroupeCalque; +import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; import org.fudaa.ebli.calque.edition.ZCalqueMultiPointEditable; import org.fudaa.ebli.calque.edition.ZModeleMultiPointEditable; import org.fudaa.ebli.commun.EbliActionInterface; @@ -20,15 +23,46 @@ import org.fudaa.fudaa.modeleur.MdlResource; import org.fudaa.fudaa.modeleur.persistence.MdlLayer2dCloudPersistence; import org.fudaa.fudaa.modeleur.persistence.MdlLayer2dMultiPointPersistence; +import org.fudaa.fudaa.ressource.FudaaResource; import org.fudaa.fudaa.sig.layer.FSigEditor; /** * Un calque pour le stockage et la manipulation des donn\xE9es altim\xE9triques. * @author Bertrand Marchand - * @version $Id: MdlLayer2dMultiPoint.java,v 1.1.2.1 2008/05/13 12:10:45 bmarchan Exp $ + * @version $Id$ */ public abstract class MdlLayer2dMultiPoint extends ZCalqueMultiPointEditable implements MdlLayerInterface { - + + /** Une op\xE9ration de destruction d'un calque */ + private class OperationForLayerDestruction implements CtuluNamedCommand { + private final BCalque parent_; + private final ZCalqueAffichageDonnees la_; + private final int idx_; + + /** + * @param _parent le calque parent + * @param _la le calque ajout\xE9 + * @param _idx Position du calque. + */ + OperationForLayerDestruction(BCalque _parent, ZCalqueAffichageDonnees _la, int _idx) { + parent_ = _parent; + la_ = _la; + idx_=_idx; + } + + public void redo() { + MdlLayer2dMultiPoint.super.detruire(); + } + + public void undo() { + parent_.add(la_,idx_); + } + + public String getName() { + return FudaaResource.FUDAA.getString("D\xE9truire calque"); + } + } + /** * Constructeur. Utilise un mod\xE8le de donn\xE9es et un editeur. * @param _model Modele @@ -82,7 +116,15 @@ return; } - super.detruire(); + int ind=0; + while (ind<cqs.length && cqs[ind]!=this) ind++; + CtuluCommand cmd=new OperationForLayerDestruction(gc,this,ind); + cmd.redo(); + clearSelection(); + + if (getEditor().getMng()!=null) { + getEditor().getMng().addCmd(cmd); + } } // /** Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dMultiPoint.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-10-31 15:21:39
|
Revision: 4138 http://fudaa.svn.sourceforge.net/fudaa/?rev=4138&view=rev Author: bmarchan Date: 2008-10-31 15:21:28 +0000 (Fri, 31 Oct 2008) Log Message: ----------- Undo/redo ?\195?\169tendu pour gestion d'un nom de commande. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/com/memoire/bu/BuCommonImplementation.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluCommand.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluCommandComposite.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluCommandManager.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/commun/undo/FudaaUndoCmdMngListener.java Added Paths: ----------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/com/memoire/bu/BuActionModifier.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluNamedCommand.java Property Changed: ---------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/com/memoire/bu/BuCommonImplementation.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluCommand.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluCommandComposite.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluCommandManager.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/commun/undo/FudaaUndoCmdMngListener.java Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/com/memoire/bu/BuActionModifier.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/com/memoire/bu/BuActionModifier.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/com/memoire/bu/BuActionModifier.java 2008-10-31 15:21:28 UTC (rev 4138) @@ -0,0 +1,208 @@ +package com.memoire.bu; + +import java.awt.Component; + +import javax.swing.AbstractButton; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.JPopupMenu; +import javax.swing.JRadioButtonMenuItem; +import javax.swing.JToolBar; +import javax.swing.MenuElement; + +/** + * An utility class to modify controls by their command name. + * The command name is a string defined for each control + * using setActionCommand(). + * + * @author bmarchan + * @version $Id$ + */ +public class BuActionModifier{ + +//-------------------------------------------------------------------------- +// setTooltipForAction : Permet de d\xE9finir un tooltip sur les +// menus, ou sur les boutons. +//-------------------------------------------------------------------------- + + public static void setTooltipForAction + (JMenuBar _bar, String _action, String _tp) + { + if(_bar==null) return; + + MenuElement[] c=_bar.getSubElements(); + for(int i=0; i<c.length; i++) + if(c[i] instanceof JMenu) + setTooltipForAction((JMenu)c[i],_action,_tp); + } + + public static void setTooltipForAction + (JMenu _menu, String _action, String _tp) + { + if(_menu==null) return; + + MenuElement[] c=_menu.getSubElements(); + for(int i=0; i<c.length; i++) + { + if(c[i] instanceof JMenu) + setTooltipForAction((JMenu)c[i],_action,_tp); + else + if(c[i] instanceof JPopupMenu) + setTooltipForAction((JPopupMenu)c[i],_action,_tp); + else + if(c[i] instanceof JMenuItem) + setTooltipForAction((JMenuItem)c[i],_action,_tp); + // else System.err.println("??? "+c[i]); + } + } + + public static void setTooltipForAction + (JPopupMenu _menu, String _action, String _tp) + { + if(_menu==null) return; + + MenuElement[] c=_menu.getSubElements(); + for(int i=0; i<c.length; i++) + { + if(c[i] instanceof JMenu) + setTooltipForAction((JMenu)c[i],_action,_tp); + else + if(c[i] instanceof JPopupMenu) + setTooltipForAction((JPopupMenu)c[i],_action,_tp); + else + if(c[i] instanceof JMenuItem) + setTooltipForAction((JMenuItem)c[i],_action,_tp); + } + } + + public static void setTooltipForAction + (JCheckBoxMenuItem _item, String _action, String _tp) + { + if(_item==null) return; + + if(_item.getActionCommand().equals(_action)) + _item.setToolTipText(_tp); + } + + public static void setTooltipForAction + (JRadioButtonMenuItem _item, String _action, String _tp) + { + if(_item==null) return; + + if(_item.getActionCommand().equals(_action)) + _item.setToolTipText(_tp); + } + + // Tool + + public static void setTooltipForAction + (JToolBar _bar, String _action, String _tp) + { + if(_bar==null) return; + + Component[] c=_bar.getComponents(); + for(int i=0; i<c.length; i++) + if(c[i] instanceof AbstractButton) + setTooltipForAction((AbstractButton)c[i],_action,_tp); + } + + public static void setTooltipForAction + (AbstractButton _item, String _action, String _tp) + { + if(_item==null) return; + + if(_item.getActionCommand().equals(_action)) + _item.setToolTipText(_tp); + } + +//-------------------------------------------------------------------------- +// setDynamicTextForAction : Permet de d\xE9finir un texte dynamique sur les +// menus, un tooltip dynamique pour les boutons. Exemple : undo/redo. +//-------------------------------------------------------------------------- + + public static void setDynamicTextForAction + (JMenuBar _bar, String _action, String _tp) + { + if(_bar==null) return; + + MenuElement[] c=_bar.getSubElements(); + for(int i=0; i<c.length; i++) + if(c[i] instanceof JMenu) + setDynamicTextForAction((JMenu)c[i],_action,_tp); + } + + public static void setDynamicTextForAction + (JMenu _menu, String _action, String _tp) + { + if(_menu==null) return; + + MenuElement[] c=_menu.getSubElements(); + for(int i=0; i<c.length; i++) + { + if(c[i] instanceof JMenu) + setDynamicTextForAction((JMenu)c[i],_action,_tp); + else + if(c[i] instanceof JPopupMenu) + setDynamicTextForAction((JPopupMenu)c[i],_action,_tp); + else + if(c[i] instanceof JMenuItem) + setDynamicTextForAction((JMenuItem)c[i],_action,_tp); + // else System.err.println("??? "+c[i]); + } + } + + public static void setDynamicTextForAction + (JPopupMenu _menu, String _action, String _tp) + { + if(_menu==null) return; + + MenuElement[] c=_menu.getSubElements(); + for(int i=0; i<c.length; i++) + { + if(c[i] instanceof JMenu) + setDynamicTextForAction((JMenu)c[i],_action,_tp); + else + if(c[i] instanceof JPopupMenu) + setDynamicTextForAction((JPopupMenu)c[i],_action,_tp); + else + if(c[i] instanceof JMenuItem) + setDynamicTextForAction((JMenuItem)c[i],_action,_tp); + else + if(c[i] instanceof AbstractButton) + setDynamicTextForAction((AbstractButton)c[i],_action,_tp); + } + } + + public static void setDynamicTextForAction + (JMenuItem _item, String _action, String _tp) + { + if(_item==null) return; + + if(_item.getActionCommand().equals(_action)) + _item.setText(_tp); + } + + // Tool + + public static void setDynamicTextForAction + (JToolBar _bar, String _action, String _tp) + { + if(_bar==null) return; + + Component[] c=_bar.getComponents(); + for(int i=0; i<c.length; i++) + if(c[i] instanceof AbstractButton) + setDynamicTextForAction((AbstractButton)c[i],_action,_tp); + } + + public static void setDynamicTextForAction + (AbstractButton _item, String _action, String _tp) + { + if(_item==null) return; + + if(_item.getActionCommand().equals(_action)) + _item.setToolTipText(_tp); + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/com/memoire/bu/BuActionModifier.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/com/memoire/bu/BuCommonImplementation.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/com/memoire/bu/BuCommonImplementation.java 2008-10-31 12:33:37 UTC (rev 4137) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/com/memoire/bu/BuCommonImplementation.java 2008-10-31 15:21:28 UTC (rev 4138) @@ -1,5 +1,5 @@ /** - * @modification $Date: 2007-06-11 13:01:23 $ + * @modification $Date$ * @statut unstable * @file BuCommonImplementation.java * @version 0.43 @@ -511,6 +511,11 @@ // BuActionChecker.setCheckedForAction(getSpecificBar(),_cmd,_checked); } + public void setDynamicTextForAction(String _cmd, String _tp) { + BuActionModifier.setDynamicTextForAction(getMainMenuBar(), _cmd, _tp); + BuActionModifier.setDynamicTextForAction(getMainToolBar(), _cmd, _tp); + } + public void removeDummySeparators() { BuMenuBar mb = getMainMenuBar(); BuToolBar mt = getMainToolBar(); Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/com/memoire/bu/BuCommonImplementation.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluCommand.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluCommand.java 2008-10-31 12:33:37 UTC (rev 4137) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluCommand.java 2008-10-31 15:21:28 UTC (rev 4138) @@ -1,14 +1,18 @@ /** * @creation 20 oct. 2003 - * @modification $Date: 2004-08-10 18:20:10 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail fud...@li... */ package org.fudaa.ctulu; /** + * Une interface d\xE9finissant une commande utilisateur qui peut \xEAtre defaite ou refaite. + * Une commande peut contenir une ou plusieurs op\xE9rations \xE9l\xE9mentaires, chacune d'elles stock\xE9e + * sous forme de commande (voir {@link CtuluCommandComposite}) + * * @author deniger - * @version $Id: CtuluCommand.java,v 1.1 2004-08-10 18:20:10 deniger Exp $ + * @version $Id$ */ public interface CtuluCommand { /** Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluCommand.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluCommandComposite.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluCommandComposite.java 2008-10-31 12:33:37 UTC (rev 4137) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluCommandComposite.java 2008-10-31 15:21:28 UTC (rev 4138) @@ -1,6 +1,6 @@ /** * @creation 21 oct. 2003 - * @modification $Date: 2007-01-17 10:45:24 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail fud...@li... @@ -14,14 +14,20 @@ * L'action undo se fait dans l'ordre derniere commande -> premiere commande * * @author deniger - * @version $Id: CtuluCommandComposite.java,v 1.8 2007-01-17 10:45:24 deniger Exp $ + * @version $Id$ */ -public class CtuluCommandComposite implements CtuluCommand,CtuluCommandContainer { +public class CtuluCommandComposite implements CtuluNamedCommand,CtuluCommandContainer { List command_; + final String name_; public CtuluCommandComposite() { + this(null); + } + + public CtuluCommandComposite(String _name) { super(); + name_=_name; } /** @@ -56,8 +62,9 @@ final int n = getNbCmd(); if (n == 0) { return null; - } else if (n == 1) { - return (CtuluCommand) command_.get(0); +// B.M. 31/12/2008 - Suppression de de cette simplification, sinon perte du nom de commande. +// } else if (n == 1) { +// return (CtuluCommand) command_.get(0); } else { return this; } @@ -119,4 +126,11 @@ } actionToDoAfterUndoOrRedo(); } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.CtuluNamedCommand#getName() + */ + public String getName() { + return name_; + } } \ No newline at end of file Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluCommandComposite.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluCommandManager.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluCommandManager.java 2008-10-31 12:33:37 UTC (rev 4137) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluCommandManager.java 2008-10-31 15:21:28 UTC (rev 4138) @@ -1,6 +1,6 @@ /* * @creation 21 oct. 2003 - * @modification $Date: 2007-01-17 10:45:25 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail fud...@li... @@ -20,7 +20,7 @@ * Des qu'une action est ajout\xE9e ou une action redo/undo est effectu\xE9e, un evenement est envoy\xE9 au CtuluCmdMngListener. * * @author Fred Deniger - * @version $Id: CtuluCommandManager.java,v 1.9 2007-01-17 10:45:25 deniger Exp $ + * @version $Id$ */ public class CtuluCommandManager implements CtuluCommandContainer { @@ -45,18 +45,19 @@ } private void update() { - boolean change = false; +// boolean change = false; boolean newValue = (cmdPersistant_ != null) || (((cmd_ != null) && (cmd_.size() > 0) && (indexLastUndoCmd_ > 0))); if (newValue != canUndo_) { canUndo_ = newValue; - change = true; +// change = true; } newValue = cmdPersistant_ == null && ((cmd_ != null) && (cmd_.size() > 0) && (indexLastUndoCmd_ != cmd_.size())); if (newValue != canRedo_) { canRedo_ = newValue; - change = true; +// change = true; } - if (change && (listener_ != null)) { + // B.M. : Appel\xE9 a chaque mise a jour de commande, car la commande poss\xE8de un nom qui doit \xEAtre visualis\xE9 dans l'ihm. + if (/*change && */(listener_ != null)) { listener_.undoredoStateChange(this); } } @@ -190,6 +191,35 @@ update(); } } + + /** + * Retourne le nom de la commande a d\xE9faire. Affich\xE9 dans le texte de la commande "undo". + * @return Le nom de la commande. Null si pas de nom. + */ + public String getUndoName() { + if (!canUndo()) return null; + int ind=indexLastUndoCmd_-1; + if (ind<0) return null; + CtuluCommand cmd=(CtuluCommand)cmd_.get(ind); + if (cmd instanceof CtuluNamedCommand) + return ((CtuluNamedCommand)cmd).getName(); + else + return null; + } + + /** + * Retourne le nom de la commande a refaire. Affich\xE9 dans le texte de la commande "redo". + * @return Le nom de la commande. Null si pas de nom. + */ + public String getRedoName() { + if (!canRedo()) return null; + int ind=indexLastUndoCmd_; + CtuluCommand cmd=(CtuluCommand)cmd_.get(ind); + if (cmd instanceof CtuluNamedCommand) + return ((CtuluNamedCommand)cmd).getName(); + else + return null; + } /** * Enleve le listener. Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluCommandManager.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluNamedCommand.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluNamedCommand.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluNamedCommand.java 2008-10-31 15:21:28 UTC (rev 4138) @@ -0,0 +1,22 @@ +/** + * @creation 20 oct. 2003 + * @modification $Date$ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.ctulu; +/** + * Une interface d\xE9finissant une commande utilisateur nomm\xE9e qui peut \xEAtre defaite ou refaite. + * C'est une extension destin\xE9e a supplanter \xE0 terme {@link CtuluCommand} + * + * @author Bertrand Marchand + * @version $Id$ + */ +public interface CtuluNamedCommand extends CtuluCommand { + + /** + * Retourne Le nom de la commande, affichable dans la liste des undo/redo. + */ + String getName(); +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluNamedCommand.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/commun/undo/FudaaUndoCmdMngListener.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/commun/undo/FudaaUndoCmdMngListener.java 2008-10-31 12:33:37 UTC (rev 4137) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/commun/undo/FudaaUndoCmdMngListener.java 2008-10-31 15:21:28 UTC (rev 4138) @@ -1,7 +1,7 @@ /* * @file FDicoCmdMngListener.java * @creation 22 oct. 2003 - * @modification $Date: 2008-01-24 10:19:14 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... @@ -16,13 +16,15 @@ import org.fudaa.ctulu.CtuluCmdMngListener; import org.fudaa.ctulu.CtuluCommandManager; import org.fudaa.ctulu.CtuluUndoRedoInterface; +import org.fudaa.fudaa.commun.impl.Fudaa; +import org.fudaa.fudaa.ressource.FudaaResource; /** * Class for undoredo manager with concurrent access. Each internal frame implementing {@link CtuluUndoRedoInterface} * has its own manager, independant from the others. * * @author deniger - * @version $Id: FudaaUndoCmdMngListener.java,v 1.15.8.1 2008-01-24 10:19:14 bmarchan Exp $ + * @version $Id$ */ public class FudaaUndoCmdMngListener implements CtuluCmdMngListener { @@ -94,7 +96,16 @@ * @param _b le nouvel etat */ public void setActive(final CtuluUndoRedoInterface _m,final boolean _b){ + String lbUndo=FudaaResource.FUDAA.getString("D\xE9faire"); + String lbRedo=FudaaResource.FUDAA.getString("Refaire"); + if (_b && (_m != null) && (_m.getCmdMng() != null)) { + String name; + name=_m.getCmdMng().getUndoName(); + lbUndo+=(name==null ? "":" \""+name+"\""); + name=_m.getCmdMng().getRedoName(); + lbRedo+=(name==null ? "":" \""+name+"\""); + impl_.setEnabledForAction("DEFAIRE", _m.getCmdMng().canUndo()); impl_.setEnabledForAction("REFAIRE", _m.getCmdMng().canRedo()); } @@ -102,6 +113,9 @@ impl_.setEnabledForAction("DEFAIRE", false); impl_.setEnabledForAction("REFAIRE", false); } + impl_.setDynamicTextForAction("DEFAIRE", lbUndo); + impl_.setDynamicTextForAction("REFAIRE", lbRedo); + if (_m != null) { _m.setActive(_b); } @@ -116,8 +130,18 @@ if (_source != cmdActif_) { return; } + String lbUndo=FudaaResource.FUDAA.getString("D\xE9faire"); + String lbRedo=FudaaResource.FUDAA.getString("Refaire"); + String name; + name=_source.getUndoName(); + lbUndo+=(name==null ? "":" \""+name+"\""); + name=_source.getRedoName(); + lbRedo+=(name==null ? "":" \""+name+"\""); + impl_.setEnabledForAction("DEFAIRE", _source.canUndo()); impl_.setEnabledForAction("REFAIRE", _source.canRedo()); + impl_.setDynamicTextForAction("DEFAIRE", lbUndo); + impl_.setDynamicTextForAction("REFAIRE", lbRedo); final JInternalFrame[] fs = impl_.getAllInternalFrames(); if (fs != null) { for (int i = fs.length - 1; i >= 0; i--) { Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/commun/undo/FudaaUndoCmdMngListener.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2008-10-31 12:33:41
|
Revision: 4137 http://fudaa.svn.sourceforge.net/fudaa/?rev=4137&view=rev Author: emmanuel_martin Date: 2008-10-31 12:33:37 +0000 (Fri, 31 Oct 2008) Log Message: ----------- bugfix Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/collection/CtuluListObject.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/collection/CtuluListObject.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/collection/CtuluListObject.java 2008-10-31 11:29:58 UTC (rev 4136) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/collection/CtuluListObject.java 2008-10-31 12:33:37 UTC (rev 4137) @@ -472,7 +472,7 @@ cmd.addCmd(new CommandRemove(_i, old)); _c.addCmd(cmd.getSimplify()); } - fireObjectRemoved(_i, list_.get(_i)); + fireObjectRemoved(_i, old); return true; } @@ -522,6 +522,7 @@ for (int i = 0; i < iToRemove[0]; i++) { newArray[i] = list_.get(i); } + // On enl\xE8ve les valeurs \xE0 supprimer et on les place dans oldV[] idx = iToRemove[0]; final int maxI = iToRemove[iToRemove.length - 1]; for (int i = idx; i <= maxI; i++) { @@ -532,6 +533,7 @@ oldV[idxOldV++] = d; } } + // on copie la fin du tableau for (int i = maxI + 1; i < initSize; i++) { newArray[idx++] = list_.get(i); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2008-10-31 11:30:08
|
Revision: 4136 http://fudaa.svn.sourceforge.net/fudaa/?rev=4136&view=rev Author: emmanuel_martin Date: 2008-10-31 11:29:58 +0000 (Fri, 31 Oct 2008) Log Message: ----------- Correction de trois bugs Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluTableCellEditorProxy.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEditVisibility.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleGeometryDefault.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluTableCellEditorProxy.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluTableCellEditorProxy.java 2008-10-31 02:48:27 UTC (rev 4135) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluTableCellEditorProxy.java 2008-10-31 11:29:58 UTC (rev 4136) @@ -144,6 +144,7 @@ public void putEditor(Integer _indexRow, TableCellEditor _editor){ if(editable_&&_indexRow==currentIndex_){ cancelCellEditing(); + editable_=false; } mapEditors_.put(_indexRow, _editor); } @@ -153,6 +154,8 @@ */ public void clear(){ mapEditors_.clear(); + if(editable_) + stopCellEditing(); editable_=false; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEditVisibility.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEditVisibility.java 2008-10-31 02:48:27 UTC (rev 4135) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEditVisibility.java 2008-10-31 11:29:58 UTC (rev 4136) @@ -23,7 +23,6 @@ import javax.swing.AbstractCellEditor; import javax.swing.BorderFactory; -import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.JTable; @@ -51,6 +50,7 @@ import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; import org.fudaa.ebli.calque.ZModelGeometryListener; +import org.fudaa.ebli.calque.ZModeleDonnees; import org.fudaa.ebli.calque.ZModeleGeometry; import org.fudaa.ebli.calque.ZSelectionEvent; import org.fudaa.ebli.calque.ZSelectionListener; @@ -196,8 +196,15 @@ } public void setValueAt(Object value, int rowIndex, int columnIndex) { - if(columnIndex==1){ + boolean selected=table_.getSelectionModel().isSelectedIndex(rowIndex); + if(columnIndex==0){ rows_[rowIndex][columnIndex]=value; + fireTableDataChanged(); + if(selected) + table_.getSelectionModel().addSelectionInterval(rowIndex, rowIndex); + } + else if(columnIndex==1){ + rows_[rowIndex][columnIndex]=value; changeVisibility((Integer) rows_[rowIndex][3], (ZCalqueAffichageDonneesInterface) rows_[rowIndex][2], (Boolean) rows_[rowIndex][1]); // Dans le cas o\xF9 on n'affiche que les g\xE9om\xE9tries invisibles, on enl\xE8ve celle qu'on passe \xE0 visible. if(onlyInvisible_&&((Boolean) rows_[rowIndex][1])==true){ @@ -208,6 +215,8 @@ newRows[i-1]=rows_[i]; rows_=newRows; fireTableDataChanged(); + if(selected) + table_.getSelectionModel().addSelectionInterval(rowIndex, rowIndex); } } } @@ -342,12 +351,16 @@ ((ZModeleGeometry) listenCalques_[i].modeleDonnees()).addModelListener(this); } } - + /** * Rempli le tableau avec toutes les g\xE9o\xE9mtries contenus dans le calque * selectionn\xE9 dans combobox. Si la checkbox indiquant que seules les * g\xE9om\xE9tries invisibles sont affich\xE9s est coch\xE9, cette restriction est prise * en compte ici. + * Le model du tableau est r\xE9instanc\xE9, donc la s\xE9l\xE9ction est + * perdu, ce qui peut entrainer un comportement non voulu. Il est donc + * recommand\xE9 de n'utiliser cette m\xE9thode que pour le premier remplissage du + * tableau. */ protected void fillTableGeometry(){ // Remplissage du tableau @@ -412,8 +425,9 @@ int indexGeom=(Integer)table_.getModel().getValueAt(i, 3); if (selection.contains(indexGeom)&&!table_.getSelectionModel().isSelectedIndex(i)) table_.getSelectionModel().addSelectionInterval(i, i); - else if(!selection.contains(indexGeom)&&table_.getSelectionModel().isSelectedIndex(i)) - table_.getSelectionModel().removeIndexInterval(i, i); + else + if(!selection.contains(indexGeom)&&table_.getSelectionModel().isSelectedIndex(i)) + table_.getSelectionModel().removeSelectionInterval(i, i); } } } @@ -532,9 +546,27 @@ fillTableGeometry(); } - public void attributeValueChangeAction(Object _source, int att, GISAttributeInterface _att, int geom, Object value) { - if(listenVisibility) - fillTableGeometry(); + public void attributeValueChangeAction(Object _source, int att, GISAttributeInterface _att, int _geom, Object _value) { + if(listenVisibility&&(_att==GISAttributeConstants.TITRE||_att==GISAttributeConstants.VISIBILITE)){ + if(_geom>=0){ + // Mise \xE0 jour seulement de la g\xE9om\xE9trie. + boolean found=false; + int i=-1; + while(!found&&++i<table_.getModel().getRowCount()){ + ZModeleDonnees model=((ZCalqueAffichageDonneesInterface) table_.getModel().getValueAt(i, 2)).modeleDonnees(); + Integer indexGeom=(Integer) table_.getModel().getValueAt(i, 3); + found=(model==_source)&&(indexGeom==_geom); + } + if(found) + if(_att==GISAttributeConstants.TITRE) + table_.getModel().setValueAt(_value, i, 0); + else + table_.getModel().setValueAt(_value==GISAttributeConstants.ATT_VAL_TRUE ? true : false, i, 1); + } + else + // Mise \xE0 jour de toutes les g\xE9om\xE9tries. + fillTableGeometry(); + } } public void geometryAction(Object _source, int geom, Geometry _geom, int _action) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleGeometryDefault.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleGeometryDefault.java 2008-10-31 02:48:27 UTC (rev 4135) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleGeometryDefault.java 2008-10-31 11:29:58 UTC (rev 4136) @@ -270,7 +270,7 @@ protected void fireAttributeValueChangeAction(Object _source, int _idxAtt, GISAttributeInterface _att, int _indexGeom, Object _newValue){ for(int i=0;i<listeners_.size();i++) if(listeners_.get(i) instanceof ZModelGeometryListener) - ((ZModelGeometryListener)listeners_.get(i)).attributeValueChangeAction(_source, _idxAtt, _att, _indexGeom, _newValue); + ((ZModelGeometryListener)listeners_.get(i)).attributeValueChangeAction(this, _idxAtt, _att, _indexGeom, _newValue); } public void attributeValueChangeAction(Object _source, int _indexAtt, GISAttributeInterface _att, int _indexGeom, Object _newValue) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2008-10-31 02:48:33
|
Revision: 4135 http://fudaa.svn.sourceforge.net/fudaa/?rev=4135&view=rev Author: deniger Date: 2008-10-31 02:48:27 +0000 (Fri, 31 Oct 2008) Log Message: ----------- Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/gis/GISAttributeBoolean.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataCacheOneTimeDecorator.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataCacheWeakDecorator.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataTimeDecorator.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfLineSingleIntersectFinder.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireActivity.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireGridDataProvider.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireMarqueurBuilder.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireParameters.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireResultBuilder.java branches/Prepro-0.92-SNAPSHOT/dodico/test/org/fudaa/dodico/telemac/TestJSerafin.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/edition/EbliAtomicCoordinatesTableModel.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleGeomVisuPanel.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/ressource/ebli_en.fr_txt branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliHtmlWidget.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliLookFeel.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliSceneController.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidget.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetController.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetTextEditor.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/actions/EbliWidgetActiontextEditor.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/actions/WidgetConfigure.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/behavior/AlignWithResizeProportionalStrategy.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/behavior/EbliAlignWithMoveStrategyProvider.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/behavior/EbliWidgetActionFactory.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/behavior/MoveAction.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/graphe/EbliWidgetControllerGraphe.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/sig/FSigAttibuteTypeManager.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/common/TrPostActionLigneCourants.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/common/tr_en.fr_txt branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrIsoLineAdder.java Added Paths: ----------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/ProportionnalResizeBorder.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/actions/EbliWidgetActionRatio.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/behavior/ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/behavior/EbliWidgetCursorProvider.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrTrajectoireComputeAndDisplayActivity.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrTrajectoireGisDataModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostTrajectoireTaskModel.java Removed Paths: ------------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetCursorProvider.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/actions/EbliWidgetActionResize.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/bahaviorstrategy/ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrComputeLigneCourantTrajectoire.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostDialogLigneCourants.java Modified: branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/gis/GISAttributeBoolean.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/gis/GISAttributeBoolean.java 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/ctulu/src/org/fudaa/ctulu/gis/GISAttributeBoolean.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -22,12 +22,14 @@ super(CtuluValueEditorDefaults.STRING_EDITOR); } + public GISAttributeBoolean(final String _name, boolean _atomic) { + super(CtuluValueEditorDefaults.STRING_EDITOR, _name, _atomic); + } + public GISAttributeModelListener createAtomicModel(final Object[] _initValues, final int _nbValues) { if (_initValues != null) { - if (_initValues.length != _nbValues) { - throw new IllegalArgumentException("bad size value=" + _nbValues + " used=" - + _initValues.length); - } + if (_initValues.length != _nbValues) { throw new IllegalArgumentException("bad size value=" + _nbValues + + " used=" + _initValues.length); } return new GISAttributeModelBooleanArray(_initValues, this); } Modified: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataCacheOneTimeDecorator.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataCacheOneTimeDecorator.java 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataCacheOneTimeDecorator.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -8,6 +8,7 @@ import java.lang.ref.WeakReference; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -30,9 +31,9 @@ Set<CtuluVariable> permanentVariable_; - Map<CtuluVariable, EfData> permCache_; + final Map<CtuluVariable, EfData> permCache_; final int timeCached_; - Map<CtuluVariable, WeakReference<EfData>> transCache_; + final Map<CtuluVariable, WeakReference<EfData>> transCache_; /** * @param _init les donnees initiales @@ -43,8 +44,15 @@ super(); init = _init; timeCached_ = _timeCached; - if (_permVariable != null) permanentVariable_ = new HashSet<CtuluVariable>(Arrays.asList(_permVariable)); - else permanentVariable_ = Collections.emptySet(); + if (_permVariable != null) { + permanentVariable_ = new HashSet<CtuluVariable>(Arrays.asList(_permVariable)); + permCache_ = new HashMap<CtuluVariable, EfData>(permanentVariable_.size()); + } else { + permanentVariable_ = Collections.emptySet(); + permCache_ = Collections.emptyMap(); + } + transCache_ = new HashMap<CtuluVariable, WeakReference<EfData>>(20); + } protected EfData getCachedData(CtuluVariable _o) { @@ -61,10 +69,10 @@ * @param _timeIdx ce pas de temps n'est pas pris en compte */ public EfData getData(CtuluVariable _o, int _timeIdx) throws IOException { - EfData data = getCachedData(_o); - if (data != null) return data; - data = init.getData(_o, timeCached_); - if (data != null) setCachedData(_o, data); + EfData initData = getCachedData(_o); + if (initData != null) return initData; + EfData data = init.getData(_o, timeCached_); + setCachedData(_o, data); return data; } Modified: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataCacheWeakDecorator.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataCacheWeakDecorator.java 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataCacheWeakDecorator.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -107,13 +107,13 @@ Map<CtuluVariable, WeakReference<EfData>> res = (Map<CtuluVariable, WeakReference<EfData>>) timeMap_.get(_timeIdx); if (res == null) { // on reduit la map - if (timeMap_.size() > maxSize_) { - int[] keys = timeMap_.keys(); - Arrays.sort(keys); - timeMap_.remove(keys[0]); - } + // if (timeMap_.size() > maxSize_) { + // int[] keys = timeMap_.keys(); + // Arrays.sort(keys); + // timeMap_.remove(keys[0]); + // } res = new HashMap<CtuluVariable, WeakReference<EfData>>(10); - timeMap_.put(_timeIdx, _data); + timeMap_.put(_timeIdx, res); } res.put(_o, new WeakReference<EfData>(_data)); Modified: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataTimeDecorator.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataTimeDecorator.java 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/decorator/EfGridDataTimeDecorator.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -40,7 +40,7 @@ init_ = _init; tMaxIdx_ = _maxIdx; tMinIdx_ = _minIdx; - coeff_ = (_t - _min) / (_maxIdx - _min); + coeff_ = (_t - _min) / (_max - _min); } /** @@ -99,9 +99,11 @@ res[0] = -idx - 2; res[1] = res[0] + 1; if (CtuluLib.isEquals(time, srcTimeStep[res[0]], 1E-3)) { + // en fait c'est egale a la borne inf, on prend celle-ci res[1] = res[0]; } if (CtuluLib.isEquals(time, srcTimeStep[res[1]], 1E-3)) { + // en fait c'est egale a la borne sup, on prend celle-ci res[0] = res[1]; } } Modified: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfLineSingleIntersectFinder.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfLineSingleIntersectFinder.java 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfLineSingleIntersectFinder.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -17,8 +17,13 @@ public class EfLineSingleIntersectFinder { EfIndexVisitorHashSet _eltSelected = new EfIndexVisitorHashSet(); - EfGridInterface grid_; + final EfGridInterface grid_; + public EfLineSingleIntersectFinder(EfGridInterface _grid) { + super(); + grid_ = _grid; + } + double tolerance_ = 1E-3; public EfLineIntersection findIntersectionFor(double _x, double _y, ProgressionInterface _prog) { Modified: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireActivity.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireActivity.java 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireActivity.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -57,9 +57,9 @@ // List<Coordinate> listePointsARepartir_ = new ArrayList<Coordinate>(); // les GrPoint ne sont utilisee que pour // l'affichage - ProgressionInterface prog_; + // ProgressionInterface prog_; - EfGridDataInterpolator data_; + EfGridDataInterpolator gridDatas_; EfLineIntersectorActivity intersectFinder_; EfLineIntersectionsCorrectionActivity correctionActivity = new EfLineIntersectionsCorrectionActivity(); EfLineIntersectionsCorrectionTester tester_; @@ -80,11 +80,11 @@ */ public EfTrajectoireActivity(final EfGridDataInterpolator _interpolator, final EfLineIntersectionsCorrectionTester _lineIntersectTester, final double[] _timeStep) { - data_ = _interpolator; + gridDatas_ = _interpolator; tester_ = _lineIntersectTester; lineIntersectCorrect_ = _lineIntersectTester; timeStep_ = _timeStep; - intersectFinder_ = new EfLineIntersectorActivity(data_); + intersectFinder_ = new EfLineIntersectorActivity(gridDatas_); if (CtuluLibArray.isEmpty(timeStep_)) throw new IllegalArgumentException( "on ne peut pas calculer un trajectoire sans les pas de temps"); } @@ -98,6 +98,18 @@ } + protected double getMaxDeltaFrom(final EfTrajectoireResultBuilder[] enCours, double _lastTime) { + double res = 0; + for (int i = 0; i < enCours.length; i++) { + if (enCours[i] != null) { + res = Math.max(res, Math.abs(enCours[i].getLastTime() - _lastTime)); + } + + } + return res; + + } + /** * Methode appel\xE9e par l'interface de calcul des lignes de courant. * @@ -125,23 +137,15 @@ return null; } } - prog_ = _prog; if (_data.points_ == null) return Collections.emptyList(); + + EfTrajectoireGridDataProvider provider = createDataProvider(_data); + final List<EfTrajectoireResultBuilder> res = new ArrayList<EfTrajectoireResultBuilder>(_data.points_.size()); - EfTrajectoireGridDataProvider provider = null; - if (_data.isLigneDeCourant) { - provider = new EfTrajectoireGridDataProvider.LigneDeCourant(_data.firstTimeStepIdx_, data_.getData(), _data.vx, - _data.vy); - } else { - if (CtuluLibArray.isEmpty(timeStep_)) throw new IllegalArgumentException( - "on ne peut pas calculer un trajectoire sans les pas de temps"); - - provider = new EfTrajectoireGridDataProvider.Trajectoire(timeStep_, data_.getData()); - } // on initialise les resultats - final EfGridDataInterpolator data = new EfGridDataInterpolator(new EfGridDataCacheOneTimeDecorator(data_.getData(), - _data.firstTimeStepIdx_, _data.vx, _data.vy)); - final EfLineSingleIntersectFinder finder = new EfLineSingleIntersectFinder(); + final EfGridDataInterpolator data = new EfGridDataInterpolator(new EfGridDataCacheOneTimeDecorator(gridDatas_ + .getData(), _data.firstTimeStepIdx_, _data.vx, _data.vy)); + final EfLineSingleIntersectFinder finder = new EfLineSingleIntersectFinder(data.getData().getGrid()); for (final Coordinate coord : _data.points_) { if (stop_) return res; final EfTrajectoireResultBuilder builder = new EfTrajectoireResultBuilder(_data, provider); @@ -151,6 +155,8 @@ } final EfTrajectoireResultBuilder[] enCours = res.toArray(new EfTrajectoireResultBuilder[res.size()]); + double lastTime = _data.firstTimeStep_ + _data.dureeIntegration_; + double absDuree = Math.abs(_data.dureeIntegration_); while (mustGoOn(enCours)) { if (stop_) return res; for (int i = 0; i < enCours.length; i++) { @@ -159,6 +165,11 @@ if (bi != null && !doNext(bi)) { enCours[i] = null; } + double maxDelta = getMaxDeltaFrom(enCours, lastTime); + if (_prog != null) { + _prog.setProgression((int) ((1D - maxDelta / absDuree) * 100)); + } + } } @@ -166,6 +177,20 @@ } + private EfTrajectoireGridDataProvider createDataProvider(final EfTrajectoireParameters _data) { + EfTrajectoireGridDataProvider provider = null; + if (_data.isLigneDeCourant) { + provider = new EfTrajectoireGridDataProvider.LigneDeCourant(_data.firstTimeStepIdx_, gridDatas_.getData(), + _data.vx, _data.vy); + } else { + if (CtuluLibArray.isEmpty(timeStep_)) throw new IllegalArgumentException( + "on ne peut pas calculer un trajectoire sans les pas de temps"); + + provider = new EfTrajectoireGridDataProvider.Trajectoire(timeStep_, gridDatas_.getData()); + } + return provider; + } + /** * @param _enCours * @return true si on doit continuer, false si la trajectoire est arrive au bout. @@ -243,16 +268,17 @@ final double newy = lastCoordinate.y + vy * absDeltaT; EfLineIntersectionsResultsI intersectResult = intersectFinder_.computeFor( - GISGeometryFactory.INSTANCE.createSegment(lastCoordinate.x, lastCoordinate.y, newx, newy), prog_, - data_.getData().isElementVar(parameters.vx)).getDefaultRes(); + GISGeometryFactory.INSTANCE.createSegment(lastCoordinate.x, lastCoordinate.y, newx, newy), null, + gridDatas_.getData().isElementVar(parameters.vx)).getDefaultRes(); if (stop_) return false; if (tester_ != null) { - intersectResult = correctionActivity.correct(intersectResult, tester_, 0, prog_); + intersectResult = correctionActivity.correct(intersectResult, tester_, 0, null); if (stop_) return false; } // on sort du maillage: on arrete if (intersectResult.isSegmentOut(0)) return false; - final EfLineIntersection foundIntersect = intersectResult.getIntersect(1); + final EfLineIntersection foundIntersect = isVitesseNulle ? intersectResult.getIntersect(0) : intersectResult + .getIntersect(1); // on a croise un objet du maillage, on doit recalculer le temps // si on une vitesse null, on n'a pas boug\xE9... if (intersectResult.getNbIntersect() > 2 && !isVitesseNulle) { @@ -262,13 +288,19 @@ } _enCours.addIntersection(foundIntersect, newT); + if (FuLog.isDebug()) { + FuLog.debug("Trajectoire compute on " + newT); + } + // System.err.println("calcul en t=" + newT); + if (parameters.dureeIntegration_ > 0 && newT > maxTimeAutorise) return false; + if (parameters.dureeIntegration_ < 0 && newT < maxTimeAutorise) return false; // on continue si diff\xE9rent de 0 return !CtuluLib.isZero(maxTimeAutorise - newT, 1E-3); } private double getMaxDistance(final Coordinate lastCoordinate, final TIntHashSet elementsAdjacent) { double maxDistance = 0; - final EfGridInterface grid = data_.getData().getGrid(); + final EfGridInterface grid = gridDatas_.getData().getGrid(); final Coordinate c = new Coordinate(); for (final TIntIterator it = elementsAdjacent.iterator(); it.hasNext();) { final int idxElt = it.next(); Modified: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireGridDataProvider.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireGridDataProvider.java 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireGridDataProvider.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -6,6 +6,7 @@ import org.fudaa.ctulu.CtuluVariable; import org.fudaa.dodico.ef.EfGridData; +import org.fudaa.dodico.ef.EfGridInterface; import org.fudaa.dodico.ef.decorator.EfGridDataCacheOneTimeDecorator; import org.fudaa.dodico.ef.decorator.EfGridDataCacheWeakDecorator; import org.fudaa.dodico.ef.decorator.EfGridDataTimeDecorator; @@ -33,11 +34,17 @@ return init_; } + @Override + public EfGridInterface getGrid() { + return init_.getGrid(); + } + } public static class Trajectoire extends EfTrajectoireGridDataProvider { + + final double[] initTimeStep_; final EfGridData init_; - final double[] initTimeStep_; public Trajectoire(double[] _initTimeStep, EfGridData _init) { super(); @@ -51,8 +58,15 @@ return EfGridDataTimeDecorator.getTimeInterpolated(init_, initTimeStep_, _t); } + @Override + public EfGridInterface getGrid() { + return init_.getGrid(); + } + } + public abstract EfGridInterface getGrid(); + public abstract EfGridData getDataFor(double _t); } Modified: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireMarqueurBuilder.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireMarqueurBuilder.java 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireMarqueurBuilder.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -5,7 +5,7 @@ package org.fudaa.dodico.ef.operation; import org.fudaa.ctulu.CtuluLibGeometrie; -import org.fudaa.dodico.ef.EfGridData; +import org.fudaa.dodico.ef.EfGridInterface; import com.vividsolutions.jts.geom.Coordinate; @@ -17,7 +17,8 @@ public static class Geo extends EfTrajectoireMarqueurBuilder { double deltaEnCours_; - Geo(double _maxDelta) { + Geo(EfGridInterface _grid, double _maxDelta) { + super(_grid); maxDelta = _maxDelta; } @@ -44,7 +45,8 @@ public static class Time extends EfTrajectoireMarqueurBuilder { double lastMarqueurTime_; - Time(double _startTime, double _maxDelta) { + Time(EfGridInterface _grid, double _startTime, double _maxDelta) { + super(_grid); maxDelta = _maxDelta; lastMarqueurTime_ = _startTime; } @@ -68,22 +70,23 @@ } public static EfTrajectoireMarqueurBuilder createMarqueurBuilder(EfTrajectoireResultBuilder _item, - EfTrajectoireParameters _data, EfTrajectoireGridDataProvider _gridDataProvider) { + EfTrajectoireParameters _data) { if (_data == null || _data.marqueur_ == null) return null; EfTrajectoireMarqueurBuilder res = null; if (_data.marqueur_.timeStep_) { - res = new Time(_data.firstTimeStep_, _data.marqueur_.deltaMax_); - } else res = new Geo(_data.marqueur_.deltaMax_); + res = new Time(_item.gridDataProvider_.getGrid(), _data.firstTimeStep_, _data.marqueur_.deltaMax_); + } else res = new Geo(_item.gridDataProvider_.getGrid(), _data.marqueur_.deltaMax_); res.dest_ = _item; return res; } private EfTrajectoireResultBuilder dest_; - private final EfLineSingleIntersectFinder finder = new EfLineSingleIntersectFinder(); + private final EfLineSingleIntersectFinder finder; double maxDelta; - private EfTrajectoireMarqueurBuilder() { + private EfTrajectoireMarqueurBuilder(EfGridInterface _grid) { + finder = new EfLineSingleIntersectFinder(_grid); } Modified: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireParameters.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireParameters.java 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireParameters.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -16,7 +16,7 @@ */ public class EfTrajectoireParameters { - EfTrajectoireParametersMarqueur marqueur_; + public EfTrajectoireParametersMarqueur marqueur_; /** * Les points de depart des trajectoires/ligne de courants Modified: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireResultBuilder.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireResultBuilder.java 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfTrajectoireResultBuilder.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -13,6 +13,7 @@ import java.util.Map; import org.fudaa.ctulu.CtuluVariable; +import org.fudaa.ctulu.collection.CDoubleArrayList; import org.fudaa.dodico.ef.interpolation.EfGridDataInterpolator; import com.vividsolutions.jts.geom.Coordinate; @@ -23,101 +24,137 @@ * * @author deniger */ -class EfTrajectoireResultBuilder { +public class EfTrajectoireResultBuilder { - /** - * @return the parameters - */ - public EfTrajectoireParameters getParameters() { - return parameters_; - } + private final List<Coordinate> coords_ = new ArrayList<Coordinate>(50); - /** - * @param _parameters the parameters to set - */ - public void setParameters(EfTrajectoireParameters _parameters) { - parameters_ = _parameters; - } + final EfTrajectoireGridDataProvider gridDataProvider_; - List<Coordinate> coords_ = new ArrayList<Coordinate>(50); + final TIntHashSet lastAdjacentMeshes_ = new TIntHashSet(); // private EfLineIntersection lastIntersect_; private final EfTrajectoireMarqueurBuilder marqueurBuilder_; - private List<Boolean> marqueurs = new ArrayList<Boolean>(50); - private TDoubleArrayList times_ = new TDoubleArrayList(50); - private Map<CtuluVariable, TDoubleArrayList> varValues_; - private EfTrajectoireParameters parameters_; - final EfTrajectoireGridDataProvider gridDataProvider_; + private final List<Boolean> marqueurs = new ArrayList<Boolean>(50); + + private final EfTrajectoireParameters parameters_; + + private CDoubleArrayList times_ = new CDoubleArrayList(50); + private Map<CtuluVariable, CDoubleArrayList> varValues_; + public EfTrajectoireResultBuilder(EfTrajectoireParameters _parameters, EfTrajectoireGridDataProvider _provider) { gridDataProvider_ = _provider; - marqueurBuilder_ = EfTrajectoireMarqueurBuilder.createMarqueurBuilder(this, _parameters, _provider); - varValues_ = new HashMap<CtuluVariable, TDoubleArrayList>(2 + _parameters.varsASuivre_.size()); + marqueurBuilder_ = EfTrajectoireMarqueurBuilder.createMarqueurBuilder(this, _parameters); + varValues_ = new HashMap<CtuluVariable, CDoubleArrayList>(2 + _parameters.varsASuivre_.size()); parameters_ = _parameters; - varValues_.put(_parameters.vx, new TDoubleArrayList(100)); - varValues_.put(_parameters.vy, new TDoubleArrayList(100)); + varValues_.put(_parameters.vx, new CDoubleArrayList(100)); + varValues_.put(_parameters.vy, new CDoubleArrayList(100)); for (CtuluVariable v : _parameters.varsASuivre_) { - varValues_.put(v, new TDoubleArrayList(100)); + varValues_.put(v, new CDoubleArrayList(100)); } } - public double getLastVx() { - TDoubleArrayList list = varValues_.get(parameters_.vx); - return list.getQuick(list.size() - 1); - } + protected void addFirstIntersection(EfLineIntersection _intersect, double _t, EfGridDataInterpolator _data) { + saveIntersection(_intersect, _t, _data); - public double getLastVy() { - TDoubleArrayList list = varValues_.get(parameters_.vy); - return list.getQuick(list.size() - 1); } protected void addIntersection(EfLineIntersection _intersect, double _t) { if (!coords_.isEmpty() && marqueurBuilder_ != null) { marqueurBuilder_.preCoordinateAdded(_intersect, _t); } - addIntersection(_intersect, _t, getDataFor(_t)); + saveIntersection(_intersect, _t, getDataFor(_t)); } - protected void addFirstIntersection(EfLineIntersection _intersect, double _t, EfGridDataInterpolator _data) { - addIntersection(_intersect, _t, _data); - - } - - TIntHashSet lastAdjacentMeshes_ = new TIntHashSet(); - - private void addIntersection(EfLineIntersection _intersect, double _t, EfGridDataInterpolator _data) { + private void saveIntersection(EfLineIntersection _intersect, double _t, EfGridDataInterpolator _data) { + setParent(_intersect, _data); lastAdjacentMeshes_.clear(); _intersect.fillWithAdjacentMeshes(lastAdjacentMeshes_); - EfGridDataInterpolator dataForT = getDataFor(_t); - fillMaps(_intersect, _t, false, dataForT); + // EfGridDataInterpolator dataForT = getDataFor(_t); + fillMaps(_intersect, _t, false, _data); } - private EfGridDataInterpolator getDataFor(double _t) { - return new EfGridDataInterpolator(gridDataProvider_.getDataFor(_t)); + protected void addMarqueurIntersection(EfLineIntersection _intersect, double _t) { + EfGridDataInterpolator dataFor = getDataFor(_t); + setParent(_intersect, dataFor); + fillMaps(_intersect, _t, true, dataFor); } private void fillMaps(EfLineIntersection _intersect, double _t, boolean _marqueur, EfGridDataInterpolator dataForT) { - _intersect.setParent(new EfLineIntersectionParentDefault(dataForT)); + marqueurs.add(Boolean.valueOf(_marqueur || (coords_.isEmpty() && marqueurBuilder_ != null))); coords_.add(new Coordinate(_intersect.getX(), _intersect.getY())); times_.add(_t); // on ajoute un marqueur si demande ou si c'est le premier et si les marqueurs sont actives. - marqueurs.add(Boolean.valueOf(_marqueur || (coords_.isEmpty() && marqueurBuilder_ != null))); - for (Map.Entry<CtuluVariable, TDoubleArrayList> entry : varValues_.entrySet()) { + + for (Map.Entry<CtuluVariable, CDoubleArrayList> entry : varValues_.entrySet()) { entry.getValue().add(_intersect.getValue(entry.getKey(), 0));// on prend le pas de temps 0 car les donnees sont // construites ainsi } } - protected void addMarqueurIntersection(EfLineIntersection _intersect, double _t) { - fillMaps(_intersect, _t, true, getDataFor(_t)); + private void setParent(EfLineIntersection _intersect, EfGridDataInterpolator dataForT) { + _intersect.setParent(new EfLineIntersectionParentDefault(dataForT)); } + /** + * @return the coords + */ + public List<Coordinate> getCoords() { + return coords_; + } + + private EfGridDataInterpolator getDataFor(double _t) { + return new EfGridDataInterpolator(gridDataProvider_.getDataFor(_t)); + } + public Coordinate getLastCoordinate() { return coords_.isEmpty() ? null : coords_.get(coords_.size() - 1); } + public double getLastTime() { + return times_.get(times_.size() - 1); + } + + public double getLastVx() { + TDoubleArrayList list = varValues_.get(parameters_.vx); + return list.getQuick(list.size() - 1); + } + + public double getLastVy() { + TDoubleArrayList list = varValues_.get(parameters_.vy); + return list.getQuick(list.size() - 1); + } + + /** + * @return the marqueurs + */ + public List<Boolean> getMarqueurs() { + return marqueurs; + } + + /** + * @return the parameters + */ + public EfTrajectoireParameters getParameters() { + return parameters_; + } + + /** + * @return the times + */ + public TDoubleArrayList getTimes() { + return times_; + } + + /** + * @return the varValues: contient les donnees pour vx et vy + */ + public Map<CtuluVariable, CDoubleArrayList> getVarValues() { + return varValues_; + } + // /** // * @return the lastIntersect // */ @@ -125,8 +162,4 @@ // return lastIntersect_; // } - public double getLastTime() { - return times_.get(times_.size() - 1); - } - } Modified: branches/Prepro-0.92-SNAPSHOT/dodico/test/org/fudaa/dodico/telemac/TestJSerafin.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/test/org/fudaa/dodico/telemac/TestJSerafin.java 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/dodico/test/org/fudaa/dodico/telemac/TestJSerafin.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -191,7 +191,7 @@ public double getValue(int _numVariable, int _pasTemps, int _ptIdx) throws IOException { if (_pasTemps < initTimeStep) { return r.getValue(_numVariable, _pasTemps, _ptIdx); } - return Math.random() * 1000; + return Math.random() ; } public String getUnite(int _i) { Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/edition/EbliAtomicCoordinatesTableModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/edition/EbliAtomicCoordinatesTableModel.java 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/edition/EbliAtomicCoordinatesTableModel.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -58,9 +58,7 @@ protected void apply(final CtuluCommandComposite _cmp) {} public int getRowCount() { - if (selectedAtomic_ != null) { - return selectedAtomic_.length; - } + if (selectedAtomic_ != null) { return selectedAtomic_.length; } return zone_.getNumGeometries(); } @@ -93,22 +91,16 @@ } public int getRowCount() { - if (selectedAtomic_ != null) { - return selectedAtomic_.length; - } + if (selectedAtomic_ != null) { return selectedAtomic_.length; } return isFerme_ ? g_.size() - 1 : g_.size(); } protected CtuluAnalyze isValid() { - if (modele_ == null) { - return null; - } + if (modele_ == null) { return null; } final CoordinateSequence seq = getNewCoordinateSequence(); if (seq != null) { final CtuluAnalyze ana = new CtuluAnalyze(); - if (!modele_.isCoordinateValid(seq, ana)) { - return ana; - } + if (!modele_.isCoordinateValid(seq, ana)) { return ana; } } return null; } @@ -117,9 +109,7 @@ * @return les nouvelles coordonnees. null si pas de modif */ public CoordinateSequence getNewCoordinateSequence() { - if (rowNewCoordinates_ == null) { - return null; - } + if (rowNewCoordinates_ == null) { return null; } final GISCoordinateSequence newSeq = new GISCoordinateSequence(g_); final TIntObjectIterator it = rowNewCoordinates_.iterator(); for (int j = rowNewCoordinates_.size(); j-- > 0;) { @@ -203,9 +193,7 @@ } public void setValueAt(final Object _value, final int _rowIndex, final int _columnIndex) { - if (_columnIndex == 0) { - return; - } + if (_columnIndex == 0) { return; } final int realIdx = getRealIdx(_rowIndex); if (_columnIndex > 2) { // l'indice de l'attribut atomic @@ -238,33 +226,30 @@ } public boolean isCellEditable(final int _rowIndex, final int _columnIndex) { - if (_columnIndex == 0) { - return false; - } - if (_columnIndex <= 2) { - return zone_.isGeomModifiable(); - } + if (_columnIndex == 0) { return false; } + if (_columnIndex <= 2) { return zone_.isGeomModifiable(); } return true; } private Object getAtomicValue(final int _row, final int _valIdx) { - if (modelesNewValues_ != null && (modelesNewValues_[_valIdx] != null) && modelesNewValues_[_valIdx].contains(_row)) { - return modelesNewValues_[_valIdx].get(_row); - } + if (modelesNewValues_ != null && (modelesNewValues_[_valIdx] != null) && modelesNewValues_[_valIdx].contains(_row)) { return modelesNewValues_[_valIdx] + .get(_row); } return modeles_[_valIdx].getObjectValueAt(_row); } + private Class getAtomicClass(final int _valIdx) { + return modeles_[_valIdx].getAttribute().getDataClass(); + } + private double getX(final int _row) { - if (rowNewCoordinates_ != null && rowNewCoordinates_.contains(_row)) { - return ((Coordinate) rowNewCoordinates_.get(_row)).x; - } + if (rowNewCoordinates_ != null && rowNewCoordinates_.contains(_row)) { return ((Coordinate) rowNewCoordinates_ + .get(_row)).x; } return g_.getX(_row); } private double getY(final int _row) { - if (rowNewCoordinates_ != null && rowNewCoordinates_.contains(_row)) { - return ((Coordinate) rowNewCoordinates_.get(_row)).y; - } + if (rowNewCoordinates_ != null && rowNewCoordinates_.contains(_row)) { return ((Coordinate) rowNewCoordinates_ + .get(_row)).y; } return g_.getY(_row); } @@ -283,12 +268,19 @@ default: } final int idx = _columnIndex - 3; - if (idx >= 0) { - return modeles_[idx].getAttribute().getName(); - } + if (idx >= 0) { return modeles_[idx].getAttribute().getName(); } return CtuluLibString.EMPTY_STRING; } + @Override + public Class<?> getColumnClass(int _columnIndex) { + if (_columnIndex < 3) return String.class; + final int idx = _columnIndex - 3; + return getAtomicClass(_columnIndex - 3); + } + + + public Object getValueAt(final int _rowIndex, final int _columnIndex) { final int realIdx = getRealIdx(_rowIndex); switch (_columnIndex) { @@ -301,9 +293,7 @@ default: } final int idx = _columnIndex - 3; - if (idx >= 0) { - return getAtomicValue(realIdx, idx); - } + if (idx >= 0) { return getAtomicValue(realIdx, idx); } return CtuluLibString.EMPTY_STRING; } Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleGeomVisuPanel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleGeomVisuPanel.java 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleGeomVisuPanel.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -20,13 +20,13 @@ import org.fudaa.ctulu.gis.GISZoneCollection; import org.fudaa.ctulu.gui.CtuluDialogPanel; import org.fudaa.ctulu.gui.CtuluTable; +import org.fudaa.ctulu.gui.CtuluTableColumnHeader; import org.fudaa.ebli.commun.EbliFormatterInterface; /** * @author Fred Deniger - * @version $Id: FSigSingleGeomVisuPanel.java,v 1.2 2005/10/03 10:36:25 deniger - * Exp $ + * @version $Id: FSigSingleGeomVisuPanel.java,v 1.2 2005/10/03 10:36:25 deniger Exp $ */ public class EbliSingleGeomVisuPanel extends CtuluDialogPanel { @@ -35,7 +35,7 @@ final int idx; // TObjectIntHashMap intAttr_; final EbliAtomicCoordinatesTableModel model; - JTable table; + CtuluTable table; idx = _idx; final GISZoneCollection zone = _zone; final Geometry g = zone.getGeometry(idx); @@ -58,15 +58,22 @@ } else { setLayout(new BuBorderLayout()); table = new CtuluTable(); - model = new EbliAtomicCoordinatesTableModel.Line(_xyFormatter, zone, idx, _idxVertex, false, null) { + model = new EbliAtomicCoordinatesTableModel.Line(_xyFormatter, zone, idx, _idxVertex, true, null) { public boolean isCellEditable(final int _rowIndex, final int _columnIndex) { return false; } }; table.setModel(model); + table.setTableHeader(new CtuluTableColumnHeader(table.getColumnModel())); + if (model.getColumnCount() > 4) { + for (int i = model.getColumnCount() - 1; i >= 4; i--) { + table.hideColumn(table.getColumnModel().getColumn(i)); + } + } + + // table.hideColumn(_idxColumn) add(new BuScrollPane(table), BuBorderLayout.CENTER); } } - } Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/ressource/ebli_en.fr_txt =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/ressource/ebli_en.fr_txt 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/ressource/ebli_en.fr_txt 2008-10-31 02:48:27 UTC (rev 4135) @@ -626,3 +626,5 @@ D\xE9bloquer la taille et la position de la frame=Unlock the size and the location of the frame Redimensionnement classique de la taille de la frame=Classical resize of the frame Redimensionner proportionnellement la taille de la frame=Proportional resizing of the frame +Conserver le ratio hauteur/largeur=Preserve width/height ratio +Ne pas conserver le ratio hauteur/largeur=Do not preserve width/height ratio \ No newline at end of file Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliHtmlWidget.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliHtmlWidget.java 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliHtmlWidget.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -4,6 +4,7 @@ */ package org.fudaa.ebli.visuallibrary; +import java.awt.Dimension; import java.awt.Rectangle; import javax.swing.JLabel; @@ -33,11 +34,11 @@ @Override protected Rectangle calculateClientArea() { - Rectangle rec = new Rectangle(); - // the preferred size is here - rec.height = (int) view.getPreferredSpan(View.Y_AXIS); - rec.width = (int) view.getPreferredSpan(View.X_AXIS); - return rec; + Rectangle rec = new Rectangle(); + // the preferred size is here + rec.height = (int) view.getPreferredSpan(View.Y_AXIS); + rec.width = (int) view.getPreferredSpan(View.X_AXIS); + return rec; } /** @@ -46,6 +47,8 @@ @Override protected void paintWidget() { Rectangle clientArea = getClientArea(); + System.err.println(clientArea); + c.setPreferredSize(new Dimension(clientArea.width, clientArea.height)); view.paint(getGraphics(), clientArea); } Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliLookFeel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliLookFeel.java 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliLookFeel.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -17,7 +17,7 @@ private static final Border ROUNDED_BORDER = BorderFactory.createRoundedBorder(0, 0, 0, 0, COLOR_SELECTED, COLOR_HOVERED); - private static final Border EMPTY_BORDER = BorderFactory.createEmptyBorder(); + // private static final Border EMPTY_BORDER = BorderFactory.createEmptyBorder(); private static final int MINI_THICKNESS = 8; private static final Border MINI_BORDER_SELECTED = BorderFactory.createRoundedBorder(MINI_THICKNESS, MINI_THICKNESS, MINI_THICKNESS, MINI_THICKNESS, COLOR_SELECTED, COLOR_SELECTED.darker()); @@ -25,6 +25,9 @@ private static final Border RESIZE_BORDER = BorderFactory.createResizeBorder(MINI_THICKNESS, COLOR_HOVERED, true); private static final Border RESIZE_BORDER_SELECTED = BorderFactory.createCompositeBorder(ROUNDED_BORDER, RESIZE_BORDER); + private static final Border RESIZE_BORDER_PROP = new ProportionnalResizeBorder(MINI_THICKNESS, COLOR_HOVERED, true); + private static final Border RESIZE_BORDER_SELECTED_PROP = BorderFactory.createCompositeBorder(ROUNDED_BORDER, + RESIZE_BORDER_PROP); private static final Border DEFAULT_BORDER = BorderFactory.createEmptyBorder(MINI_THICKNESS); private static final Border NON_RESIZE_BORDER_SELECTED = BorderFactory.createCompositeBorder(ROUNDED_BORDER, DEFAULT_BORDER); @@ -33,7 +36,7 @@ @Override public Border getBorder(final ObjectState _state) { - return getBorder(_state, true); + return getBorder(_state, true, false); } public static int getBorderThickness() { @@ -41,15 +44,15 @@ } public Border getBorderInGroup(final ObjectState _state) { - return getBorder(_state, false); + return getBorder(_state, false, false); // return EMPTY_BORDER; } - public Border getBorder(final ObjectState _state, final boolean resizable) { + public Border getBorder(final ObjectState _state, final boolean resizable, final boolean prop) { if (resizable) { if (_state.isHovered()) { - if (_state.isSelected()) { return RESIZE_BORDER_SELECTED; } - return RESIZE_BORDER; + if (_state.isSelected()) { return prop ? RESIZE_BORDER_SELECTED_PROP : RESIZE_BORDER_SELECTED; } + return prop ? RESIZE_BORDER_PROP : RESIZE_BORDER; } if (_state.isSelected()) { return MINI_BORDER_SELECTED; } Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliSceneController.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliSceneController.java 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliSceneController.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -7,8 +7,8 @@ import javax.swing.JScrollPane; import javax.swing.ListSelectionModel; -import org.fudaa.ebli.visuallibrary.bahaviorstrategy.EbliAlignWithMoveStrategyProvider; -import org.fudaa.ebli.visuallibrary.bahaviorstrategy.EbliWidgetActionFactory; +import org.fudaa.ebli.visuallibrary.behavior.EbliAlignWithMoveStrategyProvider; +import org.fudaa.ebli.visuallibrary.behavior.EbliWidgetActionFactory; import org.fudaa.ebli.visuallibrary.tree.EbliJXTreeTableCellRenderer; import org.jdesktop.swingx.JXTreeTable; import org.jdesktop.swingx.decorator.HighlighterFactory; Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidget.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidget.java 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidget.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -22,6 +22,7 @@ import org.fudaa.ebli.visuallibrary.actions.CommandeUndoRedoGraphicalProperties; import org.fudaa.ebli.visuallibrary.actions.WidgetConfigure; import org.fudaa.ebli.visuallibrary.animation.EbliWidgetAnimatedItem; +import org.fudaa.ebli.visuallibrary.behavior.EbliWidgetCursorProvider; import org.netbeans.api.visual.model.ObjectState; import org.netbeans.api.visual.widget.Widget; @@ -106,11 +107,6 @@ if (controllerDefaut) controller_ = new EbliWidgetController(this); } - @Override - protected Cursor getCursorAt(final Point _localLocation) { - return EbliWidgetCursorProvider.getCursor(this, _localLocation); - } - public void addPropertyChangeListener(final String _key, final PropertyChangeListener _l) { // voir EGObject @@ -176,6 +172,7 @@ changeVisible(!_newValue, false); } }); + getEbliScene().refresh(); return true; } @@ -213,14 +210,6 @@ return null; } - public EbliWidget getIntern() { - return this; - } - - public boolean isAnimatedItemAlive(final String _id) { - return false; - } - public Color getColorContour() { return (Color) propGraphique.get(COLORCONTOUR); } @@ -249,6 +238,11 @@ return controller_; } + @Override + protected Cursor getCursorAt(final Point _localLocation) { + return EbliWidgetCursorProvider.getCursor(this, _localLocation); + } + public EbliScene getEbliScene() { return scene_; } @@ -278,6 +272,20 @@ return id_; } + /** + * Renvoie l'id du group ou l'id NOGROUP si la widget ne fais pas partie d un groupe. + * + * @return + */ + public String getIdOfGroup() { + if (isGrouped()) return ((EbliWidget) this.getParentBordure().getParentWidget()).getId(); + else return EbliWidgetGroup.NOGROUP; + } + + public EbliWidget getIntern() { + return this; + } + // useless public Object getMin(final String _key) { return null; @@ -289,6 +297,15 @@ } /** + * @return le parent direct si de type bordure, sinon this. + */ + public EbliWidget getParentBordure() { + final Widget parent = getParentWidget(); + if (parent instanceof EbliWidgetBordureSingle) return (EbliWidget) parent; + return this; + } + + /** * Retourne l objet correspondant a la clef: retourne l objet graphique correspondant depuis la map d objets * graphiques de la widget. */ @@ -313,6 +330,10 @@ return (Double) propGraphique.get(ROTATION); } + public List<EbliWidget> getSattelite() { + return null; + } + /** * Retourne une interface widgetConfigure qui permet de gerer les interfaces a creer * @@ -340,12 +361,37 @@ } /** + * Methode qui indique si lq widget a des sattelites, ie des widgets qui doivent etre deplacees avec. + * + * @return + */ + public boolean hasSattelite() { + + return false; + } + + public boolean isAnimatedItemAlive(final String _id) { + return false; + } + + /** * @return the isGroup: true si le widget represente un groupe de widget comme un groupe par exemple */ public boolean isGroup() { return isGroup; } + /** + * Methode qui retourne vrai si la widget est group\xE9e. + * + * @return + */ + public boolean isGrouped() { + + if (this.getParentBordure().getParentWidget() instanceof EbliWidgetGroup) return true; + return false; + } + @Override public boolean isHitAt(final Point localLocation) { @@ -378,9 +424,10 @@ if (parent != null) { // System.err.println("parent not null"+ toString()); setBorder(lookFeel.getBorderInGroup(_newState)); - parent.setBorder(lookFeel.getBorder(_newState, parent.getController().canResize_)); + parent.setBorder(lookFeel.getBorder(_newState, parent.getController().canResize_, + parent.getController().isProportional)); } else { - setBorder(lookFeel.getBorder(_newState, getController().canResize_)); + setBorder(lookFeel.getBorder(_newState, getController().canResize_, getController().isProportional)); } } @@ -407,15 +454,6 @@ this.controller_ = controller_; } - /** - * @return le parent direct si de type bordure, sinon this. - */ - public EbliWidget getParentBordure() { - final Widget parent = getParentWidget(); - if (parent instanceof EbliWidgetBordureSingle) return (EbliWidget) parent; - return this; - } - public void setFormeFont(final Font newFont) { propGraphique.put(FONT, newFont); } @@ -427,6 +465,10 @@ this.isGroup = isGroup; } + public void setId_(final String id_) { + this.id_ = id_; + } + /** * Methode directement appelee apres modification des parametres renvoye par le getproperty. Ajoute les anciens * parametres dans la commande undo/redo. @@ -485,6 +527,10 @@ propGraphique.put(ROTATION, rotation); } + public void setSattelite(List<EbliWidget> liste) { + + } + public void setScene(final EbliScene _scene) { this.scene_ = _scene; } @@ -496,49 +542,4 @@ public void setUseBorder(final boolean _useBorder) { useBorder_ = _useBorder; } - - public void setId_(final String id_) { - this.id_ = id_; - } - - /** - * Methode qui retourne vrai si la widget est group\xE9e. - * - * @return - */ - public boolean isGrouped() { - - if (this.getParentBordure().getParentWidget() instanceof EbliWidgetGroup) return true; - return false; - } - - /** - * Renvoie l'id du group ou l'id NOGROUP si la widget ne fais pas partie d un groupe. - * - * @return - */ - public String getIdOfGroup() { - if (isGrouped()) return ((EbliWidget) this.getParentBordure().getParentWidget()).getId(); - else return EbliWidgetGroup.NOGROUP; - } - - - /** - * Methode qui indique si lq widget a des sattelites, ie des widgets qui - * doivent etre deplacees avec. - * - * @return - */ - public boolean hasSattelite() { - - return false; - } - - public List<EbliWidget> getSattelite() { - return null; - } - - public void setSattelite(List<EbliWidget> liste) { - - } } \ No newline at end of file Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetController.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetController.java 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetController.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -24,7 +24,7 @@ import org.fudaa.ebli.visuallibrary.actions.CommandeDuplicate; import org.fudaa.ebli.visuallibrary.actions.EbliWidgetActionBloqueOuDebloqueWidget; import org.fudaa.ebli.visuallibrary.actions.EbliWidgetActionConfigure; -import org.fudaa.ebli.visuallibrary.actions.EbliWidgetActionResize; +import org.fudaa.ebli.visuallibrary.actions.EbliWidgetActionRatio; import org.fudaa.ebli.visuallibrary.actions.EbliWidgetActionSimple; import org.netbeans.api.visual.action.ActionFactory; import org.netbeans.api.visual.action.PopupMenuProvider; @@ -209,7 +209,7 @@ public void constructMenuResizeProportional(final JPopupMenu _popup, final CtuluCommandContainer cmd_) { - final EbliWidgetActionSimple actionBloque = new EbliWidgetActionResize.Proportional(widget_); + final EbliWidgetActionSimple actionBloque = new EbliWidgetActionRatio.Proportional(widget_); boutonProportion = actionBloque.buildMenuItem(EbliComponentFactory.INSTANCE); _popup.add(boutonProportion); } Deleted: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetCursorProvider.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetCursorProvider.java 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetCursorProvider.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -1,50 +0,0 @@ -/** - * Licence GPL - * Copyright Genesis - */ -package org.fudaa.ebli.visuallibrary; - -import java.awt.Cursor; -import java.awt.Point; - -import org.netbeans.api.visual.action.ActionFactory; -import org.netbeans.api.visual.action.ResizeControlPointResolver; -import org.netbeans.api.visual.action.ResizeProvider.ControlPoint; -import org.netbeans.api.visual.widget.Widget; - -/** - * @author deniger - */ -public class EbliWidgetCursorProvider { - - private final static ResizeControlPointResolver controlPointResolver = ActionFactory - .createDefaultResizeControlPointResolver(); - - private static ControlPoint getControlPoint(final Widget _widget, final Point _localLocation) { - return controlPointResolver.resolveControlPoint(_widget, _localLocation); - } - - public static Cursor getCursor(final EbliWidget _widget, final Point _localLocation) { - if (!_widget.isEnabled() || _widget.getController() == null) return Cursor.getDefaultCursor(); - if (_widget.getController().canResize_) { - final ControlPoint controlPoint = getControlPoint(_widget, _localLocation); - if (controlPoint != null) { - int type = Cursor.SE_RESIZE_CURSOR; - if (controlPoint == ControlPoint.TOP_CENTER) type = Cursor.N_RESIZE_CURSOR; - else if (controlPoint == ControlPoint.TOP_LEFT) type = Cursor.NW_RESIZE_CURSOR; - else if (controlPoint == ControlPoint.TOP_RIGHT) type = Cursor.NE_RESIZE_CURSOR; - else if (controlPoint == ControlPoint.CENTER_LEFT) type = Cursor.W_RESIZE_CURSOR; - else if (controlPoint == ControlPoint.CENTER_RIGHT) type = Cursor.E_RESIZE_CURSOR; - else if (controlPoint == ControlPoint.BOTTOM_CENTER) type = Cursor.S_RESIZE_CURSOR; - else if (controlPoint == ControlPoint.BOTTOM_LEFT) type = Cursor.SW_RESIZE_CURSOR; - return Cursor.getPredefinedCursor(type); - } - } - if (_widget.getController().isEditable() && _widget.getClientArea().contains(_localLocation)) { return Cursor - .getPredefinedCursor(Cursor.TEXT_CURSOR); } - if (_widget.getController().canMove_) return Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR); - return Cursor.getDefaultCursor(); - - } - -} Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetTextEditor.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetTextEditor.java 2008-10-30 19:48:39 UTC (rev 4134) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetTextEditor.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -1,21 +1,20 @@ package org.fudaa.ebli.visuallibrary; -import java.awt.Dimension; import java.awt.Rectangle; import java.util.EnumSet; -import javax.swing.JLabel; +import javax.swing.JFrame; import javax.swing.plaf.basic.BasicHTML; import javax.swing.text.View; import org.fudaa.ctulu.CtuluLibString; import org.fudaa.ctulu.gui.CtuluHtmlEditorPanel; +import org.fudaa.ctulu.gui.CtuluLibSwing; import org.netbeans.api.visual.action.ActionFactory; import org.netbeans.api.visual.action.InplaceEditorProvider; import org.netbeans.api.visual.action.WidgetAction; import org.netbeans.api.visual.widget.Widget; -import com.memoire.bu.BuBorderLayout; import com.memoire.bu.BuPanel; public class EbliWidgetTextEditor extends EbliWidget implements InplaceEditorProvider<CtuluHtmlEditorPanel> { @@ -53,6 +52,10 @@ setController(controller); } + public boolean canRotate() { + return false; + } + View view; // JLabel c = new JLabel(); @@ -117,20 +120,20 @@ public CtuluHtmlEditorPanel createEditorComponent( final org.netbeans.api.visual.action.InplaceEditorProvider.EditorController controller, final Widget widget) { // --creation du panel ekitcore - if (conteneur == null) { - conteneur = new BuPanel(new BuBorderLayout()); - - // final Rectangle rec = getClientArea(); - // editorPane_.setSize(rec.width, rec.height); - // editorPane_.setPreferredSize(new Dimension(rec.width, rec.height)); - // conteneur.setPreferredSize(new Dimension(rec.width, rec.height)); - // conteneur.setMaximumSize(new Dimension(rec.width, rec.height)); - // conteneur.setMinimumSize(new Dimension(rec.width, rec.height)); - conteneur.add(editorPane_, BuBorderLayout.CENTER); - conteneur.add(editorPane_.getToolBar(true), BuBorderLayout.NORTH); - conteneur.add(editorPane_.getMenuBar()); - - } + // if (conteneur == null) { + // conteneur = new BuPanel(new BuBorderLayout()); + // + // // final Rectangle rec = getClientArea(); + // // editorPane_.setSize(rec.width, rec.height); + // // editorPane_.setPreferredSize(new Dimension(rec.width, rec.height)); + // // conteneur.setPreferredSize(new Dimension(rec.width, rec.height)); + // // conteneur.setMaximumSize(new Dimension(rec.width, rec.height)); + // // conteneur.setMinimumSize(new Dimension(rec.width, rec.height)); + // conteneur.add(editorPane_, BuBorderLayout.CENTER); + // conteneur.add(editorPane_.getToolBar(true), BuBorderLayout.NORTH); + // conteneur.add(editorPane_.getMenuBar()); + // + // } // -- on masque l affichage du widgetcomponent --// // contenuHTML_.setText(""); @@ -178,6 +181,7 @@ } public void notifyOpened(final EditorController _controller, final Widget _widget, final CtuluHtmlEditorPanel _editor) { + _editor.setFrame((JFrame) CtuluLibSwing.getActiveWindow()); // contenuHTML_.setText(CtuluHtmlEditorPanel.showMinimalHtmlDialog(contenuHTML_.getText(), // getEbliScene().getView(), true)); // editorPane_.setDocumentText(contenuHTML_.getText()); Added: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/ProportionnalResizeBorder.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/ProportionnalResizeBorder.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/ProportionnalResizeBorder.java 2008-10-31 02:48:27 UTC (rev 4135) @@ -0,0 +1,75 @@ +/** + * Licence GPL + * Copyright Genesis + */ +package org.fudaa.ebli.visuallibrary; + +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.Insets; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Stroke; +import java.awt.geom.Rectangle2D; + +import org.netbeans.api.visual.border.Border; +import org.netbeans.modules.visual.util.GeomUtil; + +/** + * @author deniger + */ +public class ProportionnalResizeBorder implements Border { + + private static final BasicStroke STROKE = new BasicStroke(1.0f, BasicStroke.JOIN_BEVEL, BasicStroke.CAP_BUTT, 5.0f, + new float[] { 6.0f, 3.0f }, 0.0f); + + private int thickness; + private Color color; + private boolean outer; + + public ProportionnalResizeBorder(int thickness, Color color, boolean outer) { + this.thickness = thickness; + this.color = color; + this.outer = outer; + } + + public Insets getInsets() { + return new Insets(thickness, thickness, thickness, thickness); + } + + public boolean isOuter() { + return outer; + } + + public void paint(Graphics2D gr, Rectangle bounds) { + gr.setColor(color); + + Stroke stroke = gr.getStroke(); + gr... [truncated message content] |
From: <had...@us...> - 2008-10-30 19:48:49
|
Revision: 4134 http://fudaa.svn.sourceforge.net/fudaa/?rev=4134&view=rev Author: hadouxad Date: 2008-10-30 19:48:39 +0000 (Thu, 30 Oct 2008) Log Message: ----------- maj donn?\195?\169es Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/persist/TrPostPersistenceManager.java Added Paths: ----------- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostMultiSourceActivator2.java Added: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostMultiSourceActivator2.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostMultiSourceActivator2.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostMultiSourceActivator2.java 2008-10-30 19:48:39 UTC (rev 4134) @@ -0,0 +1,255 @@ +package org.fudaa.fudaa.tr.post; + +import java.io.File; + +import org.fudaa.ctulu.CtuluLibGenerator; +import org.fudaa.ctulu.CtuluLibString; +import org.fudaa.ctulu.CtuluUI; +import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ctulu.fileformat.FileFormat; +import org.fudaa.ctulu.gui.CtuluDialogPanel; +import org.fudaa.ctulu.gui.CtuluTaskOperationGUI; +import org.fudaa.dodico.ef.FileFormatGridVersion; +import org.fudaa.dodico.fichiers.FileFormatSoftware; +import org.fudaa.dodico.reflux.io.RefluxRefondeSolutionSequentielResult; +import org.fudaa.dodico.telemac.io.SerafinFileFormat; +import org.fudaa.fudaa.tr.common.TrFileFormatManager; + +import com.memoire.bu.BuLib; + +public class TrPostMultiSourceActivator2 { + + public TrPostProjet projetCourant_; + + public TrPostMultiSourceActivator2(final TrPostProjet _projet) { + super(); + projetCourant_ = _projet; + + } + + /** + * @param _s la source + * @param _impl l'impl parente + */ + protected static void afficheFrame(final TrPostProjet _p, final TrPostCommonImplementation _impl) { + + _impl.setProjet(_p); + + + } + + public static void activeFile(final File _f, final TrPostCommonImplementation _impl) { + TrPostProjet pro = _impl.getCurrentProject(); + if (pro == null) { + pro = new TrPostProjet(_impl); + } + new TrPostMultiSourceActivator(pro).active(_f, _impl); + + } + + /** + * @param _f le fichier a ouvrir + * @param _impl l'impl parent + */ + public void activeSerafin(final File _f, final TrPostCommonImplementation _impl,final String id) { + + final TrPostSource source = activeSerafinAction(_f, _impl, _impl.getMainProgression()); + if (source == null) { return; } + source.setId(id); + if (SerafinFileFormat.is3DGrid(source.getGrid())) { + + TrPostSourceBuilder.affiche3D(source, _impl); + + + + } else { + afficheFrame(projetCourant_, _impl); + } + + + } + + public void activeGrid(final File _f, final FileFormatGridVersion _fmt, final TrPostCommonImplementation _impl,final String id) { + + activeGridAction(_f, _fmt, _impl, _impl.getMainProgression(),id); + if (projetCourant_ != null) { + afficheFrame(projetCourant_, _impl); + } + + } + + + public void active(final File _f, final TrPostCommonImplementation _impl){ + + String uniqueId; + if(_impl.c_!=null) + uniqueId=_impl.c_.deliverSourceId(_f.getName()); + else + uniqueId=CtuluLibGenerator.getInstance().deliverUniqueStringId(); + + active(_f,_impl,uniqueId); + } + + /** + * Ouvre le fichier en fonction de l'extension. + * + * @param _f le fichier correct + * @param _impl l'impl parent + */ + public void active(final File _f, final TrPostCommonImplementation _impl,String IdSourceToActive) { + if (_f == null) { return; } + final TrFileFormatManager mng = TrFileFormatManager.INSTANCE; + final String name = _f.getName(); + if (TrPostSourceBuilder.isReflux(name)) { + activeINP(_f, _impl,IdSourceToActive); + return; + } + if (mng.isRubarTPSFile(name)) { + activeRubar(_f, _impl,IdSourceToActive); + return; + } + // mettre serafin en dernier car le test est tres large .... + if (SerafinFileFormat.getInstance().createFileFilter().accept(_f)) { + activeSerafin(_f, _impl,IdSourceToActive); + return; + } + final FileFormat ft = FileFormat.findFileFormat(TrFileFormatManager.getAllGridFormat(), _f); + if (ft == null) { + final String id = _impl.getLauncher().getCurrentPrefHydId(); + if (FileFormatSoftware.REFLUX_IS.name.equals(id)) { + activeINP(_f, _impl,IdSourceToActive); + } else if (FileFormatSoftware.TELEMAC_IS.name.equals(id)) { + activeSerafin(_f, _impl,IdSourceToActive); + } else if (FileFormatSoftware.RUBAR_IS.name.equals(id)) { + activeRubar(_f, _impl,IdSourceToActive); + } + } else { + activeGrid(_f, (FileFormatGridVersion) ft, _impl,IdSourceToActive); + } + } + + /** + * Ouvir une boite de dialogue pour determiner le fichier inp et le fichier sov. + * + * @param _f le fichier xinp,sov ou inp + * @param _impl l'impl parent + */ + public void activeINP(final File _f, final TrPostCommonImplementation _impl,final String id) { + if (RefluxRefondeSolutionSequentielResult.isRefonde(_f)) { + final File inp = TrPostSourceBuilder.getInpFileForRefonde(_f, _impl); + if (inp != null) { + activeINP(inp, _f, _impl,id); + } + return; + } + final TrPostSourceBuilder.INPChooseFile pn = new TrPostSourceBuilder.INPChooseFile(_f); + if (CtuluDialogPanel.isOkResponse(pn.afficheModale(_impl.getFrame()))) { + activeINP(pn.getInp(), pn.getsov(), _impl,id); + } + } + + /** + * @param _f le fichier tps + * @param _impl l'impl parente + */ + public void activeRubar(final File _f, final TrPostCommonImplementation _impl,final String id) { + + final ProgressionInterface prog = _impl.getMainProgression(); + final TrPostSourceRubar src = activeRubarAction(_f, _impl, prog); + if(src!=null) + src.setId(id); + final TrPostRubarLoader loader = new TrPostRubarLoader(src, _f, true); + loader.active(_impl, prog); + afficheFrame(projetCourant_, _impl); + + + } + + /** + * @param _f le fichier inp + * @param _sov le fichier sov + * @param _impl l'impl parente + */ + public void activeINP(final File _f, final File _sov, final TrPostCommonImplementation _impl,final String id) { + + activeINPAction(_f, _sov, _impl, _impl.getMainProgression(),id); + if (projetCourant_ != null) { + afficheFrame(projetCourant_, _impl); + } + + } + + /** + * @param _f le fichier serafin + * @param _impl l'impl parent + * @param _inter la barre de progress + * @return le source post + */ + public TrPostSource activeSerafinAction(final File _f, final TrPostCommonImplementation _impl, + final ProgressionInterface _inter) { + final TrPostSource r = TrPostSourceBuilder.activeSerafinSourceAction(_f, _impl, _inter, null); + if (r != null) { + + // ajout de la source au postProjet + this.projetCourant_.ajouterSource(r); + } + return r; + } + + /** + * @param _f le fichier serafin + * @param _impl l'impl parent + * @param _inter la barre de progress + * @return le source post + */ + public TrPostSourceRubar activeRubarAction(final File _f, final TrPostCommonImplementation _impl, + final ProgressionInterface _inter) { + final TrPostSourceRubar src = TrPostSourceBuilder.activeRubarSrcAction(_f, _impl, _inter); + if (src == null) { return null; } + + this.projetCourant_.ajouterSource(src); + + return src; + } + + public static void loadData(final CtuluUI _impl, final ProgressionInterface _inter, final TrPostProjet _proj) { + if (_proj != null && _proj.openSrcDataAndIsModified(_impl, _inter)) { + _proj.setProjectModified(); + } + } + + /** + * @param _gridFile le fichier inp ou ximp + * @param _sovFile le fichier contenant les solutions + * @param _impl l'impl parent + * @param _inter la barre de progression + * @return le source + */ + public void activeINPAction(final File _gridFile, final File _sovFile, final CtuluUI _impl, + final ProgressionInterface _inter,String id) { + + final TrPostSourceReflux retour = (TrPostSourceReflux) TrPostSourceBuilder.activeINPSource(_gridFile, _sovFile, + _impl, _inter); + if (retour == null) { return; } + retour.setId(id); + retour.buildDefaultVarUpdateLists(); + + projetCourant_.ajouterSource(retour); + + loadData(_impl, _inter, projetCourant_); + return; + } + + public void activeGridAction(final File _f, final FileFormatGridVersion _ftGrid, + final TrPostCommonImplementation _impl, final ProgressionInterface _inter,String id) { + + final TrPostSource retour = TrPostSourceBuilder.activeGridSource(_f, _ftGrid, _impl, _inter); + if (retour == null) { return; } + retour.setId(id); + this.projetCourant_.ajouterSource(retour); + + loadData(_impl, _inter, projetCourant_); + return; + } + + } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/persist/TrPostPersistenceManager.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/persist/TrPostPersistenceManager.java 2008-10-30 19:48:29 UTC (rev 4133) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/persist/TrPostPersistenceManager.java 2008-10-30 19:48:39 UTC (rev 4134) @@ -43,9 +43,11 @@ import org.fudaa.fudaa.tr.post.TrPostCommonImplementation; import org.fudaa.fudaa.tr.post.TrPostLayoutFille; import org.fudaa.fudaa.tr.post.TrPostMultiSourceActivator; +import org.fudaa.fudaa.tr.post.TrPostMultiSourceActivator2; import org.fudaa.fudaa.tr.post.TrPostProjet; import org.fudaa.fudaa.tr.post.TrPostSource; import org.fudaa.fudaa.tr.post.TrPostSourceAbstract; +import org.fudaa.fudaa.tr.post.TrPostTimeModelSaver; import org.fudaa.fudaa.tr.post.TrPostUserVariableSaver; import org.fudaa.fudaa.tr.post.actions.TrPostActionFusionCalques; import org.netbeans.api.visual.widget.Widget; @@ -526,6 +528,7 @@ final List<TrPostSourcePersist> listeCouplesIdSources = new ArrayList<TrPostSourcePersist>(); final List<TrPostUserVariableSaver> listeVar = new ArrayList<TrPostUserVariableSaver>();// getPersitantVariablesList + final List<TrPostTimeModelSaver> listePdt = new ArrayList<TrPostTimeModelSaver>(); // ( // pathVariables // , @@ -543,6 +546,7 @@ // -- sauveagrde de la variable correspondante --// final TrPostUserVariableSaver var = TrPostUserVariableSaver.saveIn((TrPostSourceAbstract) src, null); listeVar.add(var); + listePdt.add(new TrPostTimeModelSaver(src)); } // -- sauvegarde du fichier contenant les liens path/Sources --// @@ -552,10 +556,13 @@ // -- sauvegarde dans le repertoire variable c un fichier par donnees // persistantes --// int cpt=0; - for (TrPostUserVariableSaver var : listeVar) { + for (int i=0;i<listeVar.size();i++) { + TrPostUserVariableSaver var=listeVar.get(i); + TrPostTimeModelSaver ptd=listePdt.get(i); out = getParser().createObjectOutputStream( new FileWriter(pathVariables + File.separator + "variables_" + listeCouplesIdSources.get(cpt++).IdSource)); out.writeObject(var); + out.writeObject(ptd); out.close(); } @@ -584,7 +591,7 @@ in = getParser().createObjectInputStream(new FileReader(file)); // -- recuperation du multiSourceActivator--// - final TrPostMultiSourceActivator multiProjectActivator = new TrPostMultiSourceActivator(trprojet_); + final TrPostMultiSourceActivator2 multiProjectActivator = new TrPostMultiSourceActivator2(trprojet_); //-- lecture des commentaires --// Object debutFichier=in.readObject(); @@ -675,6 +682,14 @@ final TrPostUserVariableSaver varUser = (TrPostUserVariableSaver) var; varUser.restore(src, new CtuluAnalyze(), ui_.createProgressionInterface(this), ui_); } + + var = in.readObject(); + if (var instanceof TrPostTimeModelSaver) { + final TrPostTimeModelSaver varUser = (TrPostTimeModelSaver) var; + varUser.restore(src, ui_.createProgressionForMainPanel(), true); + } + + } catch (FileNotFoundException e) { e.printStackTrace(); @@ -895,15 +910,17 @@ progression("Chargement du fichier descripteur de sources", 15); file = new File(projet_.getAbsolutePath() + File.separator + setupProject); loadSource(file); - + // -- etape 6; lecture des variables --// + progression("Lecture variables", 20); + loadVariables(pathVariables); // -- etape 3: sauvegarde du fichier de descriptions des layout // --// - progression("Cr\xE9ation du descripteur de layout", 20); + progression("Cr\xE9ation du descripteur de layout", 30); file = new File(projet_.getAbsolutePath() + File.separator + INFOSCENE); final List<String> listeFichiers = loadDescriptorScenes(file); // -- etape 4 chargement des ebliscene unitairement --// - progression("Cr\xE9ation des fichiers layout", 30); + progression("Cr\xE9ation des fichiers layout", 40); // -- creation des params pour les datas --// final HashMap<String, Object> parametres = new HashMap<String, Object>(); parametres.put("path", projet_.getAbsolutePath()); @@ -917,7 +934,7 @@ for (final String fichier : listeFichiers) { file = new File(fichier); - if (listeFichiers.size() != 0) progression("chargement du fichier " + fichier, 30 + 70 / listeFichiers.size()); + if (listeFichiers.size() != 0) progression("chargement du fichier " + fichier, 40 + 60 / listeFichiers.size()); // -- creation de la trpostlayoutFille --// final TrPostLayoutFille postFrame = new TrPostLayoutFille(trprojet_); @@ -928,9 +945,8 @@ loadPersitSceneXml(file, postFrame, parametres, listeCouplesNoms); } - // -- etape 6; lecture des variables --// - progression("Lecture variables", 90); - loadVariables(pathVariables); + + progression("", 100); managerError.showDialog(ui_); @@ -965,6 +981,9 @@ xstream.alias("SOURCE", TrPostSourcePersist.class); xstream.alias("LAYOUTDESCRIPTOR", LayoutDescriptor.class); xstream.alias("README", XmlCommentaire.class); + xstream.alias("TIMEMODEL", TrPostTimeModelSaver.class); + xstream.alias("USERVAR", TrPostUserVariableSaver.class); + // xstream.addImplicitCollection(EbliWidgetSerializeXml.CoupleNomId.class, // "FRAMENAME"); // xstream.alias( "NbElements",Integer.class); @@ -1171,7 +1190,8 @@ final HashMap<String, HashSet<Object>> listeGroupToPerform = new HashMap<String, HashSet<Object>>(); List<EbliWidgetSerializeXml> listeWidgetLinked=new ArrayList<EbliWidgetSerializeXml>(); - + Map<EbliWidgetSerializeXml, Integer> listePositionWidgetLinked=new HashMap<EbliWidgetSerializeXml, Integer> (); + // -- r\xE9cup\xE9ration via xml des eblinode/widgets --// for (int i = 0; i < sceneXml.getNbFrames(); i++) { @@ -1207,6 +1227,7 @@ // -- on ajoute la widget liee a la liste des widget a cree au // final--// listeWidgetLinked.add(widgetXml); + listePositionWidgetLinked.put(widgetXml, new Integer(i)); } } @@ -1214,12 +1235,17 @@ // --On executre les widgets liees --// for (EbliWidgetSerializeXml widgetXml : listeWidgetLinked) { + // generation de la widget dans la scene parametres.put("nodeName", getNodeName(listeCouplesNoms, widgetXml.getId())); final EbliNode node = widgetXml.generateWidgetInScene(parametres, scenToUpdate); // ajout des noeuds a ajouter dans la selection if (widgetXml.isSelected()) listeNodeSelect.add(node); + Integer position=listePositionWidgetLinked.get(widgetXml); + if(position!=null) + scenToUpdate.moveWidgetTo(node.getWidget(), position.intValue()); + // ajout de la creation d'un groupe if (!widgetXml.getIdGroup().equals(EbliWidgetGroup.NOGROUP)) { // il y a un group a prendre en compte d'id This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <had...@us...> - 2008-10-30 19:48:38
|
Revision: 4133 http://fudaa.svn.sourceforge.net/fudaa/?rev=4133&view=rev Author: hadouxad Date: 2008-10-30 19:48:29 +0000 (Thu, 30 Oct 2008) Log Message: ----------- maj donn?\195?\169es Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliScene.java Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliScene.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliScene.java 2008-10-30 19:48:18 UTC (rev 4132) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliScene.java 2008-10-30 19:48:29 UTC (rev 4133) @@ -7,6 +7,7 @@ import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Set; @@ -323,4 +324,33 @@ return null; } + + + public void moveWidgetTo(EbliWidget widget, int position){ + + // this.removeChild(widget); + // this.addChild(position,widget ); + // getChildren().remove(widget); + // getChildren().add(position, widget); + // widget.bringToFront() + + + if (widget.getParentWidget() == null) + return; + List<Widget> children = widget.getParentWidget().getChildren(); + int i = children.indexOf (this); + if (i < 0) + return; + children.remove (i); + children.add (position, this); + revalidate (); + widget.getParentWidget().revalidate (); + + + refresh(); + + + } + + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <had...@us...> - 2008-10-30 19:48:28
|
Revision: 4132 http://fudaa.svn.sourceforge.net/fudaa/?rev=4132&view=rev Author: hadouxad Date: 2008-10-30 19:48:18 +0000 (Thu, 30 Oct 2008) Log Message: ----------- aj donn?\195?\169es Added Paths: ----------- branches/Prepro-0.92-SNAPSHOT/ebli/test/org/fudaa/ebli/all/TestWidgetHtml.java Added: branches/Prepro-0.92-SNAPSHOT/ebli/test/org/fudaa/ebli/all/TestWidgetHtml.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/test/org/fudaa/ebli/all/TestWidgetHtml.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/ebli/test/org/fudaa/ebli/all/TestWidgetHtml.java 2008-10-30 19:48:18 UTC (rev 4132) @@ -0,0 +1,165 @@ +package org.fudaa.ebli.all; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Point; +import java.awt.Rectangle; + + +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; + +import javax.swing.plaf.basic.BasicHTML; +import javax.swing.text.View; + + +import org.netbeans.api.visual.action.ActionFactory; +import org.netbeans.api.visual.border.Border; +import org.netbeans.api.visual.border.BorderFactory; +import org.netbeans.api.visual.graph.GraphScene; +import org.netbeans.api.visual.model.ObjectState; +import org.netbeans.api.visual.widget.LayerWidget; +import org.netbeans.api.visual.widget.Scene; +import org.netbeans.api.visual.widget.Widget; + +public class TestWidgetHtml { + + /** + * Empty border + */ + public static final Border EMPTY_BORDER = BorderFactory.createEmptyBorder(8); + /** + * Resize border + */ + public static final Border RESIZE_BORDER = BorderFactory.createResizeBorder(8, Color.BLACK, true); + + private static class HtmlViewWidget extends Widget { + + View view; + + protected HtmlViewWidget(Scene scene, String html) { + super(scene); + //TODO JLabel must be change to another component ... + view = BasicHTML.createHTMLView(new JLabel(), html); + super.setCheckClipping(true); + getActions().addAction(scene.createWidgetHoverAction()); + getActions().addAction(ActionFactory.createResizeAction()); + getActions().addAction(ActionFactory.createMoveAction()); + + } + + /** + * + */ + @Override + protected Rectangle calculateClientArea() { + Rectangle rec = new Rectangle(); + //the preferred size is here + rec.height = (int) view.getPreferredSpan(View.Y_AXIS); + rec.width = (int) view.getPreferredSpan(View.X_AXIS); + return rec; + } + + /** + * + */ + @Override + protected void paintWidget() { + Rectangle clientArea = getClientArea(); + view.paint(getGraphics(), clientArea); + } + + @Override + public void notifyStateChanged(ObjectState previousState, ObjectState newState) { + setBorder(newState.isHovered() ? RESIZE_BORDER : EMPTY_BORDER); + } + + } + + /** + * @author denf01a + * @creation 12 sept. 2008 + * @version + * + */ + public static final class DefaultScene extends GraphScene.StringGraph { + private int y = 10; + final LayerWidget layer; + + /** + * build the default layer + */ + public DefaultScene() { + layer = new LayerWidget(this); + addChild(layer); + } + + @Override + protected void attachEdgeSourceAnchor(String edge, String oldSourceNode, String sourceNode) { + } + + @Override + protected void attachEdgeTargetAnchor(String edge, String oldTargetNode, String targetNode) { + } + + @Override + protected Widget attachEdgeWidget(String edge) { + return null; + } + + @Override + protected Widget attachNodeWidget(String node) { + Widget res = new HtmlViewWidget(this, node); + res.setPreferredLocation(new Point(10, y)); + y += 100; + layer.addChild(res); + return res; + } + } + + /** + * @param view the view + * @return a panel with the view and a satellite view + */ + private static JPanel buildContentPane(GraphScene.StringGraph view) { + JPanel pn = new JPanel(new BorderLayout()); + pn.add(view.createView()); + pn.add(view.createSatelliteView(), BorderLayout.EAST); + pn.setPreferredSize(new Dimension(600, 400)); + return pn; + } + + /** + * @param pn + */ + private static void showFrameWithContentPane(JPanel pn) { + JFrame test = new JFrame("Genesis"); + test.setContentPane(pn); + test.pack(); + test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + test.setVisible(true); + } + + /** + * @param args + */ + public static void main(String[] args) { + + GraphScene.StringGraph view = new DefaultScene(); + //ici on se defoule, let's go + view + .addNode("<html><body>Bonjour<br>Au revoir<table border=\"1\"><tr><td>One</td><td>Two</td></tr><tr><td>Three</td><td>Four</td>"); + view + .addNode("<html><body><p color=\"blue\">Hi</p><br><b color=\"red\">Red</b><br><u>Underline with long long long long blabla</u>"); + view.addNode("It's not html text but we can paint it and resize "); + + // view.getActions(). + + JPanel pn = buildContentPane(view); + showFrameWithContentPane(pn); + + } +} + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2008-10-30 19:41:50
|
Revision: 4131 http://fudaa.svn.sourceforge.net/fudaa/?rev=4131&view=rev Author: deniger Date: 2008-10-30 19:41:41 +0000 (Thu, 30 Oct 2008) Log Message: ----------- Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetTextEditor.java Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetTextEditor.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetTextEditor.java 2008-10-30 17:45:01 UTC (rev 4130) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetTextEditor.java 2008-10-30 19:41:41 UTC (rev 4131) @@ -1,16 +1,18 @@ package org.fudaa.ebli.visuallibrary; +import java.awt.Dimension; import java.awt.Rectangle; import java.util.EnumSet; import javax.swing.JLabel; +import javax.swing.plaf.basic.BasicHTML; +import javax.swing.text.View; import org.fudaa.ctulu.CtuluLibString; import org.fudaa.ctulu.gui.CtuluHtmlEditorPanel; import org.netbeans.api.visual.action.ActionFactory; import org.netbeans.api.visual.action.InplaceEditorProvider; import org.netbeans.api.visual.action.WidgetAction; -import org.netbeans.api.visual.widget.ComponentWidget; import org.netbeans.api.visual.widget.Widget; import com.memoire.bu.BuBorderLayout; @@ -22,19 +24,23 @@ CtuluHtmlEditorPanel editorPane_ = new CtuluHtmlEditorPanel(); // ComponentWidget widget; BuPanel conteneur = null; + // LabelWidget intern_; - EbliHtmlWidget intern_; + // EbliHtmlWidget intern_; public EbliWidgetTextEditor(final EbliScene scene, final CtuluHtmlEditorPanel content) { super(scene, false); + + super.setCheckClipping(true); editorPane_ = content; + view = BasicHTML.createHTMLView(content, content.getDocumentText()); - intern_ = new EbliHtmlWidget(scene, content.getDocumentText()); + // intern_ = new EbliHtmlWidget(scene, content.getDocumentText()); // intern_ = new ComponentWidget(scene, editorPane_.); // contenuHTML_.setText(content.getDocumentText()); // -- ajout en interne du label d affichage --// - this.addChild(intern_); + // this.addChild(intern_); // -- creation de l action pour editor --// final WidgetAction editorAction = ActionFactory.createInplaceEditorAction(this); @@ -45,9 +51,36 @@ final EbliWidgetControllerTextEditor controller = new EbliWidgetControllerTextEditor(this); controller.setEditable(true); setController(controller); + } + View view; + + // JLabel c = new JLabel(); + + public void setHtml(String html) { + view = BasicHTML.createHTMLView(editorPane_, html); } + @Override + protected Rectangle calculateClientArea() { + Rectangle rec = new Rectangle(); + // the preferred size is here + rec.height = (int) view.getPreferredSpan(View.Y_AXIS); + rec.width = (int) view.getPreferredSpan(View.X_AXIS); + return rec; + } + + /** + * + */ + @Override + protected void paintWidget() { + Rectangle clientArea = getClientArea(); + // System.err.println(clientArea); + // c.setPreferredSize(new Dimension(clientArea.width, clientArea.height)); + view.paint(getGraphics(), clientArea); + } + // protected void paintWidget() { // Graphics2D g = getGraphics(); // @@ -87,7 +120,7 @@ if (conteneur == null) { conteneur = new BuPanel(new BuBorderLayout()); - final Rectangle rec = getClientArea(); + // final Rectangle rec = getClientArea(); // editorPane_.setSize(rec.width, rec.height); // editorPane_.setPreferredSize(new Dimension(rec.width, rec.height)); // conteneur.setPreferredSize(new Dimension(rec.width, rec.height)); @@ -135,9 +168,9 @@ public void notifyClosing(final EditorController _controller, final Widget _widget, final CtuluHtmlEditorPanel _editor, final boolean _commit) { - intern_.setHtml(editorPane_.getDocumentText()); - intern_.repaint(); - intern_.revalidate(); + setHtml(editorPane_.getDocumentText()); + // intern_.repaint(); + // intern_.revalidate(); this.repaint(); getEbliScene().refresh(); editingStop(); @@ -149,7 +182,7 @@ // getEbliScene().getView(), true)); // editorPane_.setDocumentText(contenuHTML_.getText()); // -- on masque l affichage du widgetcomponent --// - intern_.setHtml(CtuluLibString.EMPTY_STRING); + setHtml(CtuluLibString.EMPTY_STRING); editingStart(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2008-10-30 17:45:07
|
Revision: 4130 http://fudaa.svn.sourceforge.net/fudaa/?rev=4130&view=rev Author: deniger Date: 2008-10-30 17:45:01 +0000 (Thu, 30 Oct 2008) Log Message: ----------- Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetTextEditor.java Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetTextEditor.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetTextEditor.java 2008-10-30 17:44:47 UTC (rev 4129) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/EbliWidgetTextEditor.java 2008-10-30 17:45:01 UTC (rev 4130) @@ -5,6 +5,7 @@ import javax.swing.JLabel; +import org.fudaa.ctulu.CtuluLibString; import org.fudaa.ctulu.gui.CtuluHtmlEditorPanel; import org.netbeans.api.visual.action.ActionFactory; import org.netbeans.api.visual.action.InplaceEditorProvider; @@ -22,18 +23,16 @@ // ComponentWidget widget; BuPanel conteneur = null; // LabelWidget intern_; - ComponentWidget intern_; + EbliHtmlWidget intern_; - JLabel contenuHTML_ = new JLabel(); - public EbliWidgetTextEditor(final EbliScene scene, final CtuluHtmlEditorPanel content) { super(scene, false); editorPane_ = content; - - intern_ = new ComponentWidget(scene, contenuHTML_); - // intern_ = new ComponentWidget(scene, editorPane_.); - contenuHTML_.setText(content.getDocumentText()); + intern_ = new EbliHtmlWidget(scene, content.getDocumentText()); + // intern_ = new ComponentWidget(scene, editorPane_.); + + // contenuHTML_.setText(content.getDocumentText()); // -- ajout en interne du label d affichage --// this.addChild(intern_); @@ -100,7 +99,7 @@ } // -- on masque l affichage du widgetcomponent --// - // contenuHTML_.setText(""); + // contenuHTML_.setText(""); return editorPane_; @@ -134,9 +133,9 @@ // // } - public void notifyClosing(final EditorController _controller, final Widget _widget, final CtuluHtmlEditorPanel _editor, - final boolean _commit) { - contenuHTML_.setText(editorPane_.getDocumentText()); + public void notifyClosing(final EditorController _controller, final Widget _widget, + final CtuluHtmlEditorPanel _editor, final boolean _commit) { + intern_.setHtml(editorPane_.getDocumentText()); intern_.repaint(); intern_.revalidate(); this.repaint(); @@ -146,12 +145,12 @@ } public void notifyOpened(final EditorController _controller, final Widget _widget, final CtuluHtmlEditorPanel _editor) { - //contenuHTML_.setText(CtuluHtmlEditorPanel.showMinimalHtmlDialog(contenuHTML_.getText(), - //getEbliScene().getView(), true)); - //editorPane_.setDocumentText(contenuHTML_.getText()); - // -- on masque l affichage du widgetcomponent --// - contenuHTML_.setText(""); - editingStart(); + // contenuHTML_.setText(CtuluHtmlEditorPanel.showMinimalHtmlDialog(contenuHTML_.getText(), + // getEbliScene().getView(), true)); + // editorPane_.setDocumentText(contenuHTML_.getText()); + // -- on masque l affichage du widgetcomponent --// + intern_.setHtml(CtuluLibString.EMPTY_STRING); + editingStart(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |