From: <de...@us...> - 2009-01-24 22:16:10
|
Revision: 4400 http://fudaa.svn.sourceforge.net/fudaa/?rev=4400&view=rev Author: deniger Date: 2009-01-24 22:16:05 +0000 (Sat, 24 Jan 2009) Log Message: ----------- Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaCourbeWizardImportScope.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostLayoutFille.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/dialogSpec/TrPostTrajectoireTaskModel.java Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaCourbeWizardImportScope.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaCourbeWizardImportScope.java 2009-01-24 21:50:40 UTC (rev 4399) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaCourbeWizardImportScope.java 2009-01-24 22:16:05 UTC (rev 4400) @@ -61,7 +61,6 @@ import com.memoire.bu.BuValueValidator; import com.memoire.bu.BuWizardDialog; import com.memoire.bu.BuWizardTask; -import com.sun.xml.internal.bind.v2.schemagen.xmlschema.List; /** * Wizard qui se charge d'importer des courbes au format scope dans le post. Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostLayoutFille.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostLayoutFille.java 2009-01-24 21:50:40 UTC (rev 4399) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostLayoutFille.java 2009-01-24 22:16:05 UTC (rev 4400) @@ -46,7 +46,6 @@ import org.fudaa.ebli.visuallibrary.calque.EbliWidgetCreatorVueCalque; import org.fudaa.ebli.visuallibrary.creator.EbliWidgetCreatorArrowEditor; import org.fudaa.ebli.visuallibrary.creator.EbliWidgetCreatorTextEditor; -import org.fudaa.ebli.visuallibrary.graphe.EbliWidgetControllerGraphe; import org.fudaa.ebli.visuallibrary.graphe.EbliWidgetCreatorGraphe; import org.fudaa.fudaa.commun.courbe.FudaaCourbeImporter; import org.fudaa.fudaa.commun.courbe.FudaaCourbeImporter.Target; Modified: 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/TrPostTrajectoireComputeAndDisplayActivity.java 2009-01-24 21:50:40 UTC (rev 4399) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireComputeAndDisplayActivity.java 2009-01-24 22:16:05 UTC (rev 4400) @@ -1,8 +1,6 @@ package org.fudaa.fudaa.tr.post; -import java.awt.Frame; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -14,7 +12,6 @@ import org.fudaa.ctulu.CtuluVariable; import org.fudaa.ctulu.CtuluVariableDefault; import org.fudaa.ctulu.ProgressionInterface; -import org.fudaa.ctulu.gis.GISAttribute; import org.fudaa.ctulu.gis.GISAttributeInterface; import org.fudaa.ctulu.gis.GISDataModel; import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; @@ -110,17 +107,15 @@ FSigLayerGroup traj_; - - TrPostTrajectoireLineLayer calqueAecraser_=null; - + TrPostTrajectoireLineLayer calqueAecraser_ ; - public TrPostTrajectoireComputeAndDisplayActivity(final TrPostVisuPanel calque,TrPostTrajectoireLineLayer c) { - this(calque); - calqueAecraser_=c; + public TrPostTrajectoireComputeAndDisplayActivity(final TrPostVisuPanel calque, TrPostTrajectoireLineLayer c) { + this.pn_ = calque; + calqueAecraser_ = c; } - + public TrPostTrajectoireComputeAndDisplayActivity(final TrPostVisuPanel calque) { - this.pn_ = calque; + this(calque, null); } /** @@ -134,8 +129,8 @@ * @param _prog l'interface de progression, peut etre null * @return */ - public String computeLigneCourant(TrPostVisuPanel vue2d,final EfTrajectoireParameters _data, final CtuluAnalyze _analyse, - final ProgressionInterface _prog) { + public String computeLigneCourant(TrPostVisuPanel vue2d, final EfTrajectoireParameters _data, + final CtuluAnalyze _analyse, final ProgressionInterface _prog) { stop_ = false; // on recupere les lignes de courant activity_ = new EfTrajectoireActivity(pn_.getSource().getInterpolator(), new MvProfileCoteTester(), pn_.getSource() @@ -152,30 +147,30 @@ final List<GISAttributeInterface> attDansOrdreIns = fillCorrespondantAttributeVariable(_data, gr, varAtttributes); GISDataModel model = TrPostTrajectoireGisDataModel.build(computeLigneCourant, attDansOrdreIns, varAtttributes, _analyse); - if (model == null) return null; + if (model == null || _analyse.containsFatalError()) return null; final FSigLayerGroup dest = getDestGroup(_data.isTrajectoire()); final GISZoneCollectionLigneBrisee lb = new GISZoneCollectionLigneBrisee(); lb.setAttributes(attDansOrdreIns.toArray(new GISAttributeInterface[attDansOrdreIns.size()]), null); lb.addAll(model, null, false); - String titreCalque=""; - if(calqueAecraser_==null){ - CtuluDialogPanel pn = new CtuluDialogPanel(false); - pn.setLayout(new BuGridLayout(2)); - pn.addLabel(TrLib.getString("Indiquer le nom du calque \xE0 cr\xE9er")); - JTextField tf = pn.addStringText(); - tf.setColumns(10); - pn.afficheModale(CtuluLibSwing.getActiveWindow(), getCalqueName(_data.isTrajectoire()), CtuluDialog.OK_OPTION); - titreCalque=tf.getText(); - }else{ - titreCalque=calqueAecraser_.getTitle(); - //-- on detruit le calque apres rejoue de donn\xE9es --// - calqueAecraser_.setDestructible(true); - this.pn_.detruireCalque(calqueAecraser_); - + String titreCalque = ""; + if (calqueAecraser_ == null) { + CtuluDialogPanel pn = new CtuluDialogPanel(false); + pn.setLayout(new BuGridLayout(2)); + pn.addLabel(TrLib.getString("Indiquer le nom du calque \xE0 cr\xE9er")); + JTextField tf = pn.addStringText(); + tf.setColumns(10); + pn.afficheModale(CtuluLibSwing.getActiveWindow(), getCalqueName(_data.isTrajectoire()), CtuluDialog.OK_OPTION); + titreCalque = tf.getText(); + } else { + titreCalque = calqueAecraser_.getTitle(); + // -- on detruit le calque apres rejoue de donn\xE9es --// + calqueAecraser_.setDestructible(true); + this.pn_.detruireCalque(calqueAecraser_); + } - final ZCalqueLigneBrisee la = createLayer(vue2d,_data, dest, lb, titreCalque, findAttributeForVariable(varAtttributes, - MARK)); + final ZCalqueLigneBrisee la = createLayer(vue2d, _data, dest, lb, titreCalque, findAttributeForVariable( + varAtttributes, MARK)); dest.enPremier(la); return TrResource.TR.getString("Calque {0} cr\xE9\xE9", la.getTitle()); @@ -189,9 +184,9 @@ return null; } - private ZCalqueLigneBrisee createLayer(TrPostVisuPanel vue2d,final EfTrajectoireParameters _data, final FSigLayerGroup dest, - final GISZoneCollectionLigneBrisee lb, String _title, GISAttributeInterface _mark) { - final ZCalqueLigneBrisee la = new TrPostTrajectoireLineLayer(vue2d,_data, new ZModeleLigneBriseeDefault(lb), _mark); + private ZCalqueLigneBrisee createLayer(TrPostVisuPanel vue2d, final EfTrajectoireParameters _data, + final FSigLayerGroup dest, final GISZoneCollectionLigneBrisee lb, String _title, GISAttributeInterface _mark) { + final ZCalqueLigneBrisee la = new TrPostTrajectoireLineLayer(vue2d, _data, new ZModeleLigneBriseeDefault(lb), _mark); la.setName(BGroupeCalque.findUniqueChildName(dest, getCalqueId(_data.isTrajectoire()))); la.setTitle(CtuluLibString.isEmpty(_title) ? createNewCalqueName(_data.isTrajectoire()) : _title); la Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostTrajectoireTaskModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostTrajectoireTaskModel.java 2009-01-24 21:50:40 UTC (rev 4399) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostTrajectoireTaskModel.java 2009-01-24 22:16:05 UTC (rev 4400) @@ -6,10 +6,8 @@ import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; -import java.util.HashSet; import java.util.Iterator; import java.util.List; -import java.util.Set; import javax.swing.BorderFactory; import javax.swing.JButton; @@ -19,7 +17,6 @@ import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; -import javax.swing.JTextField; import javax.swing.ListModel; import javax.swing.ListSelectionModel; import javax.swing.table.DefaultTableModel; @@ -45,11 +42,9 @@ import org.fudaa.fudaa.tr.common.TrResource; import org.fudaa.fudaa.tr.post.TrPostFlecheContent; import org.fudaa.fudaa.tr.post.TrPostSource; +import org.fudaa.fudaa.tr.post.TrPostTrajectoireComputeAndDisplayActivity; import org.fudaa.fudaa.tr.post.TrPostTrajectoireLineLayer; -import org.fudaa.fudaa.tr.post.TrPostTrajectoireLineLayerPersist; -import org.fudaa.fudaa.tr.post.TrPostTrajectoireLineLayerPersistence; import org.fudaa.fudaa.tr.post.TrPostVisuPanel; -import org.fudaa.fudaa.tr.post.TrPostTrajectoireComputeAndDisplayActivity; import com.memoire.bu.BuComboBox; import com.memoire.bu.BuGridLayout; @@ -61,557 +56,547 @@ public class TrPostTrajectoireTaskModel implements FudaaPanelTaskModel { - /** + /** * */ - private static final double MAXDIST = 1E-3; + private static final double MAXDIST = 1E-3; - TrPostTrajectoireComputeAndDisplayActivity algoCalcul_; + TrPostTrajectoireComputeAndDisplayActivity algoCalcul_; - /** - * booleen qui indique si le wizard a \xE9t\xE9t lanc\xE9 depuis un calque - */ + /** + * booleen qui indique si le wizard a \xE9t\xE9t lanc\xE9 depuis un calque + */ - // ArrayList<TrPostSource> source_; - TrPostVisuPanel calque_; + // ArrayList<TrPostSource> source_; + TrPostVisuPanel calque_; - // choix mode - JComboBox choixMode_ = new JComboBox(new String[] { TrLib.getString("Lignes de courant"), - TrLib.getString("Trajectoires") }); + // choix mode + JComboBox choixMode_ = new JComboBox(new String[] { TrLib.getString("Lignes de courant"), + TrLib.getString("Trajectoires") }); - JComponent duree_; + JComponent duree_; - JComponent finesse_; + JComponent finesse_; - final MvLineChooser lineChooser_; - JComboBox cbFirstTime_; - JList listVar_; - ListModel modelPdt_; + final MvLineChooser lineChooser_; + JComboBox cbFirstTime_; + JList listVar_; + ListModel modelPdt_; - // donnees graphiques - // JDialog dialog_; + // donnees graphiques + // JDialog dialog_; - DefaultTableModel modelResult_; + DefaultTableModel modelResult_; - // results - // JPanel panelResults_; - /** - * Creation du panel graphique. - * - * @return - */ - // JPanel panelSegment_; - // finesse et duree et point - // private JPanel panelSeuil_; - // variables et pdt - // private JPanel panelVariables_; - TrPostSource source_; - CtuluValueEditorDouble doubleEditor_ = new CtuluValueEditorDouble(false); - CtuluValueEditorDouble doubleMarkEditor_ = new CtuluValueEditorDouble(false); - CtuluValueEditorInteger integerEditor_ = new CtuluValueEditorInteger(false); - JComboBox cbVitesse_; - JComponent nbPoints_; + // results + // JPanel panelResults_; + /** + * Creation du panel graphique. + * + * @return + */ + // JPanel panelSegment_; + // finesse et duree et point + // private JPanel panelSeuil_; + // variables et pdt + // private JPanel panelVariables_; + TrPostSource source_; + CtuluValueEditorDouble doubleEditor_ = new CtuluValueEditorDouble(false); + CtuluValueEditorDouble doubleMarkEditor_ = new CtuluValueEditorDouble(false); + CtuluValueEditorInteger integerEditor_ = new CtuluValueEditorInteger(false); + JComboBox cbVitesse_; + JComponent nbPoints_; - // choix segment - JComponent x_; - JComponent x2_; - JComponent y_; - JComponent y2_; - CtuluValueTimeEditor dureeEditor_; + // choix segment + JComponent x_; + JComponent x2_; + JComponent y_; + JComponent y2_; + CtuluValueTimeEditor dureeEditor_; - /** - * Constructeur reserv\xE9 au calques - * - * @param _builderParams - * @param _calque - * @param _modelGraphe - * @param _panelVariables - * @param _source - */ - public TrPostTrajectoireTaskModel(final TrPostVisuPanel calque) { - calque_ = calque; - source_ = calque.getSource(); - int nbTimeStep = source_.getNbTimeStep(); - if (nbTimeStep < 2) choixMode_.setEnabled(false); - doubleEditor_.setFormatter(CtuluNumberFormatDefault.buildNoneFormatter(3, true)); - x_ = doubleEditor_.createEditorComponent(); - x2_ = doubleEditor_.createEditorComponent(); - y_ = doubleEditor_.createEditorComponent(); - y2_ = doubleEditor_.createEditorComponent(); + /** + * Constructeur reserv\xE9 au calques + * + * @param _builderParams + * @param _calque + * @param _modelGraphe + * @param _panelVariables + * @param _source + */ + public TrPostTrajectoireTaskModel(final TrPostVisuPanel calque) { + calque_ = calque; + source_ = calque.getSource(); + int nbTimeStep = source_.getNbTimeStep(); + if (nbTimeStep < 2) choixMode_.setEnabled(false); + doubleEditor_.setFormatter(CtuluNumberFormatDefault.buildNoneFormatter(3, true)); + x_ = doubleEditor_.createEditorComponent(); + x2_ = doubleEditor_.createEditorComponent(); + y_ = doubleEditor_.createEditorComponent(); + y2_ = doubleEditor_.createEditorComponent(); - dureeEditor_ = new CtuluValueTimeEditor(); - dureeEditor_.setFmt(source_.getTimeFormatter()); - duree_ = dureeEditor_.createEditorComponent(); - double defaut = 60; - if (nbTimeStep > 2) { - defaut = (source_.getTimeStep(nbTimeStep - 1) - source_.getTimeStep(0)) / 2; - } - dureeEditor_.setValue(defaut, duree_); - integerEditor_.setVal(BuValueValidator.MIN(1)); - integerEditor_.setEditable(true); - nbPoints_ = integerEditor_.createEditorComponent(); - finesse_ = integerEditor_.createEditorComponent(); - integerEditor_.setValue(Integer.valueOf(1), nbPoints_); - integerEditor_.setValue(Integer.valueOf(1), finesse_); - lineChooser_ = new MvLineChooser(calque.getSelectedLine(), calque); - // modelVariables_ = source_.getNewVarListModel();//doit contenir les vecteurs - modelPdt_ = source_.getNewTimeListModel(); + dureeEditor_ = new CtuluValueTimeEditor(); + dureeEditor_.setFmt(source_.getTimeFormatter()); + duree_ = dureeEditor_.createEditorComponent(); + double defaut = 60; + if (nbTimeStep > 2) { + defaut = (source_.getTimeStep(nbTimeStep - 1) - source_.getTimeStep(0)) / 2; + } + dureeEditor_.setValue(defaut, duree_); + integerEditor_.setVal(BuValueValidator.MIN(1)); + integerEditor_.setEditable(true); + nbPoints_ = integerEditor_.createEditorComponent(); + finesse_ = integerEditor_.createEditorComponent(); + integerEditor_.setValue(Integer.valueOf(1), nbPoints_); + integerEditor_.setValue(Integer.valueOf(1), finesse_); + lineChooser_ = new MvLineChooser(calque.getSelectedLine(), calque); + // modelVariables_ = source_.getNewVarListModel();//doit contenir les vecteurs + modelPdt_ = source_.getNewTimeListModel(); - // -- construction de la dialog --// - } + // -- construction de la dialog --// + } + /** + * reference du layer a ecraser dans le cas ou l'on rejoue les donn\xE9es. Null si utilisation classique. + */ + TrPostTrajectoireLineLayer layerAEcraser_ = null; - /** - * reference du layer a ecraser dans le cas ou l'on rejoue les donn\xE9es. - * Null si utilisation classique. - */ - TrPostTrajectoireLineLayer layerAEcraser_=null; - /** - * Constructeur appel\xE9 pour rejouer les donn\xE9es. - * Passe en parametre la structure efTrajectoire qui contient toutes les infos de pr\xE9 remplissage - * @param calque - * @param dataReplay qui contient toutes les infos de pr\xE9 remplissage - * @param calqueAEcraser calque a ecraser en recopiant le r\xE9sultat par dessus - */ - public TrPostTrajectoireTaskModel(final TrPostVisuPanel calque,EfTrajectoireParameters dataReplay,TrPostTrajectoireLineLayer calqueAEcraser){ - this(calque); + /** + * Constructeur appel\xE9 pour rejouer les donn\xE9es. Passe en parametre la structure efTrajectoire qui contient toutes les + * infos de pr\xE9 remplissage + * + * @param calque + * @param dataReplay qui contient toutes les infos de pr\xE9 remplissage + * @param calqueAEcraser calque a ecraser en recopiant le r\xE9sultat par dessus + */ + public TrPostTrajectoireTaskModel(final TrPostVisuPanel calque, EfTrajectoireParameters dataReplay, + TrPostTrajectoireLineLayer calqueAEcraser) { + this(calque); - //-- on pr\xE9remplit les donn\xE9es avec les infos du dataReplay --// - layerAEcraser_=calqueAEcraser; + // -- on pr\xE9remplit les donn\xE9es avec les infos du dataReplay --// + layerAEcraser_ = calqueAEcraser; - //-- on reinitialise les infos avec les donn\xE9es des trajectoires/lignes de courant. --// - //-- on initialise les params graphiques --// - getPanel(); - - //-- selection du vecteur vitesse --// - for(int k=0;k<cbVitesse_.getItemCount();k++) - if( ((TrPostFlecheContent) cbVitesse_.getItemAt(k)).getVx()== dataReplay.vx) - if( ((TrPostFlecheContent) cbVitesse_.getSelectedItem()).getVy()== dataReplay.vy) - cbVitesse_.setSelectedIndex(k); + // -- on reinitialise les infos avec les donn\xE9es des trajectoires/lignes de courant. --// + // -- on initialise les params graphiques --// + getPanel(); - //-- duree itegration --// - dureeEditor_.setValue( dataReplay.dureeIntegration_, duree_); + // -- selection du vecteur vitesse --// + for (int k = 0; k < cbVitesse_.getItemCount(); k++) + if (((TrPostFlecheContent) cbVitesse_.getItemAt(k)).getVx() == dataReplay.vx) if (((TrPostFlecheContent) cbVitesse_ + .getSelectedItem()).getVy() == dataReplay.vy) cbVitesse_.setSelectedIndex(k); - //-- finesse --// - integerEditor_.setValue( dataReplay.finesse_, finesse_); + // -- duree itegration --// + dureeEditor_.setValue(dataReplay.dureeIntegration_, duree_); - //-- pas de temps initial --// - cbFirstTime_.setSelectedIndex(dataReplay.firstTimeStepIdx_); + // -- finesse --// + integerEditor_.setValue(dataReplay.finesse_, finesse_); - //-- type traj ou ligne de courant --// - if(dataReplay.isLigneDeCourant) - choixMode_.setSelectedIndex(0); - else - choixMode_.setSelectedIndex(1); - - //-- choix des variables --// - if (dataReplay.varsASuivre_.size()>1) { + // -- pas de temps initial --// + cbFirstTime_.setSelectedIndex(dataReplay.firstTimeStepIdx_); - int[] indicesToselect=new int[dataReplay.varsASuivre_.size()]; - for(int i=0;i<dataReplay.varsASuivre_.size();i++){ - - for(int k=0;k<listVar_.getModel().getSize();k++){ - if(((CtuluVariable)listVar_.getModel().getElementAt(k))==dataReplay.varsASuivre_.get(i)) - indicesToselect[i]=k; - } - } - listVar_.setSelectedIndices(indicesToselect); - } - - //-- premier point --// - doubleEditor_.setValue(dataReplay.points_.get(0).x, x_); - doubleEditor_.setValue(dataReplay.points_.get(0).y, y_); + // -- type traj ou ligne de courant --// + if (dataReplay.isLigneDeCourant) choixMode_.setSelectedIndex(0); + else choixMode_.setSelectedIndex(1); - //-- dernier point --// - doubleEditor_.setValue(dataReplay.points_.get(dataReplay.points_.size()-1).x, x2_); - doubleEditor_.setValue(dataReplay.points_.get(dataReplay.points_.size()-1).y, y2_); - - //-- marqueurs --// - if(dataReplay.marqueur_ !=null){ - if(dataReplay.marqueur_.timeStep_) - cbMarks_.setSelectedIndex(1); - else - cbMarks_.setSelectedIndex(2); - - doubleMarkEditor_.setValue(dataReplay.marqueur_.deltaMax_, markValue_); - }else - cbMarks_.setSelectedIndex(0); - - } + // -- choix des variables --// + if (dataReplay.varsASuivre_.size() > 1) { - private List<Coordinate> getPoints() { - Coordinate c = getFirsCoordinate(); - Coordinate cEnd = getEndCoordinate(); - int nbLigne = (Integer) integerEditor_.getValue(nbPoints_); - List<Coordinate> res = new ArrayList<Coordinate>(nbLigne); - if (c.distance(cEnd) < MAXDIST) { - res.add(c); - return res; - } - if (nbLigne == 1) { - c.x = (c.x + cEnd.x) / 2D; - c.y = (c.y + cEnd.y) / 2D; - res.add(c); - return res; - } - int nbIteration = nbLigne - 1; - double deltaX = (cEnd.x - c.x) / nbIteration; - double deltaY = (cEnd.y - c.y) / nbIteration; - res.add(c); - for (int i = 1; i < nbIteration; i++) { - Coordinate ci = new Coordinate(c.x + i * deltaX, c.y + i * deltaY); - res.add(ci); - } - res.add(cEnd); - return res; + int[] indicesToselect = new int[dataReplay.varsASuivre_.size()]; + for (int i = 0; i < dataReplay.varsASuivre_.size(); i++) { - } + for (int k = 0; k < listVar_.getModel().getSize(); k++) { + if (((CtuluVariable) listVar_.getModel().getElementAt(k)) == dataReplay.varsASuivre_.get(i)) indicesToselect[i] = k; + } + } + listVar_.setSelectedIndices(indicesToselect); + } - private Coordinate getEndCoordinate() { - return new Coordinate(getDoubleValue(x2_), getDoubleValue(y2_)); - } + // -- premier point --// + doubleEditor_.setValue(dataReplay.points_.get(0).x, x_); + doubleEditor_.setValue(dataReplay.points_.get(0).y, y_); - private Coordinate getFirsCoordinate() { - return new Coordinate(getDoubleValue(x_), getDoubleValue(y_)); - } + // -- dernier point --// + doubleEditor_.setValue(dataReplay.points_.get(dataReplay.points_.size() - 1).x, x2_); + doubleEditor_.setValue(dataReplay.points_.get(dataReplay.points_.size() - 1).y, y2_); - public void actTask(final ProgressionInterface _prog, final CtuluAnalyze _analyze, final String[] _messages) { - // on recupere les points - List<Coordinate> points = getPoints(); - int idxRemove = 0; - // on enleve les points en dehors - for (Iterator<Coordinate> it = points.iterator(); it.hasNext();) { - Coordinate c = it.next(); - int idx = EfIndexHelper.getElementEnglobant(source_.getGrid(), c.x, c.y, _prog); - if (idx < 0) { - idxRemove++; - it.remove(); - } - } - // si pas de point pas de calcul - if (points.size() == 0) { - _analyze.addFatalError(TrResource.getS("Aucun point de d\xE9part n'appartient au maillage")); - return; - } - if (idxRemove > 0) { - String txt = null; - if (idxRemove == 1) { - txt = TrResource.getS("1 point de d\xE9part a \xE9t\xE9 ignor\xE9 car il en dehors du maillage"); - } else { - txt = TrResource.getS("{0} points de d\xE9part ont \xE9t\xE9 ignor\xE9s car ils en dehors du maillage", CtuluLibString - .getString(idxRemove)); - } - _messages[0] = txt; - } + // -- marqueurs --// + if (dataReplay.marqueur_ != null) { + if (dataReplay.marqueur_.timeStep_) cbMarks_.setSelectedIndex(1); + else cbMarks_.setSelectedIndex(2); + doubleMarkEditor_.setValue(dataReplay.marqueur_.deltaMax_, markValue_); + } else cbMarks_.setSelectedIndex(0); - //-- creation de la donn\xE9e persistante qui a permi de creer les infos --// - // TrPostTrajectoireLineLayerPersist persist=new TrPostTrajectoireLineLayerPersist(); - // persist.setPoint1(getFirsCoordinate()); - // persist.setPoint2(getEndCoordinate()); - // persist.setTrajectoire(isTrajectoire()); - // persist.setFinesse((Integer) integerEditor_.getValue(finesse_)); - // persist.setDureeCalcul(getDuree()); - // persist.setNbCesures((Integer)integerEditor_.getValue(nbPoints_)); - Object[] selectedValues = listVar_.getSelectedValues(); - // HashSet<String> listeVar= new HashSet<String>(); - // for(int i=0;i<selectedValues.length;i++) - // listeVar.add(((CtuluVariable)selectedValues[i]).getID()); - // persist.setListeVariablesId(listeVar); - // if(isMarqueurTimeStep()) - // persist.setTypeMarqueur(1); - // else if(isMarqueurAvailable()) - // persist.setTypeMarqueur(2); - // else - // persist.setTypeMarqueur(0); - // - // creation de l algo - if(layerAEcraser_!=null) - algoCalcul_ = new TrPostTrajectoireComputeAndDisplayActivity(calque_,layerAEcraser_); - else - algoCalcul_ = new TrPostTrajectoireComputeAndDisplayActivity(calque_); + } - final TrPostFlecheContent flecheContent = getSelectedVariable(); - final EfTrajectoireParameters data = new EfTrajectoireParameters(); - data.vx = flecheContent.getVx(); - data.vy = flecheContent.getVy(); - data.dureeIntegration_ = getDuree(); - data.finesse_ = (Integer) integerEditor_.getValue(finesse_); - data.firstTimeStepIdx_ = getSelectedTimeStep(); - data.firstTimeStep_ = source_.getTimeStep(data.firstTimeStepIdx_); - data.isLigneDeCourant = isLigneCourant(); - if (!listVar_.isSelectionEmpty()) { + private List<Coordinate> getPoints() { + Coordinate c = getFirsCoordinate(); + Coordinate cEnd = getEndCoordinate(); + int nbLigne = (Integer) integerEditor_.getValue(nbPoints_); + List<Coordinate> res = new ArrayList<Coordinate>(nbLigne); + if (c.distance(cEnd) < MAXDIST) { + res.add(c); + return res; + } + if (nbLigne == 1) { + c.x = (c.x + cEnd.x) / 2D; + c.y = (c.y + cEnd.y) / 2D; + res.add(c); + return res; + } + int nbIteration = nbLigne - 1; + double deltaX = (cEnd.x - c.x) / nbIteration; + double deltaY = (cEnd.y - c.y) / nbIteration; + res.add(c); + for (int i = 1; i < nbIteration; i++) { + Coordinate ci = new Coordinate(c.x + i * deltaX, c.y + i * deltaY); + res.add(ci); + } + res.add(cEnd); + return res; - data.varsASuivre_ = new ArrayList<CtuluVariable>(selectedValues.length); - for (int i = 0; i < selectedValues.length; i++) { - data.varsASuivre_.add((CtuluVariable) selectedValues[i]); - } - } + } - data.points_ = points; - if (isMarqueurAvailable()) { - data.marqueur_ = new EfTrajectoireParametersMarqueur(); - data.marqueur_.timeStep_ = isMarqueurTimeStep(); - data.marqueur_.deltaMax_ = (Double) doubleMarkEditor_.getValue(markValue_); + private Coordinate getEndCoordinate() { + return new Coordinate(getDoubleValue(x2_), getDoubleValue(y2_)); + } - } - _messages[0] = algoCalcul_.computeLigneCourant(calque_,data, _analyze, _prog); + private Coordinate getFirsCoordinate() { + return new Coordinate(getDoubleValue(x_), getDoubleValue(y_)); + } - // -- mise a jour du tableau de res --// - // modelResult_.fireTableDataChanged(); + public void actTask(final ProgressionInterface _prog, final CtuluAnalyze _analyze, final String[] _messages) { + // on recupere les points + List<Coordinate> points = getPoints(); + int idxRemove = 0; + // on enleve les points en dehors + for (Iterator<Coordinate> it = points.iterator(); it.hasNext();) { + Coordinate c = it.next(); + int idx = EfIndexHelper.getElementEnglobant(source_.getGrid(), c.x, c.y, _prog); + if (idx < 0) { + idxRemove++; + it.remove(); + } + } + // si pas de point pas de calcul + if (points.size() == 0) { + _analyze.addFatalError(TrResource.getS("Aucun point de d\xE9part n'appartient au maillage")); + return; + } + if (idxRemove > 0) { + String txt = null; + if (idxRemove == 1) { + txt = TrResource.getS("1 point de d\xE9part a \xE9t\xE9 ignor\xE9 car il en dehors du maillage"); + } else { + txt = TrResource.getS("{0} points de d\xE9part ont \xE9t\xE9 ignor\xE9s car ils en dehors du maillage", CtuluLibString + .getString(idxRemove)); + } + _messages[0] = txt; + } - } + // -- creation de la donn\xE9e persistante qui a permi de creer les infos --// + // TrPostTrajectoireLineLayerPersist persist=new TrPostTrajectoireLineLayerPersist(); + // persist.setPoint1(getFirsCoordinate()); + // persist.setPoint2(getEndCoordinate()); + // persist.setTrajectoire(isTrajectoire()); + // persist.setFinesse((Integer) integerEditor_.getValue(finesse_)); + // persist.setDureeCalcul(getDuree()); + // persist.setNbCesures((Integer)integerEditor_.getValue(nbPoints_)); + Object[] selectedValues = listVar_.getSelectedValues(); + // HashSet<String> listeVar= new HashSet<String>(); + // for(int i=0;i<selectedValues.length;i++) + // listeVar.add(((CtuluVariable)selectedValues[i]).getID()); + // persist.setListeVariablesId(listeVar); + // if(isMarqueurTimeStep()) + // persist.setTypeMarqueur(1); + // else if(isMarqueurAvailable()) + // persist.setTypeMarqueur(2); + // else + // persist.setTypeMarqueur(0); + // + // creation de l algo + algoCalcul_ = new TrPostTrajectoireComputeAndDisplayActivity(calque_, layerAEcraser_); - JPanel content_; - JComponent markValue_; - JComboBox cbMarks_ = new JComboBox(new String[] { TrLib.getString("Aucun"), - TrLib.getString("A pas de temps constant"), TrLib.getString("A distance constante") }); + final TrPostFlecheContent flecheContent = getSelectedVariable(); + final EfTrajectoireParameters data = new EfTrajectoireParameters(); + data.vx = flecheContent.getVx(); + data.vy = flecheContent.getVy(); + data.dureeIntegration_ = getDuree(); + data.finesse_ = (Integer) integerEditor_.getValue(finesse_); + data.firstTimeStepIdx_ = getSelectedTimeStep(); + data.firstTimeStep_ = source_.getTimeStep(data.firstTimeStepIdx_); + data.isLigneDeCourant = isLigneCourant(); + if (!listVar_.isSelectionEmpty()) { - public boolean isMarqueurAvailable() { - return cbMarks_.getSelectedIndex() != 0; - } + data.varsASuivre_ = new ArrayList<CtuluVariable>(selectedValues.length); + for (int i = 0; i < selectedValues.length; i++) { + data.varsASuivre_.add((CtuluVariable) selectedValues[i]); + } + } - public boolean isMarqueurTimeStep() { - return cbMarks_.getSelectedIndex() == 1; - } + data.points_ = points; + if (isMarqueurAvailable()) { + data.marqueur_ = new EfTrajectoireParametersMarqueur(); + data.marqueur_.timeStep_ = isMarqueurTimeStep(); + data.marqueur_.deltaMax_ = (Double) doubleMarkEditor_.getValue(markValue_); - private JPanel buildMarqueur() { - doubleMarkEditor_.setVal(BuValueValidator.MIN(1E-4)); - final JPanel conteneur = new JPanel(new BuGridLayout(2, 3, 3)); - conteneur.setBorder(BorderFactory.createTitledBorder(TrResource.getS("Marqueurs"))); - conteneur.add(new JLabel(TrLib.getString("Type"))); - conteneur.add(cbMarks_); - conteneur.add(new JLabel(TrLib.getString("Delta (valeur absolue)"))); - markValue_ = doubleMarkEditor_.createEditorComponent(); - conteneur.add(markValue_); - markValue_.setEnabled(false); - cbMarks_.addItemListener(new ItemListener() { + } + _messages[0] = algoCalcul_.computeLigneCourant(calque_, data, _analyze, _prog); - public void itemStateChanged(ItemEvent _e) { - markValue_.setEnabled(isMarqueurAvailable()); + // -- mise a jour du tableau de res --// + // modelResult_.fireTableDataChanged(); - } - }); + } - return conteneur; - } + JPanel content_; + JComponent markValue_; + JComboBox cbMarks_ = new JComboBox(new String[] { TrLib.getString("Aucun"), + TrLib.getString("A pas de temps constant"), TrLib.getString("A distance constante") }); - public boolean isSegmentValid() { - final boolean segValid = !doubleEditor_.isEmpty(x_) && !doubleEditor_.isEmpty(x2_) && !doubleEditor_.isEmpty(y2_) - && !doubleEditor_.isEmpty(y_); - return segValid && integerEditor_.getValue(nbPoints_) != null; - } + public boolean isMarqueurAvailable() { + return cbMarks_.getSelectedIndex() != 0; + } - public double getDoubleValue(final JComponent c) { - return ((Double) doubleEditor_.getValue(c)).doubleValue(); - } + public boolean isMarqueurTimeStep() { + return cbMarks_.getSelectedIndex() == 1; + } - protected void updateView(final boolean _zoom) { - if (isSegmentValid()) { - lineChooser_.update(GISGeometryFactory.INSTANCE.createSegment(getDoubleValue(x_), getDoubleValue(y_), - getDoubleValue(x2_), getDoubleValue(y2_)), _zoom); - } - } + private JPanel buildMarqueur() { + doubleMarkEditor_.setVal(BuValueValidator.MIN(1E-4)); + final JPanel conteneur = new JPanel(new BuGridLayout(2, 3, 3)); + conteneur.setBorder(BorderFactory.createTitledBorder(TrResource.getS("Marqueurs"))); + conteneur.add(new JLabel(TrLib.getString("Type"))); + conteneur.add(cbMarks_); + conteneur.add(new JLabel(TrLib.getString("Delta (valeur absolue)"))); + markValue_ = doubleMarkEditor_.createEditorComponent(); + conteneur.add(markValue_); + markValue_.setEnabled(false); + cbMarks_.addItemListener(new ItemListener() { - private JPanel buildSegments() { + public void itemStateChanged(ItemEvent _e) { + markValue_.setEnabled(isMarqueurAvailable()); - final JPanel conteneur = new JPanel(new BuGridLayout(3, 5, 5, false, false, false, false, false)); - conteneur.setBorder(BorderFactory.createTitledBorder(TrResource.getS("Choix du segment"))); - conteneur.add(new JLabel("")); - conteneur.add(new JLabel("x:")); - conteneur.add(new JLabel("y:")); - conteneur.add(new JLabel("Point 1:")); - conteneur.add(x_); - conteneur.add(y_); - conteneur.add(new JLabel("Point 2:")); - conteneur.add(x2_); - conteneur.add(y2_); - conteneur.add(new JLabel("Nombre de trajectoire/lignes de courant:")); - conteneur.add(nbPoints_); - final LineString initSelected = lineChooser_.getInitSelected(); - if (initSelected != null) { - final int nbCoordinate = initSelected.getNumPoints(); - doubleEditor_.setValue(initSelected.getCoordinateSequence().getX(0), x_); - doubleEditor_.setValue(initSelected.getCoordinateSequence().getY(0), y_); - doubleEditor_.setValue(initSelected.getCoordinateSequence().getX(nbCoordinate - 1), x2_); - doubleEditor_.setValue(initSelected.getCoordinateSequence().getY(nbCoordinate - 1), y2_); - updateView(false); - } - JPanel mainSegment = new JPanel(new BuVerticalLayout(5, false, true)); - mainSegment.add(conteneur); - JPanel pn = new JPanel(new BuGridLayout(3, 2, 0)); - JButton bt = new JButton(TrLib.getString("zoomer sur le segment")); - bt.addActionListener(new ActionListener() { - public void actionPerformed(final ActionEvent _e) { - updateView(true); + } + }); - } - }); - pn.add(bt); - bt = new JButton(TrLib.getString("Zoom initial")); - bt.addActionListener(new ActionListener() { - public void actionPerformed(final ActionEvent _e) { - lineChooser_.zoomInitial(); + return conteneur; + } - } - }); - pn.add(bt); - bt = new JButton(EbliLib.getS("Restaurer")); - bt.addActionListener(new ActionListener() { - public void actionPerformed(final ActionEvent _e) { - lineChooser_.restaurer(); + public boolean isSegmentValid() { + final boolean segValid = !doubleEditor_.isEmpty(x_) && !doubleEditor_.isEmpty(x2_) && !doubleEditor_.isEmpty(y2_) + && !doubleEditor_.isEmpty(y_); + return segValid && integerEditor_.getValue(nbPoints_) != null; + } - } - }); - pn.add(bt); - mainSegment.add(pn); - return mainSegment; - } + public double getDoubleValue(final JComponent c) { + return ((Double) doubleEditor_.getValue(c)).doubleValue(); + } - private JPanel buildVariables() { - final JPanel conteneur = new JPanel(new BorderLayout()); - listVar_ = new JList(source_.getNewVarListModel()); - listVar_.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); - conteneur.add(new JScrollPane(listVar_)); - conteneur.setBorder(BorderFactory.createTitledBorder(TrResource.getS("Choix des variables"))); - return conteneur; - } + protected void updateView(final boolean _zoom) { + if (isSegmentValid()) { + lineChooser_.update(GISGeometryFactory.INSTANCE.createSegment(getDoubleValue(x_), getDoubleValue(y_), + getDoubleValue(x2_), getDoubleValue(y2_)), _zoom); + } + } - public void decoreBtApply(final JButton _bt) { - _bt.setText(TrLib.getString("Calculer")); - } + private JPanel buildSegments() { - public int getNbMessageMax() { - return 1; - } + final JPanel conteneur = new JPanel(new BuGridLayout(3, 5, 5, false, false, false, false, false)); + conteneur.setBorder(BorderFactory.createTitledBorder(TrResource.getS("Choix du segment"))); + conteneur.add(new JLabel("")); + conteneur.add(new JLabel("x:")); + conteneur.add(new JLabel("y:")); + conteneur.add(new JLabel("Point 1:")); + conteneur.add(x_); + conteneur.add(y_); + conteneur.add(new JLabel("Point 2:")); + conteneur.add(x2_); + conteneur.add(y2_); + conteneur.add(new JLabel("Nombre de trajectoire/lignes de courant:")); + conteneur.add(nbPoints_); + final LineString initSelected = lineChooser_.getInitSelected(); + if (initSelected != null) { + final int nbCoordinate = initSelected.getNumPoints(); + doubleEditor_.setValue(initSelected.getCoordinateSequence().getX(0), x_); + doubleEditor_.setValue(initSelected.getCoordinateSequence().getY(0), y_); + doubleEditor_.setValue(initSelected.getCoordinateSequence().getX(nbCoordinate - 1), x2_); + doubleEditor_.setValue(initSelected.getCoordinateSequence().getY(nbCoordinate - 1), y2_); + updateView(false); + } + JPanel mainSegment = new JPanel(new BuVerticalLayout(5, false, true)); + mainSegment.add(conteneur); + JPanel pn = new JPanel(new BuGridLayout(3, 2, 0)); + JButton bt = new JButton(TrLib.getString("zoomer sur le segment")); + bt.addActionListener(new ActionListener() { + public void actionPerformed(final ActionEvent _e) { + updateView(true); - public JComponent getPanel() { - if (content_ != null) return content_; - content_ = new BuPanel(new BuVerticalLayout(5)); - content_.add(buildMainProperties()); + } + }); + pn.add(bt); + bt = new JButton(TrLib.getString("Zoom initial")); + bt.addActionListener(new ActionListener() { + public void actionPerformed(final ActionEvent _e) { + lineChooser_.zoomInitial(); - // -- panel des segements --// - content_.add(buildSegments()); - // -- panel des variables --// - content_.add(buildVariables()); - content_.add(buildMarqueur()); - return content_; - } + } + }); + pn.add(bt); + bt = new JButton(EbliLib.getS("Restaurer")); + bt.addActionListener(new ActionListener() { + public void actionPerformed(final ActionEvent _e) { + lineChooser_.restaurer(); - private JPanel buildMainProperties() { - JPanel pn = new JPanel(new BuGridLayout(2, 5, 5)); - pn.add(new JLabel(TrResource.getS("Mode"))); - pn.add(choixMode_); - pn.add(new JLabel(TrResource.getS("Vecteur"))); - ListModel flecheListModel = source_.getNewFlecheListModel(); - CtuluComboBoxModelAdapter cb = new CtuluComboBoxModelAdapter(flecheListModel); - cbVitesse_ = new BuComboBox(cb); - cb.setSelectedItem(flecheListModel.getElementAt(0)); - // on s\xE9lectionne la vitesse par defaut - if (flecheListModel.getSize() > 1) { - for (int i = flecheListModel.getSize() - 1; i >= 0; i--) { - TrPostFlecheContent flecheContent = (TrPostFlecheContent) flecheListModel.getElementAt(i); - if (flecheContent.getVar() == H2dVariableType.VITESSE) { - cb.setSelectedItem(flecheListModel.getElementAt(i)); - break; - } - } - } - pn.add(cbVitesse_); - pn.add(new JLabel(TrResource.getS("Pas de temps intial"))); - cbFirstTime_ = new BuComboBox(new CtuluComboBoxModelAdapter(source_.getNewTimeListModel())); - cbFirstTime_.setSelectedIndex(0); - pn.add(cbFirstTime_); - pn.add(new JLabel(TrResource.getS("Dur\xE9e d'int\xE9gration:"))); - pn.add(duree_); - pn.add(new JLabel(TrResource.getS("Finesse:"))); - pn.add(finesse_); - return pn; - } + } + }); + pn.add(bt); + mainSegment.add(pn); + return mainSegment; + } - /** - * retourne l indice du pas de temps. - * - * @return - */ - protected int getSelectedTimeStep() { - return cbFirstTime_.getSelectedIndex(); - } + private JPanel buildVariables() { + final JPanel conteneur = new JPanel(new BorderLayout()); + listVar_ = new JList(source_.getNewVarListModel()); + listVar_.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); + conteneur.add(new JScrollPane(listVar_)); + conteneur.setBorder(BorderFactory.createTitledBorder(TrResource.getS("Choix des variables"))); + return conteneur; + } - /** - * retourne la variable selectionnee - * - * @return - */ - protected TrPostFlecheContent getSelectedVariable() { + public void decoreBtApply(final JButton _bt) { + _bt.setText(TrLib.getString("Calculer")); + } - return (TrPostFlecheContent) cbVitesse_.getSelectedItem(); - } + public int getNbMessageMax() { + return 1; + } - public String getTitre() { - return TrResource.getS("Lignes de courants") + "/" + TrResource.getS("Trajectoires"); - } + public JComponent getPanel() { + if (content_ != null) return content_; + content_ = new BuPanel(new BuVerticalLayout(5)); + content_.add(buildMainProperties()); - protected boolean isLigneCourant() { - return choixMode_.getSelectedIndex() == 0; - } + // -- panel des segements --// + content_.add(buildSegments()); + // -- panel des variables --// + content_.add(buildVariables()); + content_.add(buildMarqueur()); + return content_; + } - protected boolean isTrajectoire() { - return choixMode_.getSelectedIndex() == 1; - } + private JPanel buildMainProperties() { + JPanel pn = new JPanel(new BuGridLayout(2, 5, 5)); + pn.add(new JLabel(TrResource.getS("Mode"))); + pn.add(choixMode_); + pn.add(new JLabel(TrResource.getS("Vecteur"))); + ListModel flecheListModel = source_.getNewFlecheListModel(); + CtuluComboBoxModelAdapter cb = new CtuluComboBoxModelAdapter(flecheListModel); + cbVitesse_ = new BuComboBox(cb); + cb.setSelectedItem(flecheListModel.getElementAt(0)); + // on s\xE9lectionne la vitesse par defaut + if (flecheListModel.getSize() > 1) { + for (int i = flecheListModel.getSize() - 1; i >= 0; i--) { + TrPostFlecheContent flecheContent = (TrPostFlecheContent) flecheListModel.getElementAt(i); + if (flecheContent.getVar() == H2dVariableType.VITESSE) { + cb.setSelectedItem(flecheListModel.getElementAt(i)); + break; + } + } + } + pn.add(cbVitesse_); + pn.add(new JLabel(TrResource.getS("Pas de temps intial"))); + cbFirstTime_ = new BuComboBox(new CtuluComboBoxModelAdapter(source_.getNewTimeListModel())); + cbFirstTime_.setSelectedIndex(0); + pn.add(cbFirstTime_); + pn.add(new JLabel(TrResource.getS("Dur\xE9e d'int\xE9gration:"))); + pn.add(duree_); + pn.add(new JLabel(TrResource.getS("Finesse:"))); + pn.add(finesse_); + return pn; + } - public String isValid() { - // pas necessaire - // if (listVar_.getSelectedIndex() == -1) { return TrResource.getS("Il faut choisir une variable"); } - // if (cbFirstTime_.getSelectedIndex() == -1) { return TrResource.getS("Il faut choisir un pas de temps"); } - if (!this.integerEditor_.isValueValidFromComponent(finesse_)) { return TrResource - .getS("La finesse doit \xEAtre d\xE9fini par un entier sup\xE9rieur \xE0 1"); } - if (!isSegmentValid()) { return TrResource.getS("Le segment n'est pas d\xE9fini"); } - if (integerEditor_.getValue(nbPoints_) == null) { return TrResource.getS("Pr\xE9ciser le nombre de trajectoires"); } - if (dureeEditor_.isEmpty(duree_)) { return TrResource.getS("La dur\xE9e doit \xEAtre d\xE9finie par un r\xE9el en secondes"); } - if (isMarqueurAvailable() && !doubleMarkEditor_.isValueValidFromComponent(markValue_)) { return TrResource - .getS("Le delta du marqueur doit \xEAtre renseign\xE9"); } - // on doit verifier que la duree est bien comprise dans les pas de temps du projet - if (isTrajectoire()) { - final int duree = getDuree(); - final double timeSelected = source_.getTimeStep(cbFirstTime_.getSelectedIndex()); - final double timeEnd = timeSelected + duree; - final double lastTimeStep = source_.getTimeStep(source_.getNbTimeStep() - 1); - if (timeEnd < source_.getTimeStep(0) || timeEnd > lastTimeStep) { - final String min = "-".concat(source_.getTimeFormatter().format(timeSelected - source_.getTimeStep(0))); - final String max = source_.getTimeFormatter().format(lastTimeStep - timeSelected); - return TrResource.getS("la dur\xE9e du calcul doit \xEAtre comprise entre {0} et {1}", min, max); - } + /** + * retourne l indice du pas de temps. + * + * @return + */ + protected int getSelectedTimeStep() { + return cbFirstTime_.getSelectedIndex(); + } - } - if (getFirsCoordinate().distance(getEndCoordinate()) < MAXDIST) { - boolean res = calque_ - .getCtuluUI() - .question( - TrResource.getS("Calculer une seule trajectoire"), - TrResource - .getS("Les extremit\xE9s du segment sont confondues. Une seule trajectoire sera calcul\xE9e.\nVoulez-vous continuer ?")); - if (!res) { return TrResource.getS("Choisir 2 points diff\xE9rents"); } + /** + * retourne la variable selectionnee + * + * @return + */ + protected TrPostFlecheContent getSelectedVariable() { - } + return (TrPostFlecheContent) cbVitesse_.getSelectedItem(); + } - return null; - } + public String getTitre() { + return TrResource.getS("Lignes de courants") + "/" + TrResource.getS("Trajectoires"); + } - private Integer getDuree() { - return ((Integer) dureeEditor_.getValue(duree_)); - } + protected boolean isLigneCourant() { + return choixMode_.getSelectedIndex() == 0; + } - // EfLigneDeCourantActivity activity_; + protected boolean isTrajectoire() { + return choixMode_.getSelectedIndex() == 1; + } - public void stopTask() { - if (algoCalcul_ != null) algoCalcul_.stop(); + public String isValid() { + // pas necessaire + // if (listVar_.getSelectedIndex() == -1) { return TrResource.getS("Il faut choisir une variable"); } + // if (cbFirstTime_.getSelectedIndex() == -1) { return TrResource.getS("Il faut choisir un pas de temps"); } + if (!this.integerEditor_.isValueValidFromComponent(finesse_)) { return TrResource + .getS("La finesse doit \xEAtre d\xE9fini par un entier sup\xE9rieur \xE0 1"); } + if (!isSegmentValid()) { return TrResource.getS("Le segment n'est pas d\xE9fini"); } + if (integerEditor_.getValue(nbPoints_) == null) { return TrResource.getS("Pr\xE9ciser le nombre de trajectoires"); } + if (dureeEditor_.isEmpty(duree_)) { return TrResource.getS("La dur\xE9e doit \xEAtre d\xE9finie par un r\xE9el en secondes"); } + if (isMarqueurAvailable() && !doubleMarkEditor_.isValueValidFromComponent(markValue_)) { return TrResource + .getS("Le delta du marqueur doit \xEAtre renseign\xE9"); } + // on doit verifier que la duree est bien comprise dans les pas de temps du projet + if (isTrajectoire()) { + final int duree = getDuree(); + final double timeSelected = source_.getTimeStep(cbFirstTime_.getSelectedIndex()); + final double timeEnd = timeSelected + duree; + final double lastTimeStep = source_.getTimeStep(source_.getNbTimeStep() - 1); + if (timeEnd < source_.getTimeStep(0) || timeEnd > lastTimeStep) { + final String min = "-".concat(source_.getTimeFormatter().format(timeSelected - source_.getTimeStep(0))); + final String max = source_.getTimeFormatter().format(lastTimeStep - timeSelected); + return TrResource.getS("la dur\xE9e du calcul doit \xEAtre comprise entre {0} et {1}", min, max); + } - } + } + if (getFirsCoordinate().distance(getEndCoordinate()) < MAXDIST) { + boolean res = calque_ + .getCtuluUI() + .question( + TrResource.getS("Calculer une seule trajectoire"), + TrResource + .getS("Les extremit\xE9s du segment sont confondues. Une seule trajectoire sera calcul\xE9e.\nVoulez-vous continuer ?")); + if (!res) { return TrResource.getS("Choisir 2 points diff\xE9rents"); } - public void dialogClosed() { - lineChooser_.close(); + } - } + return null; + } + private Integer getDuree() { + return ((Integer) dureeEditor_.getValue(duree_)); + } + + // EfLigneDeCourantActivity activity_; + + public void stopTask() { + if (algoCalcul_ != null) algoCalcul_.stop(); + + } + + public void dialogClosed() { + lineChooser_.close(); + + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |