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: <bma...@us...> - 2017-04-25 16:31:27
|
Revision: 9547 http://sourceforge.net/p/fudaa/svn/9547 Author: bmarchan Date: 2017-04-25 16:31:24 +0000 (Tue, 25 Apr 2017) Log Message: ----------- Mise au point de la mise a l'echelle des images. Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoLaunchAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoLaunchAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoLaunchAction.java 2017-04-19 08:35:20 UTC (rev 9546) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoLaunchAction.java 2017-04-25 16:31:24 UTC (rev 9547) @@ -58,17 +58,28 @@ public void act() { try { - CtuluLog ana=new CtuluLog(); - ana.setDesc(getName()); - PivExeLauncher.instance().computeOrthoCoefs(ana, impl.getCurrentProject(), this); - if (ana.containsErrorOrSevereError()) { - impl.error(ana.getResume()); - return; + if (impl.getCurrentProject().isFullOrtho()) { + CtuluLog ana=new CtuluLog(); + ana.setDesc(getName()); + PivExeLauncher.instance().computeOrthoCoefs(ana, impl.getCurrentProject(), this); + if (ana.containsErrorOrSevereError()) { + impl.error(ana.getResume()); + return; + } + PivExeLauncher.instance().computeTransfImg(ana, impl.getCurrentProject(), false, this); + if (ana.containsErrorOrSevereError()) { + impl.error(ana.getResume()); + return; + } } - PivExeLauncher.instance().computeTransfImg(ana, impl.getCurrentProject(), false, this); - if (ana.containsErrorOrSevereError()) { - impl.error(ana.getResume()); - return; + else { + CtuluLog ana=new CtuluLog(); + ana.setDesc(getName()); + PivExeLauncher.instance().computeScalingImages(ana, impl.getCurrentProject(), false, this); + if (ana.containsErrorOrSevereError()) { + impl.error(ana.getResume()); + return; + } } } finally { @@ -94,15 +105,18 @@ * @return true Si toutes les donn\xE9es sont pr\xE9sentes pour un lancement. */ public boolean isValide() { - if (impl.getCurrentProject().getOrthoPoints()==null) { - impl.error(PivResource.getS("Erreur"), PivResource.getS("Aucun point de r\xE9f\xE9rence au sol n'a \xE9t\xE9 d\xE9fini")); - return false; + // Controle des points ortho uniquement pour full ortho. + if (impl.getCurrentProject().isFullOrtho()) { + if (impl.getCurrentProject().getOrthoPoints() == null) { + impl.error(PivResource.getS("Erreur"), PivResource.getS("Aucun point de r\xE9f\xE9rence au sol n'a \xE9t\xE9 d\xE9fini")); + return false; + } + String mes=impl.getCurrentProject().areOrthoPointsOk(); + if (mes != null) { + impl.error(PivResource.getS("Erreur"), mes); + return false; + } } - String mes=impl.getCurrentProject().areOrthoPointsOk(); - if (mes!=null) { - impl.error(PivResource.getS("Erreur"), mes); - return false; - } if (impl.getCurrentProject().getOrthoParameters()==null) { impl.error(PivResource.getS("Erreur"), PivResource.getS("Les param\xE8tres d'orthorectification n'ont pas \xE9t\xE9 donn\xE9s")); return false; Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java 2017-04-19 08:35:20 UTC (rev 9546) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java 2017-04-25 16:31:24 UTC (rev 9547) @@ -1,5 +1,7 @@ package org.fudaa.fudaa.piv.io; +import java.awt.Graphics2D; +import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; @@ -13,11 +15,15 @@ import org.fudaa.ctulu.CtuluLibFile; import org.fudaa.ctulu.CtuluLog; import org.fudaa.ctulu.gui.CtuluTaskOperationGUI; +import org.fudaa.ebli.geometrie.GrMorphisme; +import org.fudaa.ebli.geometrie.GrPoint; +import org.fudaa.ebli.geometrie.GrVecteur; import org.fudaa.fudaa.piv.PivPreferences; import org.fudaa.fudaa.piv.PivResource; import org.fudaa.fudaa.piv.PivUtils; import org.fudaa.fudaa.piv.imageio.PivPGMWriter; import org.fudaa.fudaa.piv.metier.PivFlowResults; +import org.fudaa.fudaa.piv.metier.PivOrthoParameters; import org.fudaa.fudaa.piv.metier.PivOrthoPoint; import org.fudaa.fudaa.piv.metier.PivProject; import org.fudaa.fudaa.piv.metier.PivResultsI; @@ -239,6 +245,111 @@ } /** + * Lance le calcul de transformation des images sources a partir des parametres de scaling + * d'orthorectification. + * + * @param _ana L'analyse pour la tache ex\xE9cut\xE9e. + * @param _prj Le projet. + * @param _task La tache en cours d'execution. + * @param _apercu true : Ne calcule qu'une seule image, pour l'apercu en espace + * r\xE9el. + * @return true : Tout s'est bien d\xE9roul\xE9. + */ + public boolean computeScalingImages(CtuluLog _ana, PivProject _prj, boolean _apercu, CtuluTaskOperationGUI _task) { + File prjRoot=_prj.getRoot(); + File prjImgOut=new File(prjRoot,IMG_TRANSF_DIR); + + // Nettoyage eventuel du repertoire des images transform\xE9es. + prjImgOut.mkdir(); + for (File f : _prj.getTransfImageFiles()) f.delete(); + + try { + // Les images sources + File[] imgInp = _prj.getSrcImageFiles(); + + if (_task!=null) + _task.setProgression(10); + int prog=0; + + PivOrthoParameters params=_prj.getOrthoParameters(); + + int maxIter=(_apercu?1:imgInp.length); + for (int i = 0; i <maxIter ; i++) { + try { + if (_prj.cacheExists(imgInp[i])) { + File cache = _prj.getCacheImageFile(imgInp[i]); + BufferedImage inputBuffer = ImageIO.read(cache); + + int imin=(int) (params.getXmin() / params.getResolution()); + int jmin=(int) (params.getYmin() / params.getResolution()); + int imax=(int) (params.getXmax() / params.getResolution()); + int jmax=(int) (params.getYmax() / params.getResolution()); + BufferedImage outputBuffer=new BufferedImage(imax - imin, jmax - jmin, BufferedImage.TYPE_INT_ARGB); + Graphics2D g=(Graphics2D) outputBuffer.getGraphics(); + + // Pas de transformation + if (_prj.getOrthoParameters().getScalingImgPoints().length == 0) { + g.translate(-imin, inputBuffer.getHeight()-jmin); + g.scale(1, -1); + g.drawImage(inputBuffer, 0, 0, null); + } + + // Translation / rotation + else { + GrPoint p1final = new GrPoint(params.getScalingRealPoints()[0].x_ / params.getResolution(), params.getScalingRealPoints()[0].y_ / params.getResolution(), 0); + + // Calcul de l'angle de rotation depuis les points saisis. + GrVecteur v1=new GrVecteur(params.getScalingImgPoints()[1].x_-params.getScalingImgPoints()[0].x_, params.getScalingImgPoints()[1].y_-params.getScalingImgPoints()[0].y_, 0); + GrVecteur v2=new GrVecteur(params.getScalingRealPoints()[1].x_-params.getScalingRealPoints()[0].x_, params.getScalingRealPoints()[1].y_-params.getScalingRealPoints()[0].y_, 0); + double rotation=v1.getAngleXY(v2); + + // Le premier point saisi dans le repere apr\xE8s rotation + GrMorphisme toRotation=GrMorphisme.rotationZ(rotation); + GrPoint p1rotation = params.getScalingImgPoints()[0].applique(toRotation); + + // La transformation de l'espace de depart vers l'espace final (le 2ieme point n'est pas forcement la ou c'\xE9tait demand\xE9). + GrMorphisme toFinal = GrMorphisme.rotationZ(rotation).composition(GrMorphisme.translation(p1final.x_-p1rotation.x_-imin, p1final.y_-p1rotation.y_-jmin, 0)); + AffineTransform transf = toFinal.creeAffineTransorm2D(); + + g.transform(transf); + // Retournement de l'image (car espace Graphics2D avec (0,0) en haut \xE0 gauche de l'image) + g.translate(0, inputBuffer.getHeight()); + g.scale(1, -1); + g.drawImage(inputBuffer, 0, 0, null); + } + + new PivPGMWriter().write(new File(prjImgOut, "image" + PivUtils.formatOn4Chars(i + 1) + "_transf.pgm"), outputBuffer); + } + + if (_task!=null && _task.isStopRequested()) { + _ana.addError(PivResource.getS("Transformation interrompue")); + return false; + } + } + catch (IOException ex) { + _ana.addError(ex.getMessage()); + return false; + } + prog=((i+1)*90)/maxIter; + if (_task!=null) + _task.setProgression(prog); + + } + FuLog.trace(PivResource.getS("Transformation des images ok.")); + } + + // On signale au projet que les images transform\xE9es ont chang\xE9. + finally { + + _prj.setTransfImagesChanged(_task); + if (_task!=null) + _task.setProgression(100); + } + + return true; + } + + /** * Lance le calcul des coefficients d'orthorectification. * @param _ana L'analyse pour la tache ex\xE9cut\xE9e. * @param _prj Le projet. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-04-19 08:35:22
|
Revision: 9546 http://sourceforge.net/p/fudaa/svn/9546 Author: bmarchan Date: 2017-04-19 08:35:20 +0000 (Wed, 19 Apr 2017) Log Message: ----------- Fix : - Translation FR -> EN - Debit -> Q Modified Paths: -------------- trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG.txt trunk/soft/fudaa-lspiv/distrib/src/dist/templates/template_gauging_en.xlsx trunk/soft/fudaa-lspiv/distrib/src/dist/templates/template_gauging_fr.xlsx trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowInfoPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingParamPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUpdatePanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportGaugingReportAction.java trunk/soft/fudaa-lspiv/src/main/resources/org/fudaa/fudaa/piv/piv_en.fr_txt Modified: trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG.txt =================================================================== --- trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG.txt 2017-04-13 22:32:30 UTC (rev 9545) +++ trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG.txt 2017-04-19 08:35:20 UTC (rev 9546) @@ -1,5 +1,14 @@ Fudaa-LSPIV +Version 1.5.2 du xx/xx/2017 +=========================== + +Corrections +----------- + +- Le nom du fichier rapport sauvegardé (version anglaise) est a présent par défault + <case_name>_report.xlsx. + Version 1.5.1 du 13/04/2017 =========================== Modified: trunk/soft/fudaa-lspiv/distrib/src/dist/templates/template_gauging_en.xlsx =================================================================== (Binary files differ) Modified: trunk/soft/fudaa-lspiv/distrib/src/dist/templates/template_gauging_fr.xlsx =================================================================== (Binary files differ) Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowInfoPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowInfoPanel.java 2017-04-13 22:32:30 UTC (rev 9545) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivFlowInfoPanel.java 2017-04-19 08:35:20 UTC (rev 9546) @@ -58,7 +58,7 @@ case 0: return PivResource.getS("N\xB0"); case 1: - return PivResource.getS("<html>D\xE9bit total (m\xB3/s)</html>"); + return PivResource.getS("<html>Q total (m\xB3/s)</html>"); case 2: return PivResource.getS("<html>Ecart (%)</html>"); case 3: @@ -70,9 +70,9 @@ case 6: return PivResource.getS("<html>Ecart (%)</html>"); case 7: - return PivResource.getS("<html>D\xE9bit mesur\xE9 (m\xB3/s)</html>"); + return PivResource.getS("<html>Q mesur\xE9 (m\xB3/s)</html>"); case 8: - return PivResource.getS("<html>D\xE9bit mesur\xE9 / D\xE9bit total (%)</html>"); + return PivResource.getS("<html>Q mesur\xE9 / Q total (%)</html>"); } } @@ -125,6 +125,7 @@ private class DischargeCellRenderer extends DefaultTableCellRenderer { DecimalFormat fmt = CtuluLib.getDecimalFormat(3); DecimalFormat fmtEcart = CtuluLib.getNoEffectDecimalFormat(); + DecimalFormat fmtQRatio = CtuluLib.getNoEffectDecimalFormat(); public DischargeCellRenderer() { this.setHorizontalAlignment(SwingConstants.RIGHT); @@ -133,6 +134,8 @@ fmtEcart.setMaximumFractionDigits(1); fmtEcart.setMinimumFractionDigits(1); fmtEcart.setPositivePrefix("+"); + fmtQRatio.setMaximumFractionDigits(1); + fmtQRatio.setMinimumFractionDigits(1); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { @@ -142,7 +145,9 @@ if (((Double) value).isNaN()) { this.setText(value.toString()); } - else if (column==2 || column==4 || column==6 || column==8) + else if (column==8) + this.setText(fmtQRatio.format((Double)value)); + else if (column==2 || column==4 || column==6) this.setText(fmtEcart.format((Double)value)); else this.setText(fmt.format((Double)value)); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2017-04-13 22:32:30 UTC (rev 9545) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2017-04-19 08:35:20 UTC (rev 9546) @@ -48,10 +48,12 @@ import org.fudaa.fudaa.commun.impl.FudaaStartupExitPreferencesPanel; import org.fudaa.fudaa.piv.action.PivAutoCacheAction; import org.fudaa.fudaa.piv.action.PivAverageFilteredResultsAction; +import org.fudaa.fudaa.piv.action.PivChooseOrthoModeAction; import org.fudaa.fudaa.piv.action.PivComputeFlowAction; import org.fudaa.fudaa.piv.action.PivComputeLaunchAction; import org.fudaa.fudaa.piv.action.PivDefineComputeParamAction; import org.fudaa.fudaa.piv.action.PivDefineOrthoParamAction; +import org.fudaa.fudaa.piv.action.PivDefineParamScalingAction; import org.fudaa.fudaa.piv.action.PivExportGaugingReportAction; import org.fudaa.fudaa.piv.action.PivExportImagesAction; import org.fudaa.fudaa.piv.action.PivFilterInstantResultsAction; @@ -96,7 +98,7 @@ protected static BuInformationsSoftware isPIV_ = new BuInformationsSoftware(); static { isPIV_.name = "LSPIV"; - isPIV_.version = "1.5.1"; + isPIV_.version = "1.5.2"; isPIV_.date = "2017-04-13"; isPIV_.rights = PivResource.getS("Tous droits r\xE9serv\xE9s")+". CEREMA (c)1999-2017"; isPIV_.license = "GPL2"; @@ -822,15 +824,15 @@ mn.add(new PivAutoCacheAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); mn.addSeparator(PivResource.getS("Orthorectification")); -// mn.add(new PivChooseOrthoModeAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); + mn.add(new PivChooseOrthoModeAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); -// BuMenu mnScaling=new BuMenu(PivResource.getS("Mise \xE0 l'\xE9chelle"),"MN_SCALING"); -// mnScaling.add(new PivDefineParamScalingAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); -// mnScaling.setEnabled(false); -// -// mn.add(mnScaling); + BuMenu mnScaling=new BuMenu(PivResource.getS("Mise \xE0 l'\xE9chelle"),"MN_SCALING"); + mnScaling.add(new PivDefineParamScalingAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); + mnScaling.setEnabled(false); -// BuMenu mnOrtho=new BuMenu(PivResource.getS("Orthorectification"),"MN_ORTHO"); + mn.add(mnScaling); + + BuMenu mnOrtho=new BuMenu(PivResource.getS("Orthorectification"),"MN_ORTHO"); sm=new BuMenu(PivResource.getS("Points de r\xE9f\xE9rence"),"mnGRP"); bt=get2dFrame().getVisuPanel().getOrthoGRPAction().buildMenuItem(EbliComponentFactory.INSTANCE); bt.setText(PivResource.getS("Nouveaux...")); @@ -838,10 +840,10 @@ bt=new PivImportGRPAction((this)).buildMenuItem(EbliComponentFactory.INSTANCE); bt.setText(PivResource.getS("Importer...")); sm.add(bt); -// mnOrtho.add(sm); -// mnOrtho.add(new PivOrthoVerifyGRPAction(this)); - mn.add(sm); - mn.add(new PivOrthoVerifyGRPAction(this)); + mnOrtho.add(sm); + mnOrtho.add(new PivOrthoVerifyGRPAction(this)); +// mn.add(sm); +// mn.add(new PivOrthoVerifyGRPAction(this)); sm=new BuMenu(PivResource.getS("Param\xE8tres de transformation"),"mnTRF",true); bt=new PivDefineOrthoParamAction(this).buildMenuItem(EbliComponentFactory.INSTANCE); @@ -850,10 +852,10 @@ bt=new PivImportOrthoParamAction(this).buildMenuItem(EbliComponentFactory.INSTANCE); bt.setText(PivResource.getS("Importer...")); sm.add(bt); -// mnOrtho.add(sm); -// mnOrtho.setEnabled(false); -// mn.add(mnOrtho); - mn.add(sm); + mnOrtho.add(sm); + mnOrtho.setEnabled(false); + mn.add(mnOrtho); +// mn.add(sm); mn.add(new PivOrthoLaunchAction(this)); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingParamPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingParamPanel.java 2017-04-13 22:32:30 UTC (rev 9545) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingParamPanel.java 2017-04-19 08:35:20 UTC (rev 9546) @@ -49,7 +49,7 @@ add(tbParams, BorderLayout.CENTER); String helpText=PivResource.getS("<b>R\xE9solution</b><p>Vous pouvez d\xE9finir la r\xE9solution soit directement, soit en saisissant des couples de points et moyennation.<p><u>Saisie par couple de points</u> :<br>Saisissez 2 points \xE0 l'\xE9cran, puis renseignez les coordonn\xE9es ou la distance dans la table (suivant l'option choisie)<p><p>"); - helpText+=PivResource.getS("<b>Transformation</b><p>Pour d\xE9finir une transformation, Saisissez 2 points \xE0 l'\xE9cran, puis renseignez les coordonn\xE9es dans la table"); + helpText+=PivResource.getS("<b>Transformation</b><p>Pour d\xE9finir une transformation, saisissez 2 points \xE0 l'\xE9cran, puis renseignez les coordonn\xE9es dans la table"); setHelpText("<html>"+helpText+"</html>"); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUpdatePanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUpdatePanel.java 2017-04-13 22:32:30 UTC (rev 9545) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUpdatePanel.java 2017-04-19 08:35:20 UTC (rev 9546) @@ -35,7 +35,7 @@ setLayout(new VerticalLayout(10)); setBorder(BorderFactory.createEmptyBorder(5, 5, 15, 5)); - final JLabel lbLink=new JLabel(PivResource.getS("<html><a href=\"{0}\">T\xE9l\xE9chargez la version {1} de Fudaa-LSPIV</a></html>", _url.toString(), _version)); + final JLabel lbLink=new JLabel("<html><a href=\"{" + _url.toString() + "}\">" + PivResource.getS("T\xE9l\xE9chargez la version {0} de Fudaa-LSPIV", _version) + "</a></html>"); lbLink.addMouseListener(new MouseAdapter() { public void mouseEntered(MouseEvent me) { lbLink.setCursor(new Cursor(Cursor.HAND_CURSOR)); Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportGaugingReportAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportGaugingReportAction.java 2017-04-13 22:32:30 UTC (rev 9545) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportGaugingReportAction.java 2017-04-19 08:35:20 UTC (rev 9546) @@ -643,7 +643,7 @@ case 8: val=rowIndex==flowResults.length+1? meanMeasuredDisch/meanDisch:flowResults[rowIndex].getValue(-1,ResultType.MEASURED_DISCHARGE)/flowResults[rowIndex].getDischarge(); val*=100; - return format(fmtEcart, val,null); + return format(fmt1Digit, val,null); } } Modified: trunk/soft/fudaa-lspiv/src/main/resources/org/fudaa/fudaa/piv/piv_en.fr_txt =================================================================== --- trunk/soft/fudaa-lspiv/src/main/resources/org/fudaa/fudaa/piv/piv_en.fr_txt 2017-04-13 22:32:30 UTC (rev 9545) +++ trunk/soft/fudaa-lspiv/src/main/resources/org/fudaa/fudaa/piv/piv_en.fr_txt 2017-04-19 08:35:20 UTC (rev 9546) @@ -1,13 +1,12 @@ 1 point de d\xE9part a \xE9t\xE9 ignor\xE9 car il est en dehors du maillage=1 starting point was ignored because it is outside of the mesh -<b>R\xE9solution</b><p>Vous pouvez d\xE9finir la r\xE9solution soit directement, soit en saisissant des couples de points et moyennation.<p><u>Saisie par couple de points</u> \:<br>Saisissez 2 points \xE0 l'\xE9cran, puis renseignez les coordonn\xE9es ou la distance dans la table (suivant l'option choisie)<p><p>=**<b>R\xE9solution</b><p>Vous pouvez d\xE9finir la r\xE9solution soit directement, soit en saisissant des couples de points et moyennation.<p><u>Saisie par couple de points</u> \:<br>Saisissez 2 points \xE0 l'\xE9cran, puis renseignez les coordonn\xE9es ou la distance dans la table (suivant l'option choisie)<p><p>** -<b>Transformation</b><p>Pour d\xE9finir une transformation, Saisissez 2 points \xE0 l'\xE9cran, puis renseignez les coordonn\xE9es dans la table=**<b>Transformation</b><p>Pour d\xE9finir une transformation, Saisissez 2 points \xE0 l'\xE9cran, puis renseignez les coordonn\xE9es dans la table** -<html><a href\=\=**<html><a href\=\** +<b>R\xE9solution</b><p>Vous pouvez d\xE9finir la r\xE9solution soit directement, soit en saisissant des couples de points et moyennation.<p><u>Saisie par couple de points</u> \:<br>Saisissez 2 points \xE0 l'\xE9cran, puis renseignez les coordonn\xE9es ou la distance dans la table (suivant l'option choisie)<p><p>=<b>Resolution</b><p>You can set the resolution either directly or by entering pairs of points and averaging.<p><u>By pair of points</u> \:<br>Enter 2 points on the screen and enter the coordinates or the distance in the table (depending on the option chosen)<p><p> +<b>Transformation</b><p>Pour d\xE9finir une transformation, saisissez 2 points \xE0 l'\xE9cran, puis renseignez les coordonn\xE9es dans la table=<b>Transformation</b><p>To define a transformation, please enter 2 points on the screen and enter the coordinates in the table <html><p>Param\xE8tres de transformation du rep\xE8re<br>initial vers le rep\xE8re de calcul</html>=<html><p>Transformation parameters from initial<br>reference to calculation reference</html> <html>Aire mouill\xE9e (m\xB2)</html>=<html>Wetted area (m\xB2)</html> -<html>D\xE9bit mesur\xE9 (m\xB3/s)</html>=<html>Measur.disch.(m\xB3/s))</html> -<html>D\xE9bit mesur\xE9 / D\xE9bit total (%)</html>=<html>Measur.disch. / Total disch. (%)</html> -<html>D\xE9bit total (m\xB3/s)</html>=<html>Total disch. (m\xB3/s)</html> <html>Ecart (%)</html>=<html>Gap (%)</html> +<html>Q mesur\xE9 (m\xB3/s)</html>=<html>Measured Q (m\xB3/s)</html> +<html>Q mesur\xE9 / Q total (%)</html>=<html>Measured Q / Total Q (%)</html> +<html>Q total (m\xB3/s)</html>=<html>Total Q (m\xB3/s)</html> <html>Une mise \xE0 jour de Fudaa-LSPIV est disponible.<br>Cliquez sur le lien ci-dessous pour la t\xE9l\xE9charger.</html>=<html>An update of Fudaa-LSPIV is available.<br>Click the link below to download it.</html> <html>Vit. moy. (m/s)</html>=<html>Ave. vel. (m/s)</html> <original>=<original> @@ -21,7 +20,7 @@ Aire d'interrogation=Interrogation area Aire de recherche=Search area Aire mouill\xE9e (m\xB2)=Wetted area (m\xB2) -Ajoute un couple par saisie de 2 points=**Ajoute un couple par saisie de 2 points** +Ajoute un couple par saisie de 2 points=Add a pair by entering 2 points Analyse LSPIV=LSPIV analysis Analyse des images ok=Image analysis ok Analyse du couple d'images {0} sur {1}=Analysis of image pair {0} out of {1} @@ -70,7 +69,7 @@ Construction des \xE9l\xE9ments=Elements construction Contour de grille=Grid outline Contour grille=Grid outline -Coordonn\xE9es=**Coordonn\xE9es** +Coordonn\xE9es=Coordinates Correspondance impossible des indices de noeuds lors de la creation du maillage=Impossible connection of nodes indices while creating the mesh Corr\xE9lation=Correlation Cr\xE9ation automatique des images cache=Images cache automatic creation @@ -85,7 +84,7 @@ Des r\xE9sultats instantan\xE9s doivent exister=Instantaneous results must exist Des r\xE9sultats instantan\xE9s filtr\xE9s doivent exister=Filtered instantaneous results must exist Distance d'extrapolation=Extrapolation range -Distance=**Distance** +Distance=Distance Dur\xE9e d'int\xE9gration=Integration duration D\xE9bit mesur\xE9 (m\xB3/s)=Measur.disch.(m\xB3/s) D\xE9bit total (m\xB3/s)=Total disch. (m\xB3/s) @@ -217,7 +216,7 @@ Le r\xE9pertoire des ex\xE9cutables n'a pas encore \xE9t\xE9 pr\xE9cis\xE9 ou n'est pas valide=The executable file directory has not been specified yet or is not valid Le segment n'est pas d\xE9fini=Segment is not defined Les champs de la table sont les zones nomm\xE9es inconnues du syst\xE8me,\nissues du mod\xE8le Excel de rapport. Les zones nomm\xE9es connues sont \:\n\n=The fields in the table are system unknown named areas,\ncoming from the Excel report template. Known named areas are \:\n\n -Les coordonn\xE9es pour les points de transformation doivent \xEAtre renseign\xE9s=**Les coordonn\xE9es pour les points de transformation doivent \xEAtre renseign\xE9s** +Les coordonn\xE9es pour les points de transformation doivent \xEAtre renseign\xE9s=The coordinates for the transformation points must be given Les executables suivants manquent dans le r\xE9pertoire donn\xE9\:\n=The following executable files are missing in the specified directory\:\n Les extremit\xE9s du segment sont confondues. Une seule trajectoire sera calcul\xE9e.\nVoulez-vous continuer ?=Segment extremities are identical. Only one path will be calculated.\nDo you want to continue ? Les images doivent exister=Images must exist @@ -240,7 +239,7 @@ Limites de la composante Vx (m/s)=Vx component magnitude thresholds (m/s) Limites de la composante Vy (m/s)=Vy component magnitude thresholds (m/s) Limites de la norme de vitesse (m/s)=Velocity magnitude thresholds (m/s) -Limites=**Limites** +Limites=Boundaries Liste des images=Images list Liste des r\xE9sultats instantan\xE9s=Instantaneous results list Liste des transects=Transects list @@ -257,8 +256,8 @@ Min norme de vitesse=Min velocity magnitude Min=Min Mise \xE0 jour disponible=Update available -Mise \xE0 l'\xE9chelle=**Mise \xE0 l'\xE9chelle** -Mode d'orthorectification=**Mode d'orthorectification** +Mise \xE0 l'\xE9chelle=Scaling +Mode d'orthorectification=Orthorectification mode Mode=Mode Modification des points de r\xE9f\xE9rence=Modification of the reference points Modification des transects initiaux=Modification of the initial transects @@ -278,7 +277,7 @@ Nouveaux points=New points Nouveaux=New ones N\xB0=# -Orthorectification compl\xE8te=**Orthorectification compl\xE8te** +Orthorectification compl\xE8te=Full orthorectification Orthorectification=Orthorectification Ouverture d'un projet=Opening a project Param\xE8tres de calcul de d\xE9bit=Discharge calculation parameters @@ -285,7 +284,7 @@ Param\xE8tres de calcul=Calculation parameters Param\xE8tres de transformation=Transformation parameters Param\xE8tres du transect=Transect parameters -Param\xE8tres=**Param\xE8tres** +Param\xE8tres=Parameters Particules (res. bruts)=Particles (raw res.) Particules (res. filtr\xE9s)=Particles (filtered res.) Particules (res. moy.)=Particles (ave. res.) @@ -294,7 +293,7 @@ Pas d'interpolation=Interpolation step Pas de r\xE9sultats disponibles pour le trac\xE9 de particules=No results available for particle tracing Pas de temps initial=Initial time step -Pas de translation / rotation=**Pas de translation / rotation** +Pas de translation / rotation=No translation / rotation Points de contr\xF4le=Check points Points de grille=Grid points Points de r\xE9f\xE9rence=Reference points @@ -334,10 +333,10 @@ R\xE9pertoire contenant les executables=Directory containing the executable files R\xE9pertoire destination=Destination directory R\xE9solution (m/pix)=Resolution (m/pix) -R\xE9solution calcul\xE9e=**R\xE9solution calcul\xE9e** -R\xE9solution moyenne calcul\xE9e=**R\xE9solution moyenne calcul\xE9e** -R\xE9solution saisie=**R\xE9solution saisie** -R\xE9solution=**R\xE9solution** +R\xE9solution calcul\xE9e=Computed resolution +R\xE9solution moyenne calcul\xE9e=Average computed resolution +R\xE9solution saisie=Entered resolution +R\xE9solution=Resolution R\xE9sultat \: {0}=Result \: {0} R\xE9sultats bruts=Raw results R\xE9sultats du calcul=Calculation results @@ -350,13 +349,13 @@ R\xE9sultats=Results R\xE9sultats\: point n\xB0=Results\: point # SA en bleu=SA in blue -Saisie des 2 points pour la transformation=**Saisie des 2 points pour la transformation** -Saisie des 2 points pour la translation / rotation=**Saisie des 2 points pour la translation / rotation** -Saisie directe de la r\xE9solution=**Saisie directe de la r\xE9solution** +Saisie des 2 points pour la transformation=Entering 2 points for transformation +Saisie des 2 points pour la translation / rotation=Entering 2 points for translation / rotation +Saisie directe de la r\xE9solution=Direct input of resolution Saisie interactive=Interactive input -Saisie par couples de points /=**Saisie par couples de points /** -Saisir un couple=**Saisir un couple** -Saisir=**Saisir** +Saisie par couples de points /=Input by pairs of points / +Saisir un couple=Enter a pair +Saisir=Enter Saisissez la position du centre=Please click center location Sauvegarde du projet=Saving the project Sim=Sim @@ -366,7 +365,7 @@ Sjp=Sjp Souhaitez vous remplacer les transects initiaux par ceux calcul\xE9s ?=Would you replace initial transects by those calculated ? Stop=Stop -Supprime les couples s\xE9lectionn\xE9s=**Supprime les couples s\xE9lectionn\xE9s** +Supprime les couples s\xE9lectionn\xE9s=Removes selected pairs Supprimer=Delete S\xE9lection d'un fichier GRP=Selection of the GRP file S\xE9lection d'un fichier de grille=Selection of the grid file @@ -407,6 +406,7 @@ Translation=Translation Triangulation=Meshing Type=Type +T\xE9l\xE9chargez la version {0} de Fudaa-LSPIV=Download version {0} of Fudaa-LSPIV Un fichier vid\xE9o doit \xEAtre s\xE9lectionn\xE9 et exister=A video file must be selected and exist Un seul fichier projet est autoris\xE9 pour le transfert=Only one project file is authorized during transfer Un transect doit \xEAtre d\xE9fini et des r\xE9sultats moyenn\xE9s doivent exister=A transect must be specified and averaged results must exist @@ -462,7 +462,7 @@ Zoom initial=Initial zoom Zoomer sur le segment=Zoom on segment la dur\xE9e du calcul doit \xEAtre comprise entre {0} et {1}=Calculation duration must be between {0} and {1} -rapport=**rapport** +rapport=report {0} ligne(s) de courant enlev\xE9e(s) car vide(s)={0} stream line(s) removed because empty {0} points de d\xE9part ont \xE9t\xE9 ignor\xE9s car ils sont en dehors du maillage={0} starting points was ignored because they are outside of the mesh {0} trajectoire(s) enlev\xE9e(s) car vide(s)={0} path(s) remomved because empty This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-04-13 22:32:33
|
Revision: 9545 http://sourceforge.net/p/fudaa/svn/9545 Author: bmarchan Date: 2017-04-13 22:32:30 +0000 (Thu, 13 Apr 2017) Log Message: ----------- Traduction + chmod +x sur ffmpeg.x Modified Paths: -------------- trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG.txt trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG_en.txt trunk/soft/fudaa-lspiv/distrib/src/dist/izpack/fudaa-lspiv.xml trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImportVideoParamPanel.java trunk/soft/fudaa-lspiv/src/main/resources/org/fudaa/fudaa/piv/piv_en.fr_txt Modified: trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG.txt =================================================================== --- trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG.txt 2017-04-13 19:53:59 UTC (rev 9544) +++ trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG.txt 2017-04-13 22:32:30 UTC (rev 9545) @@ -34,6 +34,8 @@ - Le menu Fichier->Exporter->Export des images sources restait grisé jusqu'a ce que le projet contienne des images transformées. + +- Les filtres sur les composantes VX et VY étaient intervertis. Version 1.5.0 du 20/12/2016 =========================== Modified: trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG_en.txt =================================================================== --- trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG_en.txt 2017-04-13 19:53:59 UTC (rev 9544) +++ trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG_en.txt 2017-04-13 22:32:30 UTC (rev 9545) @@ -33,6 +33,8 @@ - Menu File->Export->Export source images export remained disabled till project contains transformed images. +- Filters on the VX and VY components were interchanged. + Version 1.5.0 (2016/12/20) ========================== Modified: trunk/soft/fudaa-lspiv/distrib/src/dist/izpack/fudaa-lspiv.xml =================================================================== --- trunk/soft/fudaa-lspiv/distrib/src/dist/izpack/fudaa-lspiv.xml 2017-04-13 19:53:59 UTC (rev 9544) +++ trunk/soft/fudaa-lspiv/distrib/src/dist/izpack/fudaa-lspiv.xml 2017-04-13 22:32:30 UTC (rev 9545) @@ -10,7 +10,7 @@ <info> <appname>Fudaa-LSPIV</appname> <!-- Impossible de mettre le n de version dans une variable externe ! Dommage... --> - <appversion>1.5.0</appversion> + <appversion>1.5.1</appversion> <authors> <author name="Magali Jodeau (EDF)" email="mag...@ed..."/> <author name="Alexandre Hauet (EDF)" email="ale...@ed..."/> @@ -26,7 +26,7 @@ <variables> <variable name="lspiv-jar" value="fudaa-lspiv-${ENV[LSPIV_JAR]}.jar" /> - <variable name="released-on" value="20/12/2016"/> + <variable name="released-on" value="13/04/2017"/> <!-- Change de r\xE9pertoire de destination de l'installation --> <variable name="TargetPanel.dir" value="${DEFAULT_INSTALL_PATH} ${APP_VER}"/> <!-- Cl\xE9 de registre pour les associations de fichiers --> @@ -144,6 +144,7 @@ <fileset os="unix" dir="../../../../../fudaa/serveurs/lspiv" targetdir="$INSTALL_PATH/exes"> <include name="*.x"/> </fileset> + <executable os="unix" targetfile="$INSTALL_PATH/exes/ffmpeg.x" /> <executable os="unix" targetfile="$INSTALL_PATH/exes/filter.x" /> <executable os="unix" targetfile="$INSTALL_PATH/exes/moy_ec.x" /> <executable os="unix" targetfile="$INSTALL_PATH/exes/ortho_plan.x" /> Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImportVideoParamPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImportVideoParamPanel.java 2017-04-13 19:53:59 UTC (rev 9544) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImportVideoParamPanel.java 2017-04-13 22:32:30 UTC (rev 9545) @@ -74,7 +74,7 @@ }); JPanel pnSampling = new JPanel(); - pnSampling.setBorder(BorderFactory.createTitledBorder(PivResource.getS("Echantillonage"))); + pnSampling.setBorder(BorderFactory.createTitledBorder(PivResource.getS("Echantillonnage"))); pnSampling.setLayout(new BuGridLayout(2, 5, 5, true, false)); pnSampling.add(new JLabel(PivResource.getS("Nombre d'images par secondes:"))); Modified: trunk/soft/fudaa-lspiv/src/main/resources/org/fudaa/fudaa/piv/piv_en.fr_txt =================================================================== --- trunk/soft/fudaa-lspiv/src/main/resources/org/fudaa/fudaa/piv/piv_en.fr_txt 2017-04-13 19:53:59 UTC (rev 9544) +++ trunk/soft/fudaa-lspiv/src/main/resources/org/fudaa/fudaa/piv/piv_en.fr_txt 2017-04-13 22:32:30 UTC (rev 9545) @@ -1,5 +1,15 @@ 1 point de d\xE9part a \xE9t\xE9 ignor\xE9 car il est en dehors du maillage=1 starting point was ignored because it is outside of the mesh +<b>R\xE9solution</b><p>Vous pouvez d\xE9finir la r\xE9solution soit directement, soit en saisissant des couples de points et moyennation.<p><u>Saisie par couple de points</u> \:<br>Saisissez 2 points \xE0 l'\xE9cran, puis renseignez les coordonn\xE9es ou la distance dans la table (suivant l'option choisie)<p><p>=**<b>R\xE9solution</b><p>Vous pouvez d\xE9finir la r\xE9solution soit directement, soit en saisissant des couples de points et moyennation.<p><u>Saisie par couple de points</u> \:<br>Saisissez 2 points \xE0 l'\xE9cran, puis renseignez les coordonn\xE9es ou la distance dans la table (suivant l'option choisie)<p><p>** +<b>Transformation</b><p>Pour d\xE9finir une transformation, Saisissez 2 points \xE0 l'\xE9cran, puis renseignez les coordonn\xE9es dans la table=**<b>Transformation</b><p>Pour d\xE9finir une transformation, Saisissez 2 points \xE0 l'\xE9cran, puis renseignez les coordonn\xE9es dans la table** +<html><a href\=\=**<html><a href\=\** <html><p>Param\xE8tres de transformation du rep\xE8re<br>initial vers le rep\xE8re de calcul</html>=<html><p>Transformation parameters from initial<br>reference to calculation reference</html> +<html>Aire mouill\xE9e (m\xB2)</html>=<html>Wetted area (m\xB2)</html> +<html>D\xE9bit mesur\xE9 (m\xB3/s)</html>=<html>Measur.disch.(m\xB3/s))</html> +<html>D\xE9bit mesur\xE9 / D\xE9bit total (%)</html>=<html>Measur.disch. / Total disch. (%)</html> +<html>D\xE9bit total (m\xB3/s)</html>=<html>Total disch. (m\xB3/s)</html> +<html>Ecart (%)</html>=<html>Gap (%)</html> +<html>Une mise \xE0 jour de Fudaa-LSPIV est disponible.<br>Cliquez sur le lien ci-dessous pour la t\xE9l\xE9charger.</html>=<html>An update of Fudaa-LSPIV is available.<br>Click the link below to download it.</html> +<html>Vit. moy. (m/s)</html>=<html>Ave. vel. (m/s)</html> <original>=<original> A distance constante=At a constant distance A pas de temps constant=At a constant time @@ -11,6 +21,7 @@ Aire d'interrogation=Interrogation area Aire de recherche=Search area Aire mouill\xE9e (m\xB2)=Wetted area (m\xB2) +Ajoute un couple par saisie de 2 points=**Ajoute un couple par saisie de 2 points** Analyse LSPIV=LSPIV analysis Analyse des images ok=Image analysis ok Analyse du couple d'images {0} sur {1}=Analysis of image pair {0} out of {1} @@ -59,6 +70,7 @@ Construction des \xE9l\xE9ments=Elements construction Contour de grille=Grid outline Contour grille=Grid outline +Coordonn\xE9es=**Coordonn\xE9es** Correspondance impossible des indices de noeuds lors de la creation du maillage=Impossible connection of nodes indices while creating the mesh Corr\xE9lation=Correlation Cr\xE9ation automatique des images cache=Images cache automatic creation @@ -73,6 +85,7 @@ Des r\xE9sultats instantan\xE9s doivent exister=Instantaneous results must exist Des r\xE9sultats instantan\xE9s filtr\xE9s doivent exister=Filtered instantaneous results must exist Distance d'extrapolation=Extrapolation range +Distance=**Distance** Dur\xE9e d'int\xE9gration=Integration duration D\xE9bit mesur\xE9 (m\xB3/s)=Measur.disch.(m\xB3/s) D\xE9bit total (m\xB3/s)=Total disch. (m\xB3/s) @@ -80,11 +93,14 @@ D\xE9finir=Define D\xE9finition des points de grille=Definition of grid points D\xE9finition du nombre de points sur la grille=Definition of the number of points in the grid -Ecart (%)=Gap (%) Ecart=Gap +Echantillonnage interrompu=Sampling interrupted +Echantillonnage ok=Sampling ok +Echantillonnage=Sampling Editer la g\xE9om\xE9trie s\xE9lectionn\xE9e=Edit the selected geometry Editer=Edit Erreur d'analyse du couple d'images {0},{1}\:\n=Error while analysing image pair {0},{1}\:\n +Erreur dans l'\xE9chantillonnage\:\n=Error in sampling\:\n Erreur de calcul des coefficients \:\n=Error while calculating the coefficients\:\n Erreur de calcul des r\xE9sultats moyens\:\n=Error while calculating average results\:\n Erreur de calcul des scalaires instantan\xE9s\:\n=Instantaneous scalars calculation error\:\n @@ -109,13 +125,14 @@ Exporter les images transform\xE9es=Export transformed images Ficher Excel d'export=Export Excel file Fichier Excel=Excel file -Fichier GRP=GRP file Fichier bathy=Bathymetry file -Fichier grid=Grid file +Fichier calcul (PIV_param.dat)=Calculation file (PIV_param.dat) +Fichier grille (grid.dat)=Grid file (grid.dat) Fichier manquant=Missing file -Fichier params calcul=Params calculation file -Fichier params transformation=Params transf. file +Fichier points (GRP.dat)=GRP file (GRP.dat) Fichier projet=Project file +Fichier transformation (img_ref.dat)=Transformation file (img_ref.dat) +Fichier vid\xE9o=Video file Fichiers images en niveaux de gris=Gray-scale image files Fichiers images=Images files Filtrage des r\xE9sultats instantan\xE9s=Instantaneous results filtering @@ -129,8 +146,11 @@ Format d'export=Export format Format de fichier invalide \: Format GRP attendu=Wrong file format \: GRP format expected Format de fichier invalide \: Format GRP \xE9tendu attendu=Wrong file format \: extended GRP format expected +Gestion des images sources=Source images management Gestion des images=Images management Grille=Grid +I1=I1 +I2=I2 IA en vert=IA in green IA/SA=IA/SA Ichiro Fujita (Prof.), Universit\xE9 de Kob\xE9=Ichiro Fujita (Prof.), Kobe University @@ -142,16 +162,24 @@ Image ortho=Ortho image Image transform\xE9e=Transformed image Import d'un transect=Import of a transect +Import des images=Import of images Import des param\xE8tres d'orthorectification=Import of orthorectification parameters Import des param\xE8tres de calcul=Import of calculation parameters Import des points de grille=Import of grid points Import des points de r\xE9f\xE9rence=Import of the reference points +Importer les images depuis une vid\xE9o=Import images from video Importer=Import Impossible d'ouvrir le fichier {0}.\nPas d'application ou fichier introuvable=Unable to open file {0}.\nNo application or file not found Indiquer le nom du calque \xE0 cr\xE9er=Enter the name of the layer to create +Information=Information +Instant de d\xE9but=Instant of beginning +Instant de fin=Instant of end Interruption en cours. Merci de patienter=Interruption in progress. Please wait Intervalle de temps=Time step Isolignes / Isosurfaces=Isolines / Isosurfaces +J1=J1 +J2=J2 +L'\xE9chantillonnage s'est termin\xE9e avec succ\xE8s=Sampling completed successfully LSPIV=LSPIV La biblioth\xE8que JAI Image I/O n'est probablement pas install\xE9e.\nElle doit l'\xEAtre dans le r\xE9pertoire des extensions Java.\n\nL'application ne fonctionnera pas correctement=The JAI Image I/O library is probably not installed.\nIt must be installed in the Java extensions directory.\n\nThe application will not work properly La composante Vx d\xE9finie par {0} n'existe pas dans les r\xE9sultats=Vx component defined by {0} does not exist in the results @@ -161,7 +189,9 @@ La pr\xE9cision du trac\xE9 doit \xEAtre d\xE9finie par un entier sup\xE9rieur \xE0 1=The tracing precision must be defined by an integer greater than 1 La r\xE9solution doit \xEAtre un r\xE9el strictement positif=Resolution must be a strictly positive real number La transformation des images s'est termin\xE9e avec succ\xE8s=Image transformation terminated successfully +La valeur de fin doit \xEAtre sup\xE9rieure ou \xE9gale \xE0 la valeur de d\xE9but=The end value must be greater than or equal to the start value Label=Label +Lancement de l'echantillonnage=Starting of sampling Lancement de la v\xE9rification de l'orthorectification=Orthorectification check launched Le calcul s'est termin\xE9 avec succ\xE8s=The calculation terminated successfully Le chemin donn\xE9 n'est pas un r\xE9pertoire ou n'existe pas=The specified path is not a directory or does not exist @@ -187,10 +217,11 @@ Le r\xE9pertoire des ex\xE9cutables n'a pas encore \xE9t\xE9 pr\xE9cis\xE9 ou n'est pas valide=The executable file directory has not been specified yet or is not valid Le segment n'est pas d\xE9fini=Segment is not defined Les champs de la table sont les zones nomm\xE9es inconnues du syst\xE8me,\nissues du mod\xE8le Excel de rapport. Les zones nomm\xE9es connues sont \:\n\n=The fields in the table are system unknown named areas,\ncoming from the Excel report template. Known named areas are \:\n\n +Les coordonn\xE9es pour les points de transformation doivent \xEAtre renseign\xE9s=**Les coordonn\xE9es pour les points de transformation doivent \xEAtre renseign\xE9s** Les executables suivants manquent dans le r\xE9pertoire donn\xE9\:\n=The following executable files are missing in the specified directory\:\n Les extremit\xE9s du segment sont confondues. Une seule trajectoire sera calcul\xE9e.\nVoulez-vous continuer ?=Segment extremities are identical. Only one path will be calculated.\nDo you want to continue ? Les images doivent exister=Images must exist -Les images pgm seront utilis\xE9es pour le calcul dans l'ordre ou elles sont d\xE9finies.\nUtilisez Monter/Descendre pour modifier cet ordre=Pgm images will be used for calculation following their definition order.\nPlease use Up/Down to modify this order +Les images seront utilis\xE9es pour le calcul dans l'ordre ou elles sont d\xE9finies.\nUtilisez Monter/Descendre pour modifier cet ordre=Images will be used for calculation following their definition order.\nPlease use Up/Down to modify this order Les images s\xE9lectionn\xE9es=Selected images Les param\xE8tres d'orthorectification n'ont pas \xE9t\xE9 donn\xE9s=The orthorectification parameters were not specified Les param\xE8tres de calcul n'ont pas \xE9t\xE9 donn\xE9s=The calculation parameters were not specified @@ -209,6 +240,7 @@ Limites de la composante Vx (m/s)=Vx component magnitude thresholds (m/s) Limites de la composante Vy (m/s)=Vy component magnitude thresholds (m/s) Limites de la norme de vitesse (m/s)=Velocity magnitude thresholds (m/s) +Limites=**Limites** Liste des images=Images list Liste des r\xE9sultats instantan\xE9s=Instantaneous results list Liste des transects=Transects list @@ -224,6 +256,9 @@ Min corr\xE9lation=Min correlation Min norme de vitesse=Min velocity magnitude Min=Min +Mise \xE0 jour disponible=Update available +Mise \xE0 l'\xE9chelle=**Mise \xE0 l'\xE9chelle** +Mode d'orthorectification=**Mode d'orthorectification** Mode=Mode Modification des points de r\xE9f\xE9rence=Modification of the reference points Modification des transects initiaux=Modification of the initial transects @@ -230,6 +265,7 @@ Modification du transect=Modification of the transect Moyenne des r\xE9sultats instantan\xE9s filtr\xE9s=Filtered instantaneous results average Moyenne=Average +Ne plus afficher ce dialogue=Do not show this dialog again Niveau d'eau (m)=Water level (m) Nombre d'images par secondes=Number of images per second Nombre de points de r\xE9f\xE9rence < 6, tous les points doivent avoir un Z identique=Number of reference points < 6, all points must have the same Z @@ -242,6 +278,7 @@ Nouveaux points=New points Nouveaux=New ones N\xB0=# +Orthorectification compl\xE8te=**Orthorectification compl\xE8te** Orthorectification=Orthorectification Ouverture d'un projet=Opening a project Param\xE8tres de calcul de d\xE9bit=Discharge calculation parameters @@ -248,6 +285,7 @@ Param\xE8tres de calcul=Calculation parameters Param\xE8tres de transformation=Transformation parameters Param\xE8tres du transect=Transect parameters +Param\xE8tres=**Param\xE8tres** Particules (res. bruts)=Particles (raw res.) Particules (res. filtr\xE9s)=Particles (filtered res.) Particules (res. moy.)=Particles (ave. res.) @@ -256,10 +294,12 @@ Pas d'interpolation=Interpolation step Pas de r\xE9sultats disponibles pour le trac\xE9 de particules=No results available for particle tracing Pas de temps initial=Initial time step +Pas de translation / rotation=**Pas de translation / rotation** Points de contr\xF4le=Check points Points de grille=Grid points Points de r\xE9f\xE9rence=Reference points Points r\xE9f\xE9rence=Reference points +Points=Points Position I=I position Position J et I doivent \xEAtre d\xE9finis simultan\xE9ment ou vides=J and I positions must be defined simultaneously or left empty Position J=J position @@ -294,6 +334,10 @@ R\xE9pertoire contenant les executables=Directory containing the executable files R\xE9pertoire destination=Destination directory R\xE9solution (m/pix)=Resolution (m/pix) +R\xE9solution calcul\xE9e=**R\xE9solution calcul\xE9e** +R\xE9solution moyenne calcul\xE9e=**R\xE9solution moyenne calcul\xE9e** +R\xE9solution saisie=**R\xE9solution saisie** +R\xE9solution=**R\xE9solution** R\xE9sultat \: {0}=Result \: {0} R\xE9sultats bruts=Raw results R\xE9sultats du calcul=Calculation results @@ -306,26 +350,35 @@ R\xE9sultats=Results R\xE9sultats\: point n\xB0=Results\: point # SA en bleu=SA in blue +Saisie des 2 points pour la transformation=**Saisie des 2 points pour la transformation** +Saisie des 2 points pour la translation / rotation=**Saisie des 2 points pour la translation / rotation** +Saisie directe de la r\xE9solution=**Saisie directe de la r\xE9solution** Saisie interactive=Interactive input +Saisie par couples de points /=**Saisie par couples de points /** +Saisir un couple=**Saisir un couple** +Saisir=**Saisir** Saisissez la position du centre=Please click center location Sauvegarde du projet=Saving the project Sim=Sim Sip=Sip +Site de mises \xE0 jour \: {0}\nLa version de Fudaa-LSPIV est \xE0 jour=Updates site \: {0}\nThe Fudaa-LSPIV version is up-to-date Sjm=Sjm Sjp=Sjp Souhaitez vous remplacer les transects initiaux par ceux calcul\xE9s ?=Would you replace initial transects by those calculated ? Stop=Stop +Supprime les couples s\xE9lectionn\xE9s=**Supprime les couples s\xE9lectionn\xE9s** +Supprimer=Delete S\xE9lection d'un fichier GRP=Selection of the GRP file S\xE9lection d'un fichier de grille=Selection of the grid file S\xE9lection d'un fichier de parametres de calcul=Selection of the calculation parameters file S\xE9lection d'un fichier de parametres de transformation=Selection of the transformation parameters file S\xE9lection d'un fichier transect=Selection of the transect file -S\xE9lection des images sources=Selection of the source images S\xE9lectionner au moins un transect=Select at least one transect S\xE9lectionner un transect=Select a transect S\xE9lectionner une g\xE9om\xE9trie=Select a geometry S\xE9lectionnez les images que vous souhaitez exporter, puis le format d'export=Select the images you want to export, then the export format S\xE9lectionnez un calque particule=Please select a particle layer +S\xE9lectionn\xE9 \: Calcule toutes les images pour l'affichage. Ralentit l\xE9g\xE8rement les calculs de vitesses=Selected \: Computes all images for display. Slightly reduces speed calculations Taille de l'aire (pix)\: Doit \xEAtre un entier positif et pair=Area size (pix)\: Must be a positive and even integer Taille de l'aire=Area size Temps=Time @@ -348,11 +401,13 @@ Transformation des vitesses instantan\xE9es vers l'espace r\xE9el=Transformation of instantaneous velocities to real space Transformation interrompue=Transformation interrupted Transformation ok=Transformation ok +Transformation=Transformation Transformations du rep\xE8re initial vers le rep\xE8re de calcul=Transformations from initial reference to calculation reference Transformer les images=Transform the images Translation=Translation Triangulation=Meshing Type=Type +Un fichier vid\xE9o doit \xEAtre s\xE9lectionn\xE9 et exister=A video file must be selected and exist Un seul fichier projet est autoris\xE9 pour le transfert=Only one project file is authorized during transfer Un transect doit \xEAtre d\xE9fini et des r\xE9sultats moyenn\xE9s doivent exister=A transect must be specified and averaged results must exist Une erreur de lecture s'est produite=An error while reading occurred @@ -362,7 +417,6 @@ Verification interrompue=Verification interrupted Vit. instantan\xE9es=Instantaneous vel. Vit. instantan\xE9es\: point n\xB0=Instantaneous vel.\: point # -Vit. moy. (m/s)=Ave. vel. (m/s) Vit. moy. prof=Depth-average vel Vit. surf. inst. brutes=Raw inst. surf. vel. Vit. surf. inst. filtr\xE9es=Filtered inst. surf. vel. @@ -386,6 +440,8 @@ X img=X img X recalcul\xE9=Recalculated X X r\xE9el=Real X +X1=X1 +X2=X2 Xmax doit \xEAtre strictement sup\xE9rieur \xE0 Xmin=Xmax must be strictly greater than Xmin Xmax doit \xEAtre un r\xE9el=Xmax must be a real number Xmax=Xmax @@ -395,6 +451,8 @@ Y img=Y img Y recalcul\xE9=Recalculated Y Y r\xE9el=Real Y +Y1=Y1 +Y2=Y2 Ymax doit \xEAtre strictement sup\xE9rieur \xE0 Ymin=Ymax must be strictly greater than Ymin Ymax doit \xEAtre un r\xE9el=Ymax must be a real number Ymax=Ymax @@ -404,6 +462,7 @@ Zoom initial=Initial zoom Zoomer sur le segment=Zoom on segment la dur\xE9e du calcul doit \xEAtre comprise entre {0} et {1}=Calculation duration must be between {0} and {1} +rapport=**rapport** {0} ligne(s) de courant enlev\xE9e(s) car vide(s)={0} stream line(s) removed because empty {0} points de d\xE9part ont \xE9t\xE9 ignor\xE9s car ils sont en dehors du maillage={0} starting points was ignored because they are outside of the mesh {0} trajectoire(s) enlev\xE9e(s) car vide(s)={0} path(s) remomved because empty This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-04-13 19:54:02
|
Revision: 9544 http://sourceforge.net/p/fudaa/svn/9544 Author: bmarchan Date: 2017-04-13 19:53:59 +0000 (Thu, 13 Apr 2017) Log Message: ----------- Production version 1.5.1 + Changelogs.txt Modified Paths: -------------- trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG.txt trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG_en.txt trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java Modified: trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG.txt =================================================================== --- trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG.txt 2017-03-14 09:15:47 UTC (rev 9543) +++ trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG.txt 2017-04-13 19:53:59 UTC (rev 9544) @@ -1,6 +1,6 @@ Fudaa-LSPIV -Version 1.5.1 du xx/xx/2017 +Version 1.5.1 du 13/04/2017 =========================== Nouveautés Modified: trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG_en.txt =================================================================== --- trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG_en.txt 2017-03-14 09:15:47 UTC (rev 9543) +++ trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG_en.txt 2017-04-13 19:53:59 UTC (rev 9544) @@ -1,6 +1,6 @@ Fudaa-LSPIV -Version 1.5.1 (2016/xx/xx) +Version 1.5.1 (2016/04/13) ========================== New features Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2017-03-14 09:15:47 UTC (rev 9543) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2017-04-13 19:53:59 UTC (rev 9544) @@ -48,12 +48,10 @@ import org.fudaa.fudaa.commun.impl.FudaaStartupExitPreferencesPanel; import org.fudaa.fudaa.piv.action.PivAutoCacheAction; import org.fudaa.fudaa.piv.action.PivAverageFilteredResultsAction; -import org.fudaa.fudaa.piv.action.PivChooseOrthoModeAction; import org.fudaa.fudaa.piv.action.PivComputeFlowAction; import org.fudaa.fudaa.piv.action.PivComputeLaunchAction; import org.fudaa.fudaa.piv.action.PivDefineComputeParamAction; import org.fudaa.fudaa.piv.action.PivDefineOrthoParamAction; -import org.fudaa.fudaa.piv.action.PivDefineParamScalingAction; import org.fudaa.fudaa.piv.action.PivExportGaugingReportAction; import org.fudaa.fudaa.piv.action.PivExportImagesAction; import org.fudaa.fudaa.piv.action.PivFilterInstantResultsAction; @@ -99,7 +97,7 @@ static { isPIV_.name = "LSPIV"; isPIV_.version = "1.5.1"; - isPIV_.date = "2017-02-02"; + isPIV_.date = "2017-04-13"; isPIV_.rights = PivResource.getS("Tous droits r\xE9serv\xE9s")+". CEREMA (c)1999-2017"; isPIV_.license = "GPL2"; isPIV_.languages = "en,fr"; @@ -824,15 +822,15 @@ mn.add(new PivAutoCacheAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); mn.addSeparator(PivResource.getS("Orthorectification")); - mn.add(new PivChooseOrthoModeAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); +// mn.add(new PivChooseOrthoModeAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); - BuMenu mnScaling=new BuMenu(PivResource.getS("Mise \xE0 l'\xE9chelle"),"MN_SCALING"); - mnScaling.add(new PivDefineParamScalingAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); - mnScaling.setEnabled(false); +// BuMenu mnScaling=new BuMenu(PivResource.getS("Mise \xE0 l'\xE9chelle"),"MN_SCALING"); +// mnScaling.add(new PivDefineParamScalingAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); +// mnScaling.setEnabled(false); +// +// mn.add(mnScaling); - mn.add(mnScaling); - - BuMenu mnOrtho=new BuMenu(PivResource.getS("Orthorectification"),"MN_ORTHO"); +// BuMenu mnOrtho=new BuMenu(PivResource.getS("Orthorectification"),"MN_ORTHO"); sm=new BuMenu(PivResource.getS("Points de r\xE9f\xE9rence"),"mnGRP"); bt=get2dFrame().getVisuPanel().getOrthoGRPAction().buildMenuItem(EbliComponentFactory.INSTANCE); bt.setText(PivResource.getS("Nouveaux...")); @@ -840,8 +838,11 @@ bt=new PivImportGRPAction((this)).buildMenuItem(EbliComponentFactory.INSTANCE); bt.setText(PivResource.getS("Importer...")); sm.add(bt); - mnOrtho.add(sm); - mnOrtho.add(new PivOrthoVerifyGRPAction(this)); +// mnOrtho.add(sm); +// mnOrtho.add(new PivOrthoVerifyGRPAction(this)); + mn.add(sm); + mn.add(new PivOrthoVerifyGRPAction(this)); + sm=new BuMenu(PivResource.getS("Param\xE8tres de transformation"),"mnTRF",true); bt=new PivDefineOrthoParamAction(this).buildMenuItem(EbliComponentFactory.INSTANCE); bt.setText(PivResource.getS("D\xE9finir...")); @@ -849,11 +850,11 @@ bt=new PivImportOrthoParamAction(this).buildMenuItem(EbliComponentFactory.INSTANCE); bt.setText(PivResource.getS("Importer...")); sm.add(bt); - mnOrtho.add(sm); - mnOrtho.setEnabled(false); +// mnOrtho.add(sm); +// mnOrtho.setEnabled(false); +// mn.add(mnOrtho); + mn.add(sm); - mn.add(mnOrtho); - mn.add(new PivOrthoLaunchAction(this)); mn.addSeparator(PivResource.getS("Analyse LSPIV")); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-03-13 21:46:38
|
Revision: 9542 http://sourceforge.net/p/fudaa/svn/9542 Author: bmarchan Date: 2017-03-13 21:46:36 +0000 (Mon, 13 Mar 2017) Log Message: ----------- LSPIV : Saisie des parametres de scaling Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingTransformationPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineParamScalingAction.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingParamPanel.form trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingParamPanel.java Copied: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingParamPanel.form (from rev 9538, trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOrthoParamPanel.form) =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingParamPanel.form (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingParamPanel.form 2017-03-13 21:46:36 UTC (rev 9542) @@ -0,0 +1,130 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<Form version="1.3" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"> + <Properties> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo"> + <EmptyBorder/> + </Border> + </Property> + </Properties> + <AuxValues> + <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/> + <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> + <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/> + <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> + <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> + </AuxValues> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="pnPositions" alignment="0" max="32767" attributes="0"/> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="pnPositions" alignment="0" max="32767" attributes="0"/> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Container class="javax.swing.JPanel" name="pnPositions"> + <Properties> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo"> + <TitledBorder title="Position des coins (m)"/> + </Border> + </Property> + </Properties> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="lbXmin" alignment="0" min="-2" max="-2" attributes="0"/> + <Component id="lbYmin" alignment="0" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace min="-2" pref="8" max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="tfXmin" pref="83" max="32767" attributes="1"/> + <Component id="tfYmin" alignment="0" pref="76" max="32767" attributes="0"/> + </Group> + <EmptySpace type="unrelated" max="-2" attributes="0"/> + <Group type="103" groupAlignment="1" attributes="0"> + <Component id="lbYmax" min="-2" max="-2" attributes="0"/> + <Component id="lbXmax" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="tfXmax" pref="85" max="32767" attributes="1"/> + <Component id="tfYmax" alignment="0" pref="78" max="32767" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="lbXmin" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="tfXmin" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lbXmax" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="tfXmax" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="lbYmax" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="tfYmax" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lbYmin" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="tfYmin" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="32767" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JLabel" name="lbXmin"> + <Properties> + <Property name="text" type="java.lang.String" value="Xmin:"/> + </Properties> + </Component> + <Component class="javax.swing.JTextField" name="tfXmin"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.modules.form.RADConnectionPropertyEditor"> + <Connection code="new Dimension(50,tfXmin.getPreferredSize().height)" type="code"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lbXmax"> + <Properties> + <Property name="text" type="java.lang.String" value="Xmax:"/> + </Properties> + </Component> + <Component class="javax.swing.JTextField" name="tfXmax"> + </Component> + <Component class="javax.swing.JLabel" name="lbYmax"> + <Properties> + <Property name="text" type="java.lang.String" value="Ymax:"/> + </Properties> + </Component> + <Component class="javax.swing.JTextField" name="tfYmax"> + </Component> + <Component class="javax.swing.JLabel" name="lbYmin"> + <Properties> + <Property name="text" type="java.lang.String" value="Ymin:"/> + </Properties> + </Component> + <Component class="javax.swing.JTextField" name="tfYmin"> + </Component> + </SubComponents> + </Container> + </SubComponents> +</Form> Copied: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingParamPanel.java (from rev 9538, trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOrthoParamPanel.java) =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingParamPanel.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingParamPanel.java 2017-03-13 21:46:36 UTC (rev 9542) @@ -0,0 +1,235 @@ +package org.fudaa.fudaa.piv; + +import java.awt.Dimension; + +import org.fudaa.ctulu.gui.CtuluDialogPanel; +import org.fudaa.fudaa.piv.metier.PivOrthoParameters; + +/** + * Un panneau de saisie des param\xE8tres de scaling. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id$ + */ +public class PivScalingParamPanel extends CtuluDialogPanel { + PivImplementation impl_; + + /** + * Constructeur. + */ + public PivScalingParamPanel(PivImplementation _impl) { + impl_=_impl; + initComponents(); + customize(); + + PivOrthoParameters params=impl_.getCurrentProject().getOrthoParameters(); + if (params==null) + params=new PivOrthoParameters(); + setParams(params); + } + + private void customize() { + lbXmin.setText(PivResource.getS("Xmin: ")); + lbYmin.setText(PivResource.getS("Ymin: ")); + lbXmax.setText(PivResource.getS("Xmax: ")); + lbYmax.setText(PivResource.getS("Ymax: ")); + pnPositions.setBorder(javax.swing.BorderFactory.createTitledBorder(PivResource.getS("Position des coins (m)"))); + } + + /** + * Rempli le panneau depuis les donn\xE9es du projet. + * @param _params L'objet m\xE9tier pour l'orthorectification. + */ + public void setParams(PivOrthoParameters _params) { + tfXmin.setText("" + _params.getXmin()); + tfXmax.setText("" + _params.getXmax()); + tfYmin.setText("" + _params.getYmin()); + tfYmax.setText("" + _params.getYmax()); + } + + /** + * Met a jour les parametres d'ortho rectification donn\xE9s. + * @param _params Les parametres d'ortho rectification. + */ + public void retrieveParams(PivOrthoParameters _params) { + _params.setXmin(Double.parseDouble(tfXmin.getText().trim())); + _params.setYmin(Double.parseDouble(tfYmin.getText().trim())); + _params.setXmax(Double.parseDouble(tfXmax.getText().trim())); + _params.setYmax(Double.parseDouble(tfYmax.getText().trim())); + } + + @Override + public boolean isDataValid() { + boolean bok=false; + double xmin=0; + double xmax=0; + double ymin=0; + double ymax=0; + + try { + bok=false; + xmin=Double.parseDouble(tfXmin.getText().trim()); + bok=true; + } + catch (NumberFormatException _exc) {} + if (!bok) { + setErrorText(PivResource.getS("Xmin doit \xEAtre un r\xE9el")); + return false; + } + + try { + bok=false; + xmax=Double.parseDouble(tfXmax.getText().trim()); + bok=true; + } + catch (NumberFormatException _exc) {} + if (!bok) { + setErrorText(PivResource.getS("Xmax doit \xEAtre un r\xE9el")); + return false; + } + + if (xmin>=xmax) { + setErrorText(PivResource.getS("Xmax doit \xEAtre strictement sup\xE9rieur \xE0 Xmin")); + return false; + } + + try { + bok=false; + ymin=Double.parseDouble(tfYmin.getText().trim()); + bok=true; + } + catch (NumberFormatException _exc) {} + if (!bok) { + setErrorText(PivResource.getS("Ymin doit \xEAtre un r\xE9el")); + return false; + } + + try { + bok=false; + ymax=Double.parseDouble(tfYmax.getText().trim()); + bok=true; + } + catch (NumberFormatException _exc) {} + if (!bok) { + setErrorText(PivResource.getS("Ymax doit \xEAtre un r\xE9el")); + return false; + } + + if (ymin>=ymax) { + setErrorText(PivResource.getS("Ymax doit \xEAtre strictement sup\xE9rieur \xE0 Ymin")); + return false; + } + + return true; + } + + /** + * Surcharg\xE9 pour pouvoir pr\xE9visualiser l'image transform\xE9e sans sortir du + * dialogue. + */ + @Override + public void apply() { + PivOrthoParameters params=impl_.getCurrentProject().getOrthoParameters(); + if (params==null) + params=new PivOrthoParameters(); + + retrieveParams(params); + impl_.getCurrentProject().setOrthoParameters(params); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents + private void initComponents() { + + pnPositions = new javax.swing.JPanel(); + lbXmin = new javax.swing.JLabel(); + tfXmin = new javax.swing.JTextField(); + lbXmax = new javax.swing.JLabel(); + tfXmax = new javax.swing.JTextField(); + lbYmax = new javax.swing.JLabel(); + tfYmax = new javax.swing.JTextField(); + lbYmin = new javax.swing.JLabel(); + tfYmin = new javax.swing.JTextField(); + + setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1)); + + pnPositions.setBorder(javax.swing.BorderFactory.createTitledBorder("Position des coins (m)")); + + lbXmin.setText("Xmin:"); + + tfXmin.setPreferredSize(new Dimension(50,tfXmin.getPreferredSize().height)); + + lbXmax.setText("Xmax:"); + + lbYmax.setText("Ymax:"); + + lbYmin.setText("Ymin:"); + + javax.swing.GroupLayout pnPositionsLayout = new javax.swing.GroupLayout(pnPositions); + pnPositions.setLayout(pnPositionsLayout); + pnPositionsLayout.setHorizontalGroup( + pnPositionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(pnPositionsLayout.createSequentialGroup() + .addGroup(pnPositionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(lbXmin) + .addComponent(lbYmin)) + .addGap(8, 8, 8) + .addGroup(pnPositionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(tfXmin, javax.swing.GroupLayout.DEFAULT_SIZE, 83, Short.MAX_VALUE) + .addComponent(tfYmin, javax.swing.GroupLayout.DEFAULT_SIZE, 76, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(pnPositionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(lbYmax) + .addComponent(lbXmax)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(pnPositionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(tfXmax, javax.swing.GroupLayout.DEFAULT_SIZE, 85, Short.MAX_VALUE) + .addComponent(tfYmax, javax.swing.GroupLayout.DEFAULT_SIZE, 78, Short.MAX_VALUE)) + .addContainerGap()) + ); + pnPositionsLayout.setVerticalGroup( + pnPositionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(pnPositionsLayout.createSequentialGroup() + .addGroup(pnPositionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lbXmin) + .addComponent(tfXmin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lbXmax) + .addComponent(tfXmax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(pnPositionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lbYmax) + .addComponent(tfYmax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lbYmin) + .addComponent(tfYmin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(pnPositions, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(pnPositions, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + ); + }// </editor-fold>//GEN-END:initComponents + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLabel lbXmax; + private javax.swing.JLabel lbXmin; + private javax.swing.JLabel lbYmax; + private javax.swing.JLabel lbYmin; + private javax.swing.JPanel pnPositions; + private javax.swing.JTextField tfXmax; + private javax.swing.JTextField tfXmin; + private javax.swing.JTextField tfYmax; + private javax.swing.JTextField tfYmin; + // End of variables declaration//GEN-END:variables +} Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingTransformationPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingTransformationPanel.java 2017-03-13 16:37:57 UTC (rev 9541) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingTransformationPanel.java 2017-03-13 21:46:36 UTC (rev 9542) @@ -289,6 +289,9 @@ } public void setParams(PivOrthoParameters _params) { + if (_params==null) + return; + GrPoint[] imgPoints = _params.getScalingImgPoints(); GrPoint[] realPoints = _params.getScalingRealPoints(); @@ -364,6 +367,9 @@ @Override public void apply() { PivOrthoParameters params=prj_.getOrthoParameters(); + if (params==null) + params = new PivOrthoParameters(); + retrieveParams(params); prj_.setOrthoParameters(params); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineParamScalingAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineParamScalingAction.java 2017-03-13 16:37:57 UTC (rev 9541) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineParamScalingAction.java 2017-03-13 21:46:36 UTC (rev 9542) @@ -8,19 +8,12 @@ package org.fudaa.fudaa.piv.action; import java.awt.event.ActionEvent; -import java.io.File; -import org.fudaa.ctulu.CtuluLog; import org.fudaa.ctulu.gui.CtuluDialog; -import org.fudaa.ctulu.gui.CtuluTaskOperationGUI; import org.fudaa.ebli.commun.EbliActionSimple; -import org.fudaa.fudaa.piv.PivExePanel; import org.fudaa.fudaa.piv.PivImplementation; -import org.fudaa.fudaa.piv.PivManageOriginalFilesPanel; -import org.fudaa.fudaa.piv.PivProgressionPanel; import org.fudaa.fudaa.piv.PivResource; -import org.fudaa.fudaa.piv.PivVisuPanel; -import org.fudaa.fudaa.piv.io.PivExeLauncher; +import org.fudaa.fudaa.piv.PivScalingParamPanel; /** * Une action pour selectionner et reconditionner les images sources. @@ -30,7 +23,7 @@ */ public class PivDefineParamScalingAction extends EbliActionSimple { PivImplementation impl; - PivManageOriginalFilesPanel pnMngImages; + PivScalingParamPanel pnParams; CtuluDialog diProgress_; /** @@ -54,60 +47,9 @@ return; } - if (!PivExeLauncher.instance().areExeOK()) { - PivExePanel pnExe = new PivExePanel(); - - // TODO BM : Verifier que les nouvelles images sont compatibles avec les donn\xE9es d'ortho ou message. - - if (!pnExe.afficheModaleOk(impl.getFrame(), PivResource.getS("R\xE9pertoire contenant les executables"))) { - return; - } - } - // Selection des images - if (pnMngImages==null) - pnMngImages = new PivManageOriginalFilesPanel(impl); - pnMngImages.setRootProject(impl.getCurrentProject().getRoot()); - pnMngImages.setFiles(impl.getCurrentProject().getSrcImageFiles()); - if (!pnMngImages.afficheModaleOk(impl.getFrame(), PivResource.getS("Gestion des images"), CtuluDialog.OK_CANCEL_OPTION)) { - return; - } - - final File[] srcImgFiles=pnMngImages.getFiles(); - - // Le reconditionnement des images. - CtuluTaskOperationGUI r=new CtuluTaskOperationGUI(impl, PivResource.getS("Traitement des images sources")) { - - @Override - public void act() { - try { - CtuluLog ana=new CtuluLog(); - ana.setDesc(getName()); - impl.getCurrentProject().setSrcImagesFiles(srcImgFiles, this, ana); - - if (ana.containsErrorOrSevereError()) { - impl.error(ana.getResume()); - return; - } - - } - finally { - diProgress_.dispose(); - } - } - }; - - PivProgressionPanel pnProgress_=new PivProgressionPanel(r); - diProgress_ = pnProgress_.createDialog(impl.getParentComponent()); - diProgress_.setOption(CtuluDialog.ZERO_OPTION); - diProgress_.setDefaultCloseOperation(CtuluDialog.DO_NOTHING_ON_CLOSE); - diProgress_.setTitle(r.getName()); - - r.start(); - diProgress_.afficheDialogModal(); - - impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_ORIGINAL_VIEW); - impl.get2dFrame().restaurer(); + pnParams = new PivScalingParamPanel(impl); + pnParams.affiche(impl.getFrame(), PivResource.getS("Param\xE8tres"), CtuluDialog.OK_CANCEL_OPTION); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-03-13 09:54:48
|
Revision: 9540 http://sourceforge.net/p/fudaa/svn/9540 Author: bmarchan Date: 2017-03-13 09:54:45 +0000 (Mon, 13 Mar 2017) Log Message: ----------- Fix : Nettoyage des fichiers existants avant sauvegarde Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2017-03-13 09:26:10 UTC (rev 9539) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2017-03-13 09:54:45 UTC (rev 9540) @@ -758,6 +758,8 @@ /** * Definit que le projet est en full ortho (ou en mise \xE0 l'\xE9chelle). + * En passage mise \xE0 l'echelle, les points d'orthorectification sont supprim\xE9s + * * @param _b True : Full ortho, False : Mise \xE0 l'echelle. */ public void setFullOrtho(boolean _b) { @@ -769,6 +771,8 @@ } else { coeffs=new double[0]; + // Suppression des points d'orthorectification + setOrthoPoints(null); } isModified=true; Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java 2017-03-13 09:26:10 UTC (rev 9539) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java 2017-03-13 09:54:45 UTC (rev 9540) @@ -519,21 +519,24 @@ _prog.setDesc(PivResource.getS("Sauvegarde du projet")); // Le fichier GRP + File grpFile=new File(prj_.getOutputDir(),"GRP.dat"); + grpFile.delete(); if (prj_.orthoPoints!=null) { - File grpFile=new File(prj_.getOutputDir(),"GRP.dat"); new PivGRPWriter().write(prj_.orthoPoints, grpFile, null); } // Le fichier des coefficients ortho + File coeffFile=new File(prj_.getOutputDir(),"coeff.dat"); + coeffFile.delete(); if (prj_.coeffs!=null) { - File coeffFile=new File(prj_.getOutputDir(),"coeff.dat"); new PivCoeffWriter().write(prj_.coeffs, coeffFile, null); } // Les fichiers de parametres ortho + File imgRefFile=new File(prj_.getOutputDir(),"img_ref.dat"); + imgRefFile.delete(); if (prj_.orthoParams!=null) { Object[] params=new Object[]{prj_.orthoParams,prj_.getSrcImageSize()}; - File imgRefFile=new File(prj_.getOutputDir(),"img_ref.dat"); new PivImgRefWriter().write(params, imgRefFile, null); File hFile=new File(prj_.getOutputDir(),"h.dat"); @@ -541,21 +544,24 @@ } // Le fichiers de parametres de calcul + File paramFile=new File(prj_.getOutputDir(),"PIV_param.dat"); + paramFile.delete(); if (prj_.computeParams!=null) { Object[] params=new Object[]{prj_.computeParams,new PivTransectParams(),prj_.getTransfImageSize()}; - File paramFile=new File(prj_.getOutputDir(),"PIV_param.dat"); new PivParamWriter().write(params, paramFile, null); } // Le contour de grille + File cntGridFile=new File(prj_.getOutputDir(),"grid_param.dat"); + cntGridFile.delete(); if (prj_.cntGrid!=null) { - File cntGridFile=new File(prj_.getOutputDir(),"grid_param.dat"); new PivGridParamWriter().write(prj_.cntGrid, cntGridFile, null); } // Le fichiers des points de grille + File gridFile=new File(prj_.getOutputDir(),"grid.dat"); + gridFile.delete(); if (prj_.computeGrid!=null) { - File gridFile=new File(prj_.getOutputDir(),"grid.dat"); new PivGridWriter().write(prj_.computeGrid, gridFile, null); } @@ -585,6 +591,8 @@ * @param _all Tous les r\xE9sultats sont list\xE9s, sinon seulement ceux pour le calcul de moyenne. */ public void saveInstantResultsList(boolean _all) { + File listFile = new File(prj_.getOutputDir(),"list_avg.dat"); + listFile.delete(); File[] instantVelFiles=prj_.getRawVelocityFiles(); // Pas de r\xE9sultats instantan\xE9s @@ -593,7 +601,7 @@ // Cr\xE9ation du fichier contenant la liste des fichiers piv.dat obtenus par calcul. PrintWriter out=null; try { - out = new PrintWriter(new File(prj_.getOutputDir(),"list_avg.dat")); + out = new PrintWriter(listFile); // En principe, le nb de fichiers existants dans le repertoire devrait etre le meme // que la taille du tableau usedInstantResults. Ce n'est pas toujours le cas, // par exemple quand le calcul s'est mal pass\xE9. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-03-13 09:26:13
|
Revision: 9539 http://sourceforge.net/p/fudaa/svn/9539 Author: bmarchan Date: 2017-03-13 09:26:10 +0000 (Mon, 13 Mar 2017) Log Message: ----------- Ajoute le choix du mode d'orthorectification Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivCoeffReader.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOrthoModePanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChooseOrthoModeAction.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2017-02-16 22:21:18 UTC (rev 9538) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2017-03-13 09:26:10 UTC (rev 9539) @@ -7,7 +7,6 @@ */ package org.fudaa.fudaa.piv; -import java.awt.Color; import java.awt.Desktop; import java.awt.Dimension; import java.awt.Point; @@ -14,7 +13,6 @@ import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.beans.PropertyVetoException; import java.io.File; import java.io.IOException; @@ -33,7 +31,6 @@ import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JOptionPane; -import javax.swing.JPanel; import javax.swing.SwingUtilities; import javax.swing.TransferHandler; @@ -51,6 +48,7 @@ import org.fudaa.fudaa.commun.impl.FudaaStartupExitPreferencesPanel; import org.fudaa.fudaa.piv.action.PivAutoCacheAction; import org.fudaa.fudaa.piv.action.PivAverageFilteredResultsAction; +import org.fudaa.fudaa.piv.action.PivChooseOrthoModeAction; import org.fudaa.fudaa.piv.action.PivComputeFlowAction; import org.fudaa.fudaa.piv.action.PivComputeLaunchAction; import org.fudaa.fudaa.piv.action.PivDefineComputeParamAction; @@ -75,7 +73,6 @@ import com.memoire.bu.BuAbstractPreferencesPanel; import com.memoire.bu.BuBrowserPreferencesPanel; -import com.memoire.bu.BuCheckBoxMenuItem; import com.memoire.bu.BuDesktopPreferencesPanel; import com.memoire.bu.BuInformationsSoftware; import com.memoire.bu.BuLanguagePreferencesPanel; @@ -84,7 +81,6 @@ import com.memoire.bu.BuMenuItem; import com.memoire.bu.BuMenuRecentFiles; import com.memoire.bu.BuPreferences; -import com.memoire.bu.BuRadioButtonMenuItem; import com.memoire.bu.BuRegistry; import com.memoire.bu.BuResource; import com.memoire.bu.BuUserPreferencesPanel; @@ -222,6 +218,9 @@ setEnabledForAction("EXPORT_GAUGING_REPORT", bprjOpen); setEnabledForAction("SCALING_PARAMS", bprjHasSrcImg); setEnabledForAction("SCALING_RESOLUTION", bprjHasSrcImg); + setEnabledForAction("DEFINE_ORTHO_MODE", bprjHasSrcImg); + setEnabledForAction("MN_SCALING", bprjHasSrcImg && !project.isFullOrtho()); + setEnabledForAction("MN_ORTHO", bprjHasSrcImg && project.isFullOrtho()); refreshTitle(); } @@ -827,14 +826,16 @@ mn.add(new PivAutoCacheAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); mn.addSeparator(PivResource.getS("Orthorectification")); + mn.add(new PivChooseOrthoModeAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); - BuMenu mnMae=new BuMenu(PivResource.getS("Mise \xE0 l'\xE9chelle"),"MAE"); - mnMae.add(new PivDefineResolutionScalingAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); - mnMae.add(new PivDefineParamScalingAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); + BuMenu mnScaling=new BuMenu(PivResource.getS("Mise \xE0 l'\xE9chelle"),"MN_SCALING"); + mnScaling.add(new PivDefineResolutionScalingAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); + mnScaling.add(new PivDefineParamScalingAction(this).buildMenuItem(EbliComponentFactory.INSTANCE)); + mnScaling.setEnabled(false); - mn.add(mnMae); + mn.add(mnScaling); - BuMenu mnOrtho=new BuMenu(PivResource.getS("Orthorectification"),"ORTHO"); + BuMenu mnOrtho=new BuMenu(PivResource.getS("Orthorectification"),"MN_ORTHO"); sm=new BuMenu(PivResource.getS("Points de r\xE9f\xE9rence"),"mnGRP"); bt=get2dFrame().getVisuPanel().getOrthoGRPAction().buildMenuItem(EbliComponentFactory.INSTANCE); bt.setText(PivResource.getS("Nouveaux...")); @@ -852,6 +853,8 @@ bt.setText(PivResource.getS("Importer...")); sm.add(bt); mnOrtho.add(sm); + mnOrtho.setEnabled(false); + mn.add(mnOrtho); mn.add(new PivOrthoLaunchAction(this)); @@ -985,9 +988,6 @@ * @return True : Une mise a jour existe. */ public boolean checkForUpdate(boolean _showHideButton) { - - isPIV_.update=System.getProperty("piv.update", "https://forge.irstea.fr/projects/fudaa-lspiv/files"); - try { URL urlFlag=new URL(isPIV_.update+"/fudaa-lspiv-lastversion.txt"); if (FuLib.existsURL(urlFlag)) { Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOrthoModePanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOrthoModePanel.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOrthoModePanel.java 2017-03-13 09:26:10 UTC (rev 9539) @@ -0,0 +1,58 @@ +package org.fudaa.fudaa.piv; + +import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; +import javax.swing.JRadioButton; +import javax.swing.border.EtchedBorder; + +import org.fudaa.ctulu.gui.CtuluDialogPanel; + +import com.memoire.bu.BuVerticalLayout; + +/** + * Un panneau de saisie du mode d'orthorectification. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id: PivTransectParamPanel.java 9500 2017-01-09 17:22:31Z bmarchan $ + */ +public class PivOrthoModePanel extends CtuluDialogPanel { + PivImplementation impl_; + JRadioButton rbScaling_; + JRadioButton rbOrtho_; + + /** + * Constructeur. + */ + public PivOrthoModePanel(PivImplementation _impl) { + impl_=_impl; + customize(); + } + + private void customize() { + rbScaling_ = new JRadioButton(PivResource.getS("Mise \xE0 l'\xE9chelle")); + rbOrtho_ = new JRadioButton(PivResource.getS("Orthorectification compl\xE8te")); + rbOrtho_.setSelected(true); + ButtonGroup bg=new ButtonGroup(); + bg.add(rbScaling_); + bg.add(rbOrtho_); + + setLayout(new BuVerticalLayout(2)); + setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); + add(rbScaling_); + add(rbOrtho_); + } + + public void setModeFullOrtho(boolean _b) { + if (_b) { + rbOrtho_.setSelected(true); + } + else { + rbScaling_.setSelected(true); + } + + } + + public boolean isModeFullOrtho() { + return rbOrtho_.isSelected(); + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOrthoModePanel.java ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChooseOrthoModeAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChooseOrthoModeAction.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChooseOrthoModeAction.java 2017-03-13 09:26:10 UTC (rev 9539) @@ -0,0 +1,51 @@ +/* + * @creation 3 juil. 2008 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.piv.action; + +import java.awt.event.ActionEvent; + +import org.fudaa.ctulu.gui.CtuluDialog; +import org.fudaa.ebli.commun.EbliActionSimple; +import org.fudaa.fudaa.piv.PivImplementation; +import org.fudaa.fudaa.piv.PivOrthoModePanel; +import org.fudaa.fudaa.piv.PivResource; + +/** + * Une action pour choisir le mode op\xE9ratoire de l'othorectification. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id: PivTransectParamAction.java 9132 2015-06-16 14:54:20Z bmarchan $ + */ +public class PivChooseOrthoModeAction extends EbliActionSimple { + PivImplementation impl; + + public PivChooseOrthoModeAction(PivImplementation _impl) { + super(PivResource.getS("Mode d'orthorectification..."), null, "DEFINE_ORTHO_MODE"); + impl=_impl; + setEnabled(false); + } + + /** + * Affiche le panneau des param\xE8tres de calcul. + * @param _e L'evenement pour l'action. + */ + @Override + public void actionPerformed(final ActionEvent _e) { + PivOrthoModePanel pn=new PivOrthoModePanel(impl); + pn.setModeFullOrtho(impl.getCurrentProject().isFullOrtho()); + + if (pn.afficheModale(impl.getFrame(), PivResource.getS("Mode d'orthorectification"),CtuluDialog.OK_CANCEL_OPTION)==CtuluDialog.OK_OPTION) { + impl.getCurrentProject().setFullOrtho(pn.isModeFullOrtho()); + } + } + + @Override + public String getEnableCondition() { + return PivResource.getS("Il doit exister au moins une image source"); + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivChooseOrthoModeAction.java ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivCoeffReader.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivCoeffReader.java 2017-02-16 22:21:18 UTC (rev 9538) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivCoeffReader.java 2017-03-13 09:26:10 UTC (rev 9539) @@ -14,6 +14,8 @@ import org.fudaa.dodico.fortran.FileCharSimpleReaderAbstract; import org.fudaa.fudaa.piv.PivResource; +import gnu.trove.TDoubleArrayList; + /** * Un lecteur pour le fichier des coefficients d'orthorectification. * @@ -45,7 +47,7 @@ * @return les infos non bloquantes. */ private synchronized double[] readCoeffs() { - double[] coeffs=new double[0]; + TDoubleArrayList coeffs=new TDoubleArrayList(); if (super.in_ == null) { analyze_.addError(PivResource.getS("Flux d'entr\xE9e non trouv\xE9"), 0); @@ -59,15 +61,23 @@ in_.setJumpBlankLine(true); - // Nombre de coeffs in_.readFields(); - coeffs=new double[in_.intField(0)]; + // Nombre de coeffs (les anciens fichiers n'ont pas cette ligne) + try { + in_.intField(0); + } + catch (NumberFormatException _exc) { + coeffs.add(in_.doubleField(0)); + } - // Les coeffs - for (int i=0; i<coeffs.length; i++) { - in_.readFields(); - coeffs[i]=in_.doubleField(0); + // Les coeffs (jusqu'\xE0 la fin du fichier) + try { + while (true) { + in_.readFields(); + coeffs.add(in_.doubleField(0)); + } } + catch (EOFException _exc) {} if (progress_ != null) { progress_.setProgression(100); @@ -82,7 +92,7 @@ catch (final NumberFormatException e) { analyze_.manageException(e); } - return coeffs; + return coeffs.toNativeArray(); } /** Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2017-02-16 22:21:18 UTC (rev 9538) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2017-03-13 09:26:10 UTC (rev 9539) @@ -104,8 +104,8 @@ protected boolean areSrcImagesChanged=true; /** Les param\xE8tres de transformation du syteme initial vers le systeme de calcul. */ protected PivTransformationParameters transfParams=new PivTransformationParameters(); - /** Les coefficients de transformation pour l'orthorectification. 0 : On est en mise \xE0 l'echelle. */ - protected double[] coeffs=new double[0]; + /** Les coefficients de transformation pour l'orthorectification. Length=0 : On est en mise \xE0 l'echelle. */ + protected double[] coeffs=null; /** Les listeners notifi\xE9s lors d'une modification du projet. */ protected HashSet<PivProjectStateListener> listeners=new HashSet<PivProjectStateListener>(); @@ -750,11 +750,30 @@ } /** - * @return True, si le projet est en full ortho (ce n'est pas une mise \xE0 l'echelle). + * @return True, si le projet est en full ortho (par opposition \xE0 une mise \xE0 l'echelle). */ public boolean isFullOrtho() { - return coeffs!=null && coeffs.length>0; + return coeffs==null || coeffs.length>0; } + + /** + * Definit que le projet est en full ortho (ou en mise \xE0 l'\xE9chelle). + * @param _b True : Full ortho, False : Mise \xE0 l'echelle. + */ + public void setFullOrtho(boolean _b) { + if (_b==isFullOrtho()) + return; + + if (_b) { + coeffs=null; + } + else { + coeffs=new double[0]; + } + + isModified=true; + fireProjectStateChanged("orthoMode"); + } /** * Retourne les points d'orthorectification. Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java 2017-02-16 22:21:18 UTC (rev 9538) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProjectPersistence.java 2017-03-13 09:26:10 UTC (rev 9539) @@ -25,6 +25,8 @@ import org.fudaa.fudaa.piv.io.PivBathyPReader; import org.fudaa.fudaa.piv.io.PivBathyReader; import org.fudaa.fudaa.piv.io.PivBathyWriter; +import org.fudaa.fudaa.piv.io.PivCoeffReader; +import org.fudaa.fudaa.piv.io.PivCoeffWriter; import org.fudaa.fudaa.piv.io.PivDischargeReader; import org.fudaa.fudaa.piv.io.PivGRPReader; import org.fudaa.fudaa.piv.io.PivGRPWriter; @@ -80,6 +82,13 @@ CtuluIOResult<PivOrthoPoint[]> ret = new PivGRPReader().read(grpFile, _prog); prj_.orthoPoints=ret.getSource(); } + + // Le fichier des coefficients ortho + File coeffFile=new File(prj_.getOutputDir(),"coeff.dat"); + if (coeffFile.exists()) { + CtuluIOResult<double[]> ret = new PivCoeffReader().read(coeffFile, _prog); + prj_.coeffs=ret.getSource(); + } // Les fichiers de parametres ortho File imgRefFile=new File(prj_.getOutputDir(),"img_ref.dat"); @@ -514,6 +523,12 @@ File grpFile=new File(prj_.getOutputDir(),"GRP.dat"); new PivGRPWriter().write(prj_.orthoPoints, grpFile, null); } + + // Le fichier des coefficients ortho + if (prj_.coeffs!=null) { + File coeffFile=new File(prj_.getOutputDir(),"coeff.dat"); + new PivCoeffWriter().write(prj_.coeffs, coeffFile, null); + } // Les fichiers de parametres ortho if (prj_.orthoParams!=null) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-02-07 10:55:55
|
Revision: 9536 http://sourceforge.net/p/fudaa/svn/9536 Author: bmarchan Date: 2017-02-07 10:55:52 +0000 (Tue, 07 Feb 2017) Log Message: ----------- LSPIV : Gestion de la saisie de r?\195?\169solution par couples de points Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingResolutionPanel.form trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingResolutionPanel.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineParamScalingAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineResolutionScalingAction.java Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEnterLineAction.java Removed Paths: ------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEnterDistanceAction.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingResolutionPanel.form =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingResolutionPanel.form 2017-02-06 17:12:24 UTC (rev 9535) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingResolutionPanel.form 2017-02-07 10:55:52 UTC (rev 9536) @@ -58,23 +58,23 @@ <Group type="102" alignment="0" attributes="0"> <EmptySpace max="-2" attributes="0"/> <Group type="103" groupAlignment="0" attributes="0"> - <Component id="spCouple" max="32767" attributes="0"/> <Group type="102" alignment="1" attributes="0"> - <EmptySpace min="0" pref="0" max="32767" attributes="0"/> + <EmptySpace min="0" pref="169" max="32767" attributes="0"/> <Component id="btAdd" min="-2" max="-2" attributes="0"/> <EmptySpace max="-2" attributes="0"/> <Component id="btDelete" min="-2" max="-2" attributes="0"/> </Group> <Group type="102" alignment="1" attributes="0"> <Component id="rbDistanceResol" min="-2" max="-2" attributes="0"/> - <EmptySpace max="32767" attributes="0"/> - <Component id="rbCoordsResol" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="coComputedResol" max="32767" attributes="0"/> </Group> <Group type="102" attributes="0"> <Component id="lbComputedResol" min="-2" max="-2" attributes="0"/> <EmptySpace max="-2" attributes="0"/> <Component id="tfComputedResol" max="32767" attributes="0"/> </Group> + <Component id="spCouple" alignment="1" max="32767" attributes="0"/> </Group> <EmptySpace max="-2" attributes="0"/> </Group> @@ -86,10 +86,10 @@ <EmptySpace max="-2" attributes="0"/> <Group type="103" groupAlignment="3" attributes="0"> <Component id="rbDistanceResol" alignment="3" min="-2" pref="25" max="-2" attributes="0"/> - <Component id="rbCoordsResol" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="coComputedResol" alignment="3" min="-2" max="-2" attributes="0"/> </Group> <EmptySpace max="-2" attributes="0"/> - <Component id="spCouple" pref="119" max="32767" attributes="0"/> + <Component id="spCouple" pref="135" max="32767" attributes="0"/> <EmptySpace max="-2" attributes="0"/> <Group type="103" groupAlignment="3" attributes="0"> <Component id="btDelete" alignment="3" min="-2" max="-2" attributes="0"/> @@ -111,17 +111,9 @@ <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor"> <ComponentRef name="bgResol"/> </Property> - <Property name="text" type="java.lang.String" value="Saisie par couple de points / distance"/> + <Property name="text" type="java.lang.String" value="Saisie par couple de points /"/> </Properties> </Component> - <Component class="javax.swing.JRadioButton" name="rbCoordsResol"> - <Properties> - <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor"> - <ComponentRef name="bgResol"/> - </Property> - <Property name="text" type="java.lang.String" value="Saisie par couple de points / coordonnées"/> - </Properties> - </Component> <Container class="javax.swing.JScrollPane" name="spCouple"> <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> @@ -146,6 +138,16 @@ <Property name="text" type="java.lang.String" value="Ajouter un couple"/> </Properties> </Component> + <Component class="javax.swing.JComboBox" name="coComputedResol"> + <Properties> + <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> + <StringArray count="0"/> + </Property> + </Properties> + <AuxValues> + <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="<String>"/> + </AuxValues> + </Component> </SubComponents> </Container> <Container class="javax.swing.JPanel" name="pnEntering"> Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingResolutionPanel.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingResolutionPanel.java 2017-02-06 17:12:24 UTC (rev 9535) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivScalingResolutionPanel.java 2017-02-07 10:55:52 UTC (rev 9536) @@ -2,6 +2,8 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; @@ -22,7 +24,7 @@ import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.ebli.geometrie.GrPolygone; import org.fudaa.ebli.geometrie.GrPolyligne; -import org.fudaa.fudaa.piv.action.PivEnterDistanceAction; +import org.fudaa.fudaa.piv.action.PivEnterLineAction; import com.memoire.fu.FuLog; @@ -34,23 +36,32 @@ */ public class PivScalingResolutionPanel extends CtuluDialogPanel { - class CoupleDistanceRow { + class CoupleRow { int i1; int j1; int i2; int j2; - /** Peut \xEAtre null quand elle n'a pas \xE9t\xE9 donn\xE9e. */ + /** Peut \xEAtre null quand pas saisi. */ + Double x1; + /** Peut \xEAtre null quand pas saisi. */ + Double y1; + /** Peut \xEAtre null quand pas saisi. */ + Double x2; + /** Peut \xEAtre null quand pas saisi. */ + Double y2; + /** Peut \xEAtre null quand pas saisi. */ Double distance; - /** Peut \xEAtre null si la distance n'a pas \xE9t\xE9 donn\xE9e */ + /** Peut \xEAtre null si la distance ou les coordonn\xE9es n'ont pas \xE9t\xE9 donn\xE9s */ Double resolution; } /** - * Un modele pour les couples / distance + * Un modele pour les couples / (distance ou coordonn\xE9es) * @author Bertrand Marchand (mar...@de...) */ - class CoupleDistanceTableModel extends AbstractTableModel { - List<CoupleDistanceRow> rows = new ArrayList<>(); + class CoupleTableModel extends AbstractTableModel { + List<CoupleRow> rows = new ArrayList<>(); + boolean modeDistance_=true; @Override public int getRowCount() { @@ -59,7 +70,7 @@ @Override public int getColumnCount() { - return 6; + return modeDistance_ ? 6:9; } @Override @@ -75,8 +86,20 @@ case 3: return rows.get(row).j2; case 4: - return rows.get(row).distance; + if (modeDistance_) + return rows.get(row).distance; + else + return rows.get(row).x1; case 5: + if (modeDistance_) + return rows.get(row).resolution; + else + return rows.get(row).y1; + case 6: + return rows.get(row).x2; + case 7: + return rows.get(row).y2; + case 8: return rows.get(row).resolution; } } @@ -94,44 +117,96 @@ case 3: return PivResource.getS("J2"); case 4: - return PivResource.getS("Distance"); + if (modeDistance_) + return PivResource.getS("Distance"); + else + return PivResource.getS("X1"); case 5: + if (modeDistance_) + return PivResource.getS("R\xE9solution"); + else + return PivResource.getS("Y1"); + case 6: + return PivResource.getS("X2"); + case 7: + return PivResource.getS("Y2"); + case 8: return PivResource.getS("R\xE9solution"); } } @Override public boolean isCellEditable(int row, int column) { - return column==4; + if (modeDistance_) + return column==4; + else + return column==4 || column==5 || column==6 || column==7; } @Override public void setValueAt(Object aValue, int row, int column) { + Double val=null; + if (!aValue.toString().trim().isEmpty()) { + // Double attendu + try { + val=Double.parseDouble(aValue.toString().trim()); + } + catch (NumberFormatException _exc) { + } + } + switch (column) { default: case 4: - rows.get(row).distance=null; - rows.get(row).resolution=null; - - if (!aValue.toString().trim().isEmpty()) { - // Double attendu - try { - rows.get(row).distance=Double.parseDouble(aValue.toString()); - double dx=rows.get(row).i2 - rows.get(row).i1; - double dy=rows.get(row).j2 - rows.get(row).j1; - rows.get(row).resolution=rows.get(row).distance / Math.max(1, Math.sqrt(dx*dx + dy*dy)); - } - catch (NumberFormatException _exc) {} - } - - fireTableDataChanged(); + if (modeDistance_) + rows.get(row).distance=val; + else + rows.get(row).x1=val; break; + case 5: + rows.get(row).y1=val; + break; + case 6: + rows.get(row).x2=val; + break; + case 7: + rows.get(row).y2=val; + break; } + + computeResolution(row); + + fireTableDataChanged(); } + + /** + * Initialise la r\xE9solution en fonction des donn\xE9es de la table. + * @param row La ligne pour laquelle initialiser la r\xE9solution + */ + public void computeResolution(int row) { + rows.get(row).resolution=null; + if (modeDistance_) { + if (rows.get(row).distance!=null) { + double dxi=rows.get(row).i2 - rows.get(row).i1; + double dyi=rows.get(row).j2 - rows.get(row).j1; + rows.get(row).resolution=rows.get(row).distance / Math.max(1, Math.sqrt(dxi*dxi + dyi*dyi)); + } + } + else { + if (rows.get(row).x1!=null && rows.get(row).y1!=null && rows.get(row).x2!=null && rows.get(row).y2!=null) { + double dxi=rows.get(row).i2 - rows.get(row).i1; + double dyi=rows.get(row).j2 - rows.get(row).j1; + double dxr=rows.get(row).x2 - rows.get(row).x1; + double dyr=rows.get(row).y2 - rows.get(row).y1; + rows.get(row).resolution= Math.sqrt(dxr*dxr + dyr*dyr) / Math.max(1, Math.sqrt(dxi*dxi + dyi*dyi)); + } + } + } - public void addCouple(CoupleDistanceRow _cpl) { + + public void addCouple(CoupleRow _cpl) { rows.add(_cpl); fireTableDataChanged(); } @@ -144,12 +219,25 @@ } /** + * Definit que le mod\xE8le est en mode distance ou en mode coordonn\xE9es r\xE9elles. + * @param _b True : En mode distance. + */ + public void setModeDistance(boolean _b) { + modeDistance_=_b; + + for (int i=0; i<rows.size(); i++) { + computeResolution(i); + } + fireTableStructureChanged(); + } + + /** * @return La resolution moyenne, ou null si aucune r\xE9solution n'est d\xE9finie dans le tableau. */ public Double getAverageResolution() { int nb=0; double somme=0; - for (CoupleDistanceRow cpl : rows) { + for (CoupleRow cpl : rows) { if (cpl.resolution!=null) { somme+=cpl.resolution; nb++; @@ -182,7 +270,7 @@ if (pl.sommets_.nombre() == 2) { cqEdition_.endEdition(); - CoupleDistanceRow couple=new CoupleDistanceRow(); + CoupleRow couple=new CoupleRow(); couple.i1=(int)pl.sommet(0).x_; couple.j1=(int)pl.sommet(0).y_; couple.i2=(int)pl.sommet(1).x_; @@ -237,10 +325,10 @@ private PivVisuPanel pnLayers_; private ZCalqueEditionInteractionTargetI ctrl_=new EditionController(); - private PivEnterDistanceAction actEnterDistance_; + private PivEnterLineAction actEnterDistance_; private ZCalqueEditionInteraction cqEdition_; private CtuluTable tbCouple=new CtuluTable(); - private CoupleDistanceTableModel mdlDistance; + private CoupleTableModel mdlDistance; /** * Constructeur. @@ -255,9 +343,10 @@ } private void customize() { + setHelpText(PivResource.getS("<html>Vous pouvez d\xE9finir la r\xE9solution soit directement, soit en saisissant des couples de points et moyennation.<br><br><u>Saisie par couple de points</u> :<br>Saisissez 2 points \xE0 l'\xE9cran, puis renseignez les coordonn\xE9es ou la distance dans la table (suivant l'option choisie)</html>")); + rbDirectResol.setText(PivResource.getS("Saisie directe de la r\xE9solution")+" (m/pix):"); - rbDistanceResol.setText(PivResource.getS("Saisie par couple de points / distance")); - rbCoordsResol.setText(PivResource.getS("Saisie par couple de points / coordonn\xE9es")); + rbDistanceResol.setText(PivResource.getS("Saisie par couples de points /")); btDelete.setText(PivResource.getS("Supprimer")); btDelete.setToolTipText(PivResource.getS("Supprime les couples s\xE9lectionn\xE9s")); btDelete.addActionListener(new ActionListener() { @@ -269,26 +358,34 @@ lbComputedResol.setText(PivResource.getS("R\xE9solution moyenne calcul\xE9e")+" (m/pix):"); - actEnterDistance_=new PivEnterDistanceAction(pnLayers_); + actEnterDistance_=new PivEnterLineAction(pnLayers_); actEnterDistance_.setEditionController(ctrl_); btAdd.setAction(actEnterDistance_); actEnterDistance_.addPropertyChangeListener(new EbliSelectedChangeListener(btAdd)); spCouple.setViewportView(tbCouple); - rbDirectResol.addActionListener(new ActionListener() { + coComputedResol.removeAllItems(); + coComputedResol.addItem(PivResource.getS("Distance")); + coComputedResol.addItem(PivResource.getS("Coordonn\xE9es")); + coComputedResol.addItemListener(new ItemListener() { + @Override - public void actionPerformed(ActionEvent e) { - rbResolChanged(); + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange()!=ItemEvent.SELECTED) + return; + + mdlDistance.setModeDistance(coComputedResol.getSelectedIndex()==0); } }); - rbDistanceResol.addActionListener(new ActionListener() { + + rbDirectResol.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { rbResolChanged(); } }); - rbCoordsResol.addActionListener(new ActionListener() { + rbDistanceResol.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { rbResolChanged(); @@ -297,7 +394,7 @@ rbDirectResol.setSelected(true); - mdlDistance= new CoupleDistanceTableModel(); + mdlDistance= new CoupleTableModel(); mdlDistance.addTableModelListener(new TableModelListener() { @Override public void tableChanged(TableModelEvent e) { @@ -326,9 +423,10 @@ protected void rbResolChanged() { tfDirectResol.setEnabled(rbDirectResol.isSelected()); - tbCouple.setEnabled(rbDistanceResol.isSelected() || rbCoordsResol.isSelected()); - btAdd.setEnabled((rbDistanceResol.isSelected() || rbCoordsResol.isSelected())); - btDelete.setEnabled((rbDistanceResol.isSelected() || rbCoordsResol.isSelected()) && tbCouple.getSelectedRows().length>0); + tbCouple.setEnabled(rbDistanceResol.isSelected()); + coComputedResol.setEnabled(rbDistanceResol.isSelected()); + btAdd.setEnabled((rbDistanceResol.isSelected())); + btDelete.setEnabled(rbDistanceResol.isSelected() && tbCouple.getSelectedRows().length>0); } protected boolean isDistanceResolution() { @@ -378,12 +476,12 @@ bgResol = new javax.swing.ButtonGroup(); pnDirect = new javax.swing.JPanel(); rbDistanceResol = new javax.swing.JRadioButton(); - rbCoordsResol = new javax.swing.JRadioButton(); spCouple = new javax.swing.JScrollPane(); btDelete = new javax.swing.JButton(); tfComputedResol = new javax.swing.JTextField(); lbComputedResol = new javax.swing.JLabel(); btAdd = new javax.swing.JToggleButton(); + coComputedResol = new javax.swing.JComboBox<>(); pnEntering = new javax.swing.JPanel(); rbDirectResol = new javax.swing.JRadioButton(); tfDirectResol = new javax.swing.JTextField(); @@ -391,17 +489,16 @@ pnDirect.setBorder(javax.swing.BorderFactory.createEtchedBorder()); bgResol.add(rbDistanceResol); - rbDistanceResol.setText("Saisie par couple de points / distance"); + rbDistanceResol.setText("Saisie par couple de points /"); - bgResol.add(rbCoordsResol); - rbCoordsResol.setText("Saisie par couple de points / coordonn\xE9es"); - btDelete.setText("Supprimer"); tfComputedResol.setEnabled(false); lbComputedResol.setText("R\xE9solution moyenne calcul\xE9e"); + btAdd.setText("Ajouter un couple"); + javax.swing.GroupLayout pnDirectLayout = new javax.swing.GroupLayout(pnDirect); pnDirect.setLayout(pnDirectLayout); pnDirectLayout.setHorizontalGroup( @@ -409,20 +506,20 @@ .addGroup(pnDirectLayout.createSequentialGroup() .addContainerGap() .addGroup(pnDirectLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(spCouple) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnDirectLayout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) + .addGap(0, 169, Short.MAX_VALUE) .addComponent(btAdd) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btDelete)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnDirectLayout.createSequentialGroup() .addComponent(rbDistanceResol) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(rbCoordsResol)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(coComputedResol, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(pnDirectLayout.createSequentialGroup() .addComponent(lbComputedResol) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(tfComputedResol))) + .addComponent(tfComputedResol)) + .addComponent(spCouple, javax.swing.GroupLayout.Alignment.TRAILING)) .addContainerGap()) ); pnDirectLayout.setVerticalGroup( @@ -431,9 +528,9 @@ .addContainerGap() .addGroup(pnDirectLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(rbDistanceResol, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(rbCoordsResol)) + .addComponent(coComputedResol, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(spCouple, javax.swing.GroupLayout.DEFAULT_SIZE, 119, Short.MAX_VALUE) + .addComponent(spCouple, javax.swing.GroupLayout.DEFAULT_SIZE, 135, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(pnDirectLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(btDelete) @@ -498,10 +595,10 @@ private javax.swing.ButtonGroup bgResol; private javax.swing.JToggleButton btAdd; private javax.swing.JButton btDelete; + private javax.swing.JComboBox<String> coComputedResol; private javax.swing.JLabel lbComputedResol; private javax.swing.JPanel pnDirect; private javax.swing.JPanel pnEntering; - private javax.swing.JRadioButton rbCoordsResol; private javax.swing.JRadioButton rbDirectResol; private javax.swing.JRadioButton rbDistanceResol; private javax.swing.JScrollPane spCouple; Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineParamScalingAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineParamScalingAction.java 2017-02-06 17:12:24 UTC (rev 9535) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineParamScalingAction.java 2017-02-07 10:55:52 UTC (rev 9536) @@ -119,6 +119,6 @@ @Override public String getEnableCondition() { - return PivResource.getS("Le projet doit \xEAtre cr\xE9\xE9"); + return PivResource.getS("Il doit exister au moins une image source"); } } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineResolutionScalingAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineResolutionScalingAction.java 2017-02-06 17:12:24 UTC (rev 9535) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivDefineResolutionScalingAction.java 2017-02-07 10:55:52 UTC (rev 9536) @@ -8,20 +8,12 @@ package org.fudaa.fudaa.piv.action; import java.awt.event.ActionEvent; -import java.io.File; -import org.fudaa.ctulu.CtuluLog; import org.fudaa.ctulu.gui.CtuluDialog; -import org.fudaa.ctulu.gui.CtuluTaskOperationGUI; import org.fudaa.ebli.commun.EbliActionSimple; -import org.fudaa.fudaa.piv.PivExePanel; import org.fudaa.fudaa.piv.PivImplementation; -import org.fudaa.fudaa.piv.PivManageOriginalFilesPanel; -import org.fudaa.fudaa.piv.PivProgressionPanel; import org.fudaa.fudaa.piv.PivResource; import org.fudaa.fudaa.piv.PivScalingResolutionPanel; -import org.fudaa.fudaa.piv.PivVisuPanel; -import org.fudaa.fudaa.piv.io.PivExeLauncher; /** * Une action pour selectionner et reconditionner les images sources. @@ -46,7 +38,6 @@ } /** - * Selectionne les images, pour les reconditionne dans un thread s\xE9par\xE9. * @param _e L'evenement pour l'action. */ @Override @@ -55,47 +46,11 @@ return; } - // Selection des images + // D\xE9finition de la r\xE9solution. if (pnResolution==null) pnResolution = new PivScalingResolutionPanel(impl.get2dFrame().getVisuPanel()); pnResolution.affiche(impl.getFrame(), PivResource.getS("D\xE9finition de la r\xE9solution"), CtuluDialog.OK_CANCEL_OPTION); - -// final File[] srcImgFiles=pnResolution.getFiles(); - - // Le reconditionnement des images. -// CtuluTaskOperationGUI r=new CtuluTaskOperationGUI(impl, PivResource.getS("Traitement des images sources")) { -// -// @Override -// public void act() { -// try { -// CtuluLog ana=new CtuluLog(); -// ana.setDesc(getName()); -// impl.getCurrentProject().setSrcImagesFiles(srcImgFiles, this, ana); -// -// if (ana.containsErrorOrSevereError()) { -// impl.error(ana.getResume()); -// return; -// } -// -// } -// finally { -// diProgress_.dispose(); -// } -// } -// }; -// -// PivProgressionPanel pnProgress_=new PivProgressionPanel(r); -// diProgress_ = pnProgress_.createDialog(impl.getParentComponent()); -// diProgress_.setOption(CtuluDialog.ZERO_OPTION); -// diProgress_.setDefaultCloseOperation(CtuluDialog.DO_NOTHING_ON_CLOSE); -// diProgress_.setTitle(r.getName()); -// -// r.start(); -// diProgress_.afficheDialogModal(); - - impl.get2dFrame().getVisuPanel().setViewMode(PivVisuPanel.MODE_ORIGINAL_VIEW); - impl.get2dFrame().restaurer(); } /** @@ -107,6 +62,6 @@ @Override public String getEnableCondition() { - return PivResource.getS("Le projet doit \xEAtre cr\xE9\xE9"); + return PivResource.getS("Il doit exister au moins une image source"); } } Deleted: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEnterDistanceAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEnterDistanceAction.java 2017-02-06 17:12:24 UTC (rev 9535) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEnterDistanceAction.java 2017-02-07 10:55:52 UTC (rev 9536) @@ -1,176 +0,0 @@ -/* - * @creation 3 juil. 2008 - * @modification $Date:$ - * @license GNU General Public License 2 - * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne - * @mail fud...@li... - */ -package org.fudaa.fudaa.piv.action; - -import java.awt.Container; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; - -import javax.swing.JComponent; -import javax.swing.JInternalFrame; -import javax.swing.SwingUtilities; -import javax.swing.event.InternalFrameAdapter; -import javax.swing.event.InternalFrameEvent; - -import org.fudaa.ebli.calque.dessin.DeForme; -import org.fudaa.ebli.calque.edition.ZCalqueEditionInteraction; -import org.fudaa.ebli.calque.edition.ZCalqueEditionInteractionTargetI; -import org.fudaa.ebli.commun.EbliActionPaletteAbstract; -import org.fudaa.fudaa.piv.PivResource; -import org.fudaa.fudaa.piv.PivSimplifiedEditionPalette; -import org.fudaa.fudaa.piv.PivVisuPanel; -import org.fudaa.fudaa.piv.action.PivComputeGridDefinitionAction.Piv2dFrameListener; - -import com.memoire.bu.BuDesktop; - -/** - * Une action pour saisir une distance (trac\xE9 d'une ligne simple). - * - * @author Bertrand Marchand (mar...@de...) - * @version $Id: PivDefineAreaCenterAction.java 6709 2011-11-24 16:17:00Z bmarchan $ - */ -public class PivEnterDistanceAction extends EbliActionPaletteAbstract { - - private PivVisuPanel pnCalques_; - /** Le calque d'\xE9dition. */ - private ZCalqueEditionInteraction cqEdition_; - /** Le controller d'edition */ - private ZCalqueEditionInteractionTargetI controller_; - /** La palette pour la reprise. */ - private PivSimplifiedEditionPalette palette_; - /** Le listener sur le statut gele du calque d'\xE9dition */ - private PropertyChangeListener listener_; - - /** - * Constructeur. - * @param _pn Le panneau des calques. - */ - public PivEnterDistanceAction(PivVisuPanel _pn) { - super(PivResource.getS("Saisir un couple"), null, "DEFINE_DISTANCE"); - setDefaultToolTip(PivResource.getS("Ajoute un couple par saisie de 2 points")); - pnCalques_=_pn; - - // Pour ecouter le statut du calque d'edition -// listener_=new PropertyChangeListener() { -// @Override -// public void propertyChange(PropertyChangeEvent evt) { -// setSelected(!(Boolean)evt.getNewValue()); -// } -// }; - - setCalqueInteraction(_pn.getEditionLayer()); - } - - /** - * Definit le calque d'interaction associ\xE9 \xE0 l'action. - * @param _cq Le calque. Peut \xEAtre <tt>null</tt>. - */ - private void setCalqueInteraction(ZCalqueEditionInteraction _cq) { -// if (cqEdition_==_cq) return; -// -// if (cqEdition_!=null) -// cqEdition_.removePropertyChangeListener("gele", listener_); - - cqEdition_=_cq; - -// if (cqEdition_!=null) -// cqEdition_.addPropertyChangeListener("gele", listener_); - } - - /** - * Definit le controlleur d'edition. - * @param _ctrl Le controlleur. - */ - public void setEditionController(ZCalqueEditionInteractionTargetI _ctrl) { - controller_=_ctrl; - } - - /** - * Surcharge pour activer/desactiver le calque d'edition. - */ - @Override - public void changeAction() { - if (isSelected()) - pnCalques_.setViewMode(PivVisuPanel.MODE_ORIGINAL_VIEW); - -// cqEdition_.setListener(controller_); -// cqEdition_.setTypeForme(DeForme.LIGNE_BRISEE); -// cqEdition_.setFormEndedByDoubleClic(true); -// pnCalques_.setCalqueInteractionActif(cqEdition_); -// } -// else { -// pnCalques_.unsetCalqueInteractionActif(cqEdition_); -// cqEdition_.cancelEdition(); -// } - super.changeAction(); - } - - /** - * Surchag\xE9 pour d\xE9finir le desktop au moment de l'affichage. - */ - @Override - public void showWindow() { - // Necessaire, sinon la palette est visualis\xE9e en externe. Ne peut \xEAtre fait avant, car le desktop n'est pas - // encore existant. - setDesktop((BuDesktop)SwingUtilities.getAncestorOfClass(BuDesktop.class,pnCalques_)); - super.showWindow(); - } - - /** - * Surcharg\xE9 pour rendre inactif le calque d'\xE9dition apr\xE8s que la palette a - * \xE9t\xE9 ferm\xE9e. - */ - @Override - public void hideWindow() { - pnCalques_.unsetCalqueInteractionActif(cqEdition_); - cqEdition_.cancelEdition(); - setSelected(false); - - super.hideWindow(); - } - - /** - * Surcharg\xE9 pour activer le calque d'\xE9dition apr\xE8s affichage. - */ - @Override - public void doAfterDisplay() { - cqEdition_.setListener(controller_); - cqEdition_.setTypeForme(DeForme.LIGNE_BRISEE); - cqEdition_.setFormEndedByDoubleClic(true); - pnCalques_.setCalqueInteractionActif(cqEdition_); - palette_.currentFormeChanged(null); - } - - @Override - protected JComponent buildContentPane() { - if (palette_==null){ - // Cr\xE9ation de l'internal frame de reprise - palette_=new PivSimplifiedEditionPalette(pnCalques_, PivResource.getS("Points")); - palette_.setCalqueInteraction(cqEdition_); - palette_.setButtonVisible(PivSimplifiedEditionPalette.BUTTON_END, false); - // Ecoute de la fen\xEAtre principale pour pouvoir se r\xE9duire avec elle - final Container c = SwingUtilities.getAncestorOfClass(JInternalFrame.class, pnCalques_); - - if (c instanceof JInternalFrame) { - ((JInternalFrame) c).addInternalFrameListener(new InternalFrameAdapter() { - @Override - public void internalFrameActivated(final InternalFrameEvent _e) { - if(window_!=null) - window_.setVisible(true); - } - @Override - public void internalFrameDeactivated(final InternalFrameEvent _e) { - if(window_!=null) - window_.setVisible(false); - } - }); - } - } - return palette_.getComponent(); - } -} Copied: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEnterLineAction.java (from rev 9535, trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEnterDistanceAction.java) =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEnterLineAction.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEnterLineAction.java 2017-02-07 10:55:52 UTC (rev 9536) @@ -0,0 +1,176 @@ +/* + * @creation 3 juil. 2008 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.piv.action; + +import java.awt.Container; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; + +import javax.swing.JComponent; +import javax.swing.JInternalFrame; +import javax.swing.SwingUtilities; +import javax.swing.event.InternalFrameAdapter; +import javax.swing.event.InternalFrameEvent; + +import org.fudaa.ebli.calque.dessin.DeForme; +import org.fudaa.ebli.calque.edition.ZCalqueEditionInteraction; +import org.fudaa.ebli.calque.edition.ZCalqueEditionInteractionTargetI; +import org.fudaa.ebli.commun.EbliActionPaletteAbstract; +import org.fudaa.fudaa.piv.PivResource; +import org.fudaa.fudaa.piv.PivSimplifiedEditionPalette; +import org.fudaa.fudaa.piv.PivVisuPanel; +import org.fudaa.fudaa.piv.action.PivComputeGridDefinitionAction.Piv2dFrameListener; + +import com.memoire.bu.BuDesktop; + +/** + * Une action pour saisir une distance (trac\xE9 d'une ligne simple). + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id: PivDefineAreaCenterAction.java 6709 2011-11-24 16:17:00Z bmarchan $ + */ +public class PivEnterLineAction extends EbliActionPaletteAbstract { + + private PivVisuPanel pnCalques_; + /** Le calque d'\xE9dition. */ + private ZCalqueEditionInteraction cqEdition_; + /** Le controller d'edition */ + private ZCalqueEditionInteractionTargetI controller_; + /** La palette pour la reprise. */ + private PivSimplifiedEditionPalette palette_; + /** Le listener sur le statut gele du calque d'\xE9dition */ + private PropertyChangeListener listener_; + + /** + * Constructeur. + * @param _pn Le panneau des calques. + */ + public PivEnterLineAction(PivVisuPanel _pn) { + super(PivResource.getS("Saisir un couple"), null, "DEFINE_DISTANCE"); + setDefaultToolTip(PivResource.getS("Ajoute un couple par saisie de 2 points")); + pnCalques_=_pn; + + // Pour ecouter le statut du calque d'edition +// listener_=new PropertyChangeListener() { +// @Override +// public void propertyChange(PropertyChangeEvent evt) { +// setSelected(!(Boolean)evt.getNewValue()); +// } +// }; + + setCalqueInteraction(_pn.getEditionLayer()); + } + + /** + * Definit le calque d'interaction associ\xE9 \xE0 l'action. + * @param _cq Le calque. Peut \xEAtre <tt>null</tt>. + */ + private void setCalqueInteraction(ZCalqueEditionInteraction _cq) { +// if (cqEdition_==_cq) return; +// +// if (cqEdition_!=null) +// cqEdition_.removePropertyChangeListener("gele", listener_); + + cqEdition_=_cq; + +// if (cqEdition_!=null) +// cqEdition_.addPropertyChangeListener("gele", listener_); + } + + /** + * Definit le controlleur d'edition. + * @param _ctrl Le controlleur. + */ + public void setEditionController(ZCalqueEditionInteractionTargetI _ctrl) { + controller_=_ctrl; + } + + /** + * Surcharge pour activer/desactiver le calque d'edition. + */ + @Override + public void changeAction() { + if (isSelected()) + pnCalques_.setViewMode(PivVisuPanel.MODE_ORIGINAL_VIEW); + +// cqEdition_.setListener(controller_); +// cqEdition_.setTypeForme(DeForme.LIGNE_BRISEE); +// cqEdition_.setFormEndedByDoubleClic(true); +// pnCalques_.setCalqueInteractionActif(cqEdition_); +// } +// else { +// pnCalques_.unsetCalqueInteractionActif(cqEdition_); +// cqEdition_.cancelEdition(); +// } + super.changeAction(); + } + + /** + * Surchag\xE9 pour d\xE9finir le desktop au moment de l'affichage. + */ + @Override + public void showWindow() { + // Necessaire, sinon la palette est visualis\xE9e en externe. Ne peut \xEAtre fait avant, car le desktop n'est pas + // encore existant. + setDesktop((BuDesktop)SwingUtilities.getAncestorOfClass(BuDesktop.class,pnCalques_)); + super.showWindow(); + } + + /** + * Surcharg\xE9 pour rendre inactif le calque d'\xE9dition apr\xE8s que la palette a + * \xE9t\xE9 ferm\xE9e. + */ + @Override + public void hideWindow() { + pnCalques_.unsetCalqueInteractionActif(cqEdition_); + cqEdition_.cancelEdition(); + setSelected(false); + + super.hideWindow(); + } + + /** + * Surcharg\xE9 pour activer le calque d'\xE9dition apr\xE8s affichage. + */ + @Override + public void doAfterDisplay() { + cqEdition_.setListener(controller_); + cqEdition_.setTypeForme(DeForme.LIGNE_BRISEE); + cqEdition_.setFormEndedByDoubleClic(true); + pnCalques_.setCalqueInteractionActif(cqEdition_); + palette_.currentFormeChanged(null); + } + + @Override + protected JComponent buildContentPane() { + if (palette_==null){ + // Cr\xE9ation de l'internal frame de reprise + palette_=new PivSimplifiedEditionPalette(pnCalques_, PivResource.getS("Points")); + palette_.setCalqueInteraction(cqEdition_); + palette_.setButtonVisible(PivSimplifiedEditionPalette.BUTTON_END, false); + // Ecoute de la fen\xEAtre principale pour pouvoir se r\xE9duire avec elle + final Container c = SwingUtilities.getAncestorOfClass(JInternalFrame.class, pnCalques_); + + if (c instanceof JInternalFrame) { + ((JInternalFrame) c).addInternalFrameListener(new InternalFrameAdapter() { + @Override + public void internalFrameActivated(final InternalFrameEvent _e) { + if(window_!=null) + window_.setVisible(true); + } + @Override + public void internalFrameDeactivated(final InternalFrameEvent _e) { + if(window_!=null) + window_.setVisible(false); + } + }); + } + } + return palette_.getComponent(); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-02-06 17:10:54
|
Revision: 9534 http://sourceforge.net/p/fudaa/svn/9534 Author: bmarchan Date: 2017-02-06 17:10:52 +0000 (Mon, 06 Feb 2017) Log Message: ----------- LSPIV : Writer/Reader du fichier coeffs.dat Added Paths: ----------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivCoeffReader.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivCoeffWriter.java Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivCoeffReader.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivCoeffReader.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivCoeffReader.java 2017-02-06 17:10:52 UTC (rev 9534) @@ -0,0 +1,94 @@ +/** + * @creation 2002-11-21 + * @modification $Date: 2007/05/04 13:47:27 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.fudaa.piv.io; + +import java.io.EOFException; +import java.io.IOException; + +import org.fudaa.ctulu.CtuluActivity; +import org.fudaa.dodico.fortran.FileCharSimpleReaderAbstract; +import org.fudaa.fudaa.piv.PivResource; + +/** + * Un lecteur pour le fichier des coefficients d'orthorectification. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id: PivHReader.java 9015 2015-02-12 16:45:55Z bmarchan $ + */ +public class PivCoeffReader extends FileCharSimpleReaderAbstract<double[]> implements CtuluActivity { + + /** Drapeau d'interruption */ + boolean bstop_; + + /** + * Le constructeur. + */ + public PivCoeffReader() { + } + + /** + * Lit les coefficients et les retourne. + * @return La cote d'eau. + */ + protected double[] internalRead() { + return readCoeffs(); + } + + /** + * Utilise FortranReader ( donc un buffer). + * + * @return les infos non bloquantes. + */ + private synchronized double[] readCoeffs() { + double[] coeffs=new double[0]; + + if (super.in_ == null) { + analyze_.addError(PivResource.getS("Flux d'entr\xE9e non trouv\xE9"), 0); + return null; + } + + try { + if (progress_ != null) { + progress_.setProgression(0); + } + + in_.setJumpBlankLine(true); + + // Nombre de coeffs + in_.readFields(); + coeffs=new double[in_.intField(0)]; + + // Les coeffs + for (int i=0; i<coeffs.length; i++) { + in_.readFields(); + coeffs[i]=in_.doubleField(0); + } + + if (progress_ != null) { + progress_.setProgression(100); + } + } + catch (final EOFException e) { + analyze_.manageException(e); + } + catch (final IOException e) { + analyze_.manageException(e); + } + catch (final NumberFormatException e) { + analyze_.manageException(e); + } + return coeffs; + } + + /** + * Interruption asynchrone de l'activit\xE9 de lecture. + */ + public void stop() { + bstop_ = true; + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivCoeffReader.java ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivCoeffWriter.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivCoeffWriter.java (rev 0) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivCoeffWriter.java 2017-02-06 17:10:52 UTC (rev 9534) @@ -0,0 +1,39 @@ +package org.fudaa.fudaa.piv.io; + +import java.io.PrintWriter; + +import org.fudaa.dodico.fortran.FileCharSimpleWriterAbstract; + + +/** + * Une classe pour ecrire les coefficients d'orthorectification sur fichier. + * + * @author Bertrand Marchand (mar...@de...) + * @version $Id: PivHWriter.java 9015 2015-02-12 16:45:55Z bmarchan $ + */ +public class PivCoeffWriter extends FileCharSimpleWriterAbstract<double[]> { + + /** + * Ecrit les param\xE8tres d'orthorectification. + * param _o Les coefs. + */ + protected void internalWrite(final double[] _coefs) { + + final PrintWriter writer = new PrintWriter(out_); + + try { + // Nombre de coeffs + writer.println(_coefs.length); + + // Les coefs + for (int i=0; i<_coefs.length; i++) { + writer.println(_coefs[i]); + } + } + catch (final Exception _evt) { + analyze_.manageException(_evt); + } + + writer.close(); + } +} Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivCoeffWriter.java ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-02-02 14:41:56
|
Revision: 9533 http://sourceforge.net/p/fudaa/svn/9533 Author: bmarchan Date: 2017-02-02 14:41:54 +0000 (Thu, 02 Feb 2017) Log Message: ----------- LSPIV Changelogs. Modified Paths: -------------- trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG.txt trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG_en.txt trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java Modified: trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG.txt =================================================================== --- trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG.txt 2017-02-02 11:37:34 UTC (rev 9532) +++ trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG.txt 2017-02-02 14:41:54 UTC (rev 9533) @@ -1,5 +1,40 @@ Fudaa-LSPIV +Version 1.5.1 du xx/xx/2017 +=========================== + +Nouveautés +---------- + +- Détection sur le site de Fudaa-LSPIV de la présence d'une nouvelle version téléchargeable + au lancement de Fudaa-LSPIV. En complement, le menu Aide->Mise à jour permet de verifier + la présence d'une mise à jour. + +- Possibilité d'importer les images sources du projet depuis une séquence vidéo, par le + menu LSPIV->Gestion des images->Importer. L'utilitaire ffmpeg est utilisé pour cette + fonctionnalité. Les images importées remplacent les images sources existantes dans le + projet. + +Améliorations +------------- + +- Le nom des fichiers .dat pour l'import de données est défini par defaut dans les boites de + dialogue d'import. + +- Le tooltip sur l'action Auto cache a été revu. + +- Le rapport de jaugeage en anglais a été intégré. Plusieurs modifications ont été apportées + sur le rapport de jaugeage. + +Corrections +----------- + +- Problème de non prise en compte de la suppression manuelle des vitesses pour le calcul des + moyennes (s’il n’y a pas eu une sauvegarde entre temps). + +- Le menu Fichier->Exporter->Export des images sources restait grisé jusqu'a ce que le + projet contienne des images transformées. + Version 1.5.0 du 20/12/2016 =========================== Modified: trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG_en.txt =================================================================== --- trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG_en.txt 2017-02-02 11:37:34 UTC (rev 9532) +++ trunk/soft/fudaa-lspiv/distrib/src/dist/CHANGELOG_en.txt 2017-02-02 14:41:54 UTC (rev 9533) @@ -1,5 +1,38 @@ Fudaa-LSPIV +Version 1.5.1 (2016/xx/xx) +========================== + +New features +------------ + +- Check that a new downloadable version is present on Fudaa-LSPIV site at launch of + Fudaa-LSPIV. In addition, the Help->Update menu allows you to check the presence of an + update. + +- Ability to import project sources images from a video sequence, through the menu + LSPIV->Source images management->Import. The ffmpeg utility is used for this + functionality. Imported images replace existing source images in the project + +Improvments +----------- + +- Name of .dat files during data import is now defined by default in import dialog boxes. + +- The tooltip on the Automatic images cache action has been reviewed. + +- The English gauging report has been integrated. Several modifications were made to the + gauging report. + +Fixed +----- + +- Existing problem of not taking into account the manual suppression of velocities for + average calculation (if there was no backup in the meantime). + +- Menu File->Export->Export source images export remained disabled till project contains + transformed images. + Version 1.5.0 (2016/12/20) ========================== Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2017-02-02 11:37:34 UTC (rev 9532) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2017-02-02 14:41:54 UTC (rev 9533) @@ -287,7 +287,7 @@ showHelp(); } else if ("MAJ".equals(action)) { if (!checkForUpdate(false)) { - message(PivResource.getS("Information"),PivResource.getS("Site des mise \xE0 jour : {0}\nLa version de Fudaa-LSPIV est \xE0 jour.",isPIV_.update),false); + message(PivResource.getS("Information"),PivResource.getS("Site de mises \xE0 jour : {0}\nLa version de Fudaa-LSPIV est \xE0 jour.",isPIV_.update),false); } } else if (action.startsWith("REOUVRIR")) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-02-02 11:37:37
|
Revision: 9532 http://sourceforge.net/p/fudaa/svn/9532 Author: bmarchan Date: 2017-02-02 11:37:34 +0000 (Thu, 02 Feb 2017) Log Message: ----------- Fix LSPIV : Pb sur le calcul de moyennes apr?\195?\168s suppression de vitesses filtr?\195?\169es si aucune sauvegarde entre temps Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2017-01-26 16:54:33 UTC (rev 9531) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2017-02-02 11:37:34 UTC (rev 9532) @@ -97,7 +97,7 @@ static { isPIV_.name = "LSPIV"; isPIV_.version = "1.5.1"; - isPIV_.date = "2016-12-20"; + isPIV_.date = "2017-02-02"; isPIV_.rights = PivResource.getS("Tous droits r\xE9serv\xE9s")+". CEREMA (c)1999-2017"; isPIV_.license = "GPL2"; isPIV_.languages = "en,fr"; Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java 2017-01-26 16:54:33 UTC (rev 9531) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java 2017-02-02 11:37:34 UTC (rev 9532) @@ -708,6 +708,9 @@ PivResultsI res=null; try { + // Sauvegarde des r\xE9sultats filtr\xE9s qui ont pu \xEAtre modifi\xE9s par l'utilisateur. + _prj.getPersistenceManager().saveInstantFilteredResults(_prj, _prj.getInstantFilteredResults(), _task); + // Cr\xE9ation du fichier contenant la liste des fichiers piv.dat pour la moyenne. _prj.getPersistenceManager().saveInstantResultsList(false); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-01-26 16:54:35
|
Revision: 9531 http://sourceforge.net/p/fudaa/svn/9531 Author: bmarchan Date: 2017-01-26 16:54:33 +0000 (Thu, 26 Jan 2017) Log Message: ----------- Fix LSPIV : Import des fichiers avec le nom correspondant Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUtils.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportComputeParamAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGRPAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGridAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportOrthoParamAction.java trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUtils.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUtils.java 2017-01-25 16:13:07 UTC (rev 9530) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivUtils.java 2017-01-26 16:54:33 UTC (rev 9531) @@ -91,11 +91,15 @@ FILE_FLT_PROJ=new BuFileFilter("lspiv.zip",PivResource.getS("Fichier projet")); FILE_FLT_PGM=new BuFileFilter("pgm",PivResource.getS("Fichiers images en niveaux de gris")); FILE_FLT_IMAGES=new BuFileFilter(new String[]{"jpg","jpeg","gif","png","pgm","tif","tiff","bmp"},PivResource.getS("Fichiers images")); - FILE_FLT_GRID=new BuFileFilter("dat",PivResource.getS("Fichier grid")); - FILE_FLT_GRP=new BuFileFilter("dat",PivResource.getS("Fichier GRP")); + FILE_FLT_GRID=new BuFileFilter("grid.dat",PivResource.getS("Fichier grille (grid.dat)")); + FILE_FLT_GRID.setExtensionListInDescription(false); + FILE_FLT_GRP=new BuFileFilter("GRP.dat",PivResource.getS("Fichier points (GRP.dat)")); + FILE_FLT_GRP.setExtensionListInDescription(false); FILE_FLT_BATHY=new BuFileFilter(new String[]{"dat",FILE_FLT_TRANS_BTH.getFirstExt()},PivResource.getS("Fichier bathy")); - FILE_FLT_TRANSF_PARAMS=new BuFileFilter("dat",PivResource.getS("Fichier params transformation")); - FILE_FLT_COMPUTE_PARAMS=new BuFileFilter("dat",PivResource.getS("Fichier params calcul")); + FILE_FLT_TRANSF_PARAMS=new BuFileFilter("img_ref.dat",PivResource.getS("Fichier transformation (img_ref.dat)")); + FILE_FLT_TRANSF_PARAMS.setExtensionListInDescription(false); + FILE_FLT_COMPUTE_PARAMS=new BuFileFilter("PIV_param.dat",PivResource.getS("Fichier calcul (PIV_param.dat)")); + FILE_FLT_COMPUTE_PARAMS.setExtensionListInDescription(false); FILE_FLT_XLSX=new BuFileFilter("xlsx",PivResource.getS("Fichier Excel")); } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportComputeParamAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportComputeParamAction.java 2017-01-25 16:13:07 UTC (rev 9530) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportComputeParamAction.java 2017-01-26 16:54:33 UTC (rev 9531) @@ -56,13 +56,16 @@ } // Selection du fichier - if (fcParams==null) - fcParams = new CtuluFileChooser(true); + if (fcParams == null) { + fcParams=new CtuluFileChooser(true); + fcParams.setAcceptAllFileFilterUsed(true); + fcParams.setFileFilter(PivUtils.FILE_FLT_COMPUTE_PARAMS); + // Pas terrible, mais evite de redonner le nom manuellement. + fcParams.setSelectedFile(new File(PivUtils.FILE_FLT_COMPUTE_PARAMS.getFirstExt())); + fcParams.setMultiSelectionEnabled(false); + fcParams.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier de parametres de calcul")); + } - fcParams.setAcceptAllFileFilterUsed(true); - fcParams.setFileFilter(PivUtils.FILE_FLT_COMPUTE_PARAMS); - fcParams.setMultiSelectionEnabled(false); - fcParams.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier de parametres de calcul")); if (fcParams.showOpenDialog(impl.getFrame()) == CtuluFileChooser.CANCEL_OPTION) { return; } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGRPAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGRPAction.java 2017-01-25 16:13:07 UTC (rev 9530) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGRPAction.java 2017-01-26 16:54:33 UTC (rev 9531) @@ -64,12 +64,16 @@ } // Selection du fichier - if (fcGRP==null) - fcGRP = new CtuluFileChooser(true); - fcGRP.setAcceptAllFileFilterUsed(true); - fcGRP.setFileFilter(PivUtils.FILE_FLT_GRP); - fcGRP.setMultiSelectionEnabled(false); - fcGRP.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier GRP")); + if (fcGRP == null) { + fcGRP=new CtuluFileChooser(true); + fcGRP.setAcceptAllFileFilterUsed(true); + fcGRP.setFileFilter(PivUtils.FILE_FLT_GRP); + // Pas terrible, mais evite de redonner le nom manuellement. + fcGRP.setSelectedFile(new File(PivUtils.FILE_FLT_GRP.getFirstExt())); + fcGRP.setMultiSelectionEnabled(false); + fcGRP.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier GRP")); + } + if (fcGRP.showOpenDialog(impl.getFrame()) == JFileChooser.CANCEL_OPTION) { return; } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGridAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGridAction.java 2017-01-25 16:13:07 UTC (rev 9530) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGridAction.java 2017-01-26 16:54:33 UTC (rev 9531) @@ -61,12 +61,16 @@ } // Selection du fichier - if (fcGrid==null) - fcGrid = new CtuluFileChooser(true); - fcGrid.setAcceptAllFileFilterUsed(true); - fcGrid.setFileFilter(PivUtils.FILE_FLT_GRID); - fcGrid.setMultiSelectionEnabled(false); - fcGrid.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier de grille")); + if (fcGrid == null) { + fcGrid=new CtuluFileChooser(true); + fcGrid.setAcceptAllFileFilterUsed(true); + fcGrid.setFileFilter(PivUtils.FILE_FLT_GRID); + // Pas terrible, mais evite de redonner le nom manuellement. + fcGrid.setSelectedFile(new File(PivUtils.FILE_FLT_GRID.getFirstExt())); + fcGrid.setMultiSelectionEnabled(false); + fcGrid.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier de grille")); + } + if (fcGrid.showOpenDialog(impl.getFrame()) == CtuluFileChooser.CANCEL_OPTION) { return; } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportOrthoParamAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportOrthoParamAction.java 2017-01-25 16:13:07 UTC (rev 9530) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportOrthoParamAction.java 2017-01-26 16:54:33 UTC (rev 9531) @@ -53,13 +53,16 @@ } // Selection du fichier - if (fcParams==null) - fcParams = new CtuluFileChooser(true); + if (fcParams == null) { + fcParams=new CtuluFileChooser(true); + fcParams.setAcceptAllFileFilterUsed(true); + fcParams.setFileFilter(PivUtils.FILE_FLT_TRANSF_PARAMS); + // Pas terrible, mais evite de redonner le nom manuellement. + fcParams.setSelectedFile(new File(PivUtils.FILE_FLT_TRANSF_PARAMS.getFirstExt())); + fcParams.setMultiSelectionEnabled(false); + fcParams.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier de parametres de transformation")); + } - fcParams.setAcceptAllFileFilterUsed(true); - fcParams.setFileFilter(PivUtils.FILE_FLT_TRANSF_PARAMS); - fcParams.setMultiSelectionEnabled(false); - fcParams.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier de parametres de transformation")); if (fcParams.showOpenDialog(impl.getFrame()) == CtuluFileChooser.CANCEL_OPTION) { return; } Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java 2017-01-25 16:13:07 UTC (rev 9530) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportTransectAction.java 2017-01-26 16:54:33 UTC (rev 9531) @@ -48,12 +48,15 @@ } // Selection du fichier - if (fcTransect==null) - fcTransect = new CtuluFileChooser(); - fcTransect.setAcceptAllFileFilterUsed(true); - fcTransect.setFileFilter(PivUtils.FILE_FLT_BATHY); - fcTransect.setMultiSelectionEnabled(false); - fcTransect.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier transect")); + if (fcTransect == null) { + fcTransect=new CtuluFileChooser(true); + fcTransect.setAcceptAllFileFilterUsed(true); + fcTransect.setFileFilter(PivUtils.FILE_FLT_BATHY); + fcTransect.setSelectedFile(new File("trans0001.bth_dat")); + fcTransect.setMultiSelectionEnabled(false); + fcTransect.setDialogTitle(PivResource.getS("S\xE9lection d'un fichier transect")); + } + if (fcTransect.showOpenDialog(impl.getFrame()) == CtuluFileChooser.CANCEL_OPTION) { return; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2017-01-25 16:13:09
|
Revision: 9530 http://sourceforge.net/p/fudaa/svn/9530 Author: deniger Date: 2017-01-25 16:13:07 +0000 (Wed, 25 Jan 2017) Log Message: ----------- javadoc + renommage de classes pour etre plus claire Modified Paths: -------------- trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/CtuluPair.java Modified: trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/CtuluPair.java =================================================================== --- trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/CtuluPair.java 2017-01-25 16:13:00 UTC (rev 9529) +++ trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/CtuluPair.java 2017-01-25 16:13:07 UTC (rev 9530) @@ -1,7 +1,7 @@ package org.fudaa.ctulu; /** - * @author genesis + * @author Fred Deniger * @param <T> */ public class CtuluPair<T> implements Comparable<CtuluPair<T>> { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2017-01-25 16:13:02
|
Revision: 9529 http://sourceforge.net/p/fudaa/svn/9529 Author: deniger Date: 2017-01-25 16:13:00 +0000 (Wed, 25 Jan 2017) Log Message: ----------- javadoc + renommage de classes pour etre plus claire Modified Paths: -------------- trunk/soft/fudaa-crue/crue-emh/src/main/java/org/fudaa/dodico/crue/metier/ScenarioAutoModifiedState.java trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/ArgumentLineAnalyser.java trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/ProjectLoadProgressRunnable.java trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/ScenarioLoaderServiceAbstract.java trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/services/ModellingScenarioServiceImpl.java trunk/soft/fudaa-crue/ui-post/src/main/java/org/fudaa/fudaa/crue/post/services/PostServiceImpl.java Modified: trunk/soft/fudaa-crue/crue-emh/src/main/java/org/fudaa/dodico/crue/metier/ScenarioAutoModifiedState.java =================================================================== --- trunk/soft/fudaa-crue/crue-emh/src/main/java/org/fudaa/dodico/crue/metier/ScenarioAutoModifiedState.java 2017-01-25 15:06:46 UTC (rev 9528) +++ trunk/soft/fudaa-crue/crue-emh/src/main/java/org/fudaa/dodico/crue/metier/ScenarioAutoModifiedState.java 2017-01-25 16:13:00 UTC (rev 9529) @@ -3,7 +3,10 @@ */ package org.fudaa.dodico.crue.metier; +import org.fudaa.dodico.crue.metier.emh.EMHScenario; + /** + * Contient un etat des modifications appporteés automatiquement lors du chargement du scenario. * * @author Frederic Deniger */ @@ -14,40 +17,79 @@ private boolean profilModified; private boolean ordResModified; + /** + * des EMHs ont été réordonnées + * + * @see EMHScenario#sort() + */ public void setReorderedDone() { this.reorderedDone = true; } + /** + * @return true si des EMHs ont été réordonnées + * @see EMHScenario#sort() + */ public boolean isReorderedDone() { return reorderedDone; } + /** + * + * + * @return true si des EMHS/lois ont été renommées (Crue 9) + */ public boolean isRenamedDone() { return renamedDone; } + /** + * + * @return true si des Profiles ont été modifies + * @see org.fudaa.dodico.crue.validation.ValidateAndRebuildProfilSection + */ public boolean isProfilModified() { return profilModified; } + /** + * + * @return si des OrdRes ont été modifiés + */ public boolean isOrdResModified() { return ordResModified; } - - + /** + * A appeler si des EMHS/lois ont été renommées (Crue 9) + */ public void setRenamedDone() { this.renamedDone = true; } + /** + * A appeler si des Profiles ont été modifies + * + * @see org.fudaa.dodico.crue.validation.ValidateAndRebuildProfilSection + */ public void setProfilModified() { this.profilModified = true; } + /** + * A appeler si des OrdRes ont été modifiés + * + * @see org.fudaa.dodico.crue.validation.ValidatorORES + * + */ public void setOrdResModified() { this.ordResModified = true; } + /** + * + * @return true si au moins une modification a été apportée + */ public boolean isNormalized() { return renamedDone || reorderedDone || profilModified || ordResModified; } Modified: trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/ArgumentLineAnalyser.java =================================================================== --- trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/ArgumentLineAnalyser.java 2017-01-25 15:06:46 UTC (rev 9528) +++ trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/ArgumentLineAnalyser.java 2017-01-25 16:13:00 UTC (rev 9529) @@ -14,28 +14,53 @@ import org.openide.windows.WindowManager; /** + * Ne contient pas de lookup. Un service utilise par Netbeans RCP pour traiter les arguements de lancement de l'application. + * Dans le cas de Fudaa-Crue permet de gérer le multi-instance de Fudaa-Crue: demnader de remettre en avant-plan l'application Fudaa-Crue ou ouvrir une nouvelle + * instance qui ne sera pas persistée. * * @author deniger */ @ServiceProvider(service = OptionProcessor.class) public class ArgumentLineAnalyser extends OptionProcessor { + /** + * Clé de l'option pour remettre en avant-plan l'application Fudaa-Crue ( l'utilisateur clique plusieurs fois sur l'icone) + */ private static final String TO_FRONT_OPTION = "toFront"; + /** + * Clé de l'option lancer une nouvelle instance qui contiendra une copie temporaire des fichiers de configuration de Nebeans RCP. + */ private static final String IS_COPY_OPTION = "isCopy"; -// private Set<File> userDirOpened = new HashSet<File>(); - private Option openMultiInstances = Option.withoutArgument(Option.NO_SHORT_NAME, "multi-instances"); - private Option toFront = Option.withoutArgument(Option.NO_SHORT_NAME, TO_FRONT_OPTION); - private Option isCopy = Option.withoutArgument(Option.NO_SHORT_NAME, IS_COPY_OPTION); + /** + * ouverture multi-instance + */ + private final Option openMultiInstances = Option.withoutArgument(Option.NO_SHORT_NAME, "multi-instances"); + /** + * Reactiver la fenetre Fudaa-Crue + */ + private final Option toFront = Option.withoutArgument(Option.NO_SHORT_NAME, TO_FRONT_OPTION); + /** + * nouvelle instance avec copie des fichiers de configuration. + */ + private final Option isCopy = Option.withoutArgument(Option.NO_SHORT_NAME, IS_COPY_OPTION); + /** + * Un cas de lancements mutliples est detecté: gestion de ces cas de figure + */ private void activateOrCreateNewInstance() { + //propose un choix à u l'utilisateur MultiNetbeansInstanceChooser.Result res = MultiNetbeansInstanceChooser.choose(getOpenedInstances(true)); + //il veut créer une nouvelle instance if (res.isCreateNew()) { launchNewInstance(); + //il veut activer une instance existante } else if (res.isActivateExisting()) { OpenedNetbeansInstance instance = res.getInstance(); + //c'est l'instance en cours: simple on bouge met le focus sur la fenetre principale if (instance.isCurrent()) { moveMainWindowToFront(); } else { + //sinon on relance Fudaa-crue.exe dans le bon dossier userDir en demande d'activer l'autre instance... activateInstance(instance.getUserDir()); } } @@ -53,7 +78,6 @@ if (!openedInstances.isEmpty()) { Result choose = MultiNetbeansInstanceChooser.choose(openedInstances); if (choose.isActivateExisting()) { - //WindowManager.getDefault().getMainWindow().setVisible(false); activateInstance(choose.getInstance().getUserDir()); System.exit(0); } else if (choose.isCancel()) { @@ -63,6 +87,9 @@ } } + /** + * Une instance est déjà lancée: il faut demander à l'utilisateur ce qu'il veut faire. + */ private void instanceAlreadyLaunched() { EventQueue.invokeLater(new Runnable() { @@ -73,6 +100,9 @@ }); } + /** + * Création d'une nouvelle instance en copiant les fichiers de configuration userDir. + */ private void launchNewInstance() { try { File newUserDir = MultiNetbeansInstanceUtils.createNewUserDir(); @@ -82,14 +112,25 @@ } } + /** + * + * @param userDir permet d'identifier l'instance à activer + */ private void activateInstance(File userDir) { launchAppli(userDir, "--" + TO_FRONT_OPTION); } + /** + * Lancement de Fudaa-Crue dans le userDir fourni et avec l'option donnée + * + * @param newUserDir le userDir a utiliser + * @param option l'option + */ private void launchAppli(File newUserDir, final String option) { File platformDir = new File(System.getProperty("netbeans.home")); File binDir = new File(platformDir.getParentFile(), "bin"); + //on relance l'exe avec la bonne option: File exe = new File(binDir, MultiNetbeansInstanceUtils.isWindows() ? "fudaacrue.exe" : "fudaacrue"); ProcessBuilder builder = new ProcessBuilder(exe.getAbsolutePath(), "--userdir", newUserDir.getAbsolutePath(), option); try { @@ -99,7 +140,10 @@ } } - public void moveMainWindowToFront() { + /** + * Envoie la fenetre de l'application courante en avant-plan. + */ + private void moveMainWindowToFront() { EventQueue.invokeLater(new Runnable() { @Override @@ -109,6 +153,10 @@ }); } + /** + * + * @return les 3 options: multi-instances, toFront et nouvelle instance. + */ @Override protected Set<Option> getOptions() { HashSet set = new HashSet(); @@ -118,12 +166,19 @@ return set; } + /** + * + * @param includeCurrent si true, l'instance courante doit être ajouté à la liste + * @return liste des instances de Netbeans ouvertes. + */ private List<OpenedNetbeansInstance> getOpenedInstances(boolean includeCurrent) { + //le résultats List<OpenedNetbeansInstance> openedIstance = new ArrayList<>(); if (includeCurrent) { OpenedNetbeansInstance thisInstance = new OpenedNetbeansInstance(MultiNetbeansInstanceUtils.getUserDir(), MultiNetbeansInstanceUtils.getMainWindowTitle(), true); openedIstance.add(thisInstance); } + //on parcourt la listes des instances ouvertes: List<File> userDirOpened = MultiNetbeansInstanceUtils.listUserDir(); for (File userDir : userDirOpened) { File frameName = MultiNetbeansInstanceUtils.getFrameName(userDir); @@ -138,6 +193,13 @@ return openedIstance; } + /** + * traitement des arguments de l'application pour réactiver une instance (toFront) ou créer une nouvelle instance. + * + * @param env non utilisé + * @param maps les options passées en parametres + * @throws CommandException + */ @Override protected void process(Env env, Map<Option, String[]> maps) throws CommandException { //for copied instances we just move to front. Modified: trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/ProjectLoadProgressRunnable.java =================================================================== --- trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/ProjectLoadProgressRunnable.java 2017-01-25 15:06:46 UTC (rev 9528) +++ trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/ProjectLoadProgressRunnable.java 2017-01-25 16:13:00 UTC (rev 9529) @@ -28,12 +28,24 @@ this.run = run; } + /** + * met à jour la barre de progression (indeterminate) et charge le scenario/run. + * + * @param handle + * @return + */ @Override public ScenarioLoaderOperation run(ProgressHandle handle) { handle.switchToIndeterminate(); return load(); } + /** + * Lance directement le chargement via {@link ScenarioLoader} + * + * @return le resultat du chargement du scenario. + * @see ScenarioLoader + */ public ScenarioLoaderOperation load() { ScenarioLoader loader = new ScenarioLoader(scenario, projet, projet.getCoeurConfig()); return loader.load(run); Modified: trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/ScenarioLoaderServiceAbstract.java =================================================================== --- trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/ScenarioLoaderServiceAbstract.java 2017-01-25 15:06:46 UTC (rev 9528) +++ trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/ScenarioLoaderServiceAbstract.java 2017-01-25 16:13:00 UTC (rev 9529) @@ -18,59 +18,131 @@ import org.openide.util.lookup.InstanceContent; /** + * Classe abstraite pour les services gerant le cycle de vie d'un scenario. + * <table border="1" cellpadding="3" cellspacing="0" summary="lookups"> + * <tr> + * <th align="left">Lookup</th> + * <th align="left">Commentaire</th> + * <th align="left">Méthode utilisant le lookup</th> + * </tr> + * <tr> + * <td>{@link EMHScenario}</td> + * <td> + * Le scenario chargé + * </td> + * <td><code>{@link #getScenarioLoaded()}</code></td> + * </tr> + * <tr> + * <td>{@link ManagerEMHScenario}</td> + * <td> Le ManagerEMHScenario chargé: contient en plus des infos sur le run chargé mais non utile ici + * <td><code>{@link #getManagerScenarioLoaded()}</code></td> + * </tr> + * <tr> + * <td>{@link EMHRun}</td> + * <td> Le run chargé</td> + * <td><code>{@link #getRunLoaded()}</code></td> + * </tr> + ** <tr> + * <td>{@link org.fudaa.ctulu.CtuluLogGroup}</td> + * <td>Bilan de la dernière opération effectuée dans la perspective</td> + * <td><code>{@link #getLastLogsGroup()}</code></td> + * </tr> + * </table> * * @author deniger */ public class ScenarioLoaderServiceAbstract implements Lookup.Provider { - + + //les lookups: protected InstanceContent dynamicContent = new InstanceContent(); protected Lookup lookup = new AbstractLookup(dynamicContent); + //pour suivre la selection de la perspective. SelectedPerspectiveService service = Lookup.getDefault().lookup(SelectedPerspectiveService.class); + //la perspective utilisant cette classe. private final PerspectiveEnum perspectiveToActive; - + + /** + * + * @param perspectiveToActive la perspective a activer après le chargement d'un scenario. + */ public ScenarioLoaderServiceAbstract(PerspectiveEnum perspectiveToActive) { this.perspectiveToActive = perspectiveToActive; } - + + /** + * + * @return le scenario chargé + */ public EMHScenario getScenarioLoaded() { return lookup.lookup(EMHScenario.class); } - + + /** + * + * @return true si scenario chargé + */ public boolean isScenarioLoaded() { return getScenarioLoaded() != null; } - + + /** + * + * @return le managerEMHScenario chargé + */ public ManagerEMHScenario getManagerScenarioLoaded() { return lookup.lookup(ManagerEMHScenario.class); } - + + /** + * + * @return le run chargé. + */ public EMHRun getRunLoaded() { return lookup.lookup(EMHRun.class); } - + + /** + * + * @return true si run chargé + */ protected boolean isRunLoaded() { return getRunLoaded() != null; } - + @Override public Lookup getLookup() { return lookup; } - + + /** + * + * @return bilan de la dernière opération. + */ public CtuluLogGroup getLastLogsGroup() { return lookup.lookup(CtuluLogGroup.class); } - + + /** + * + * @param ctuluLogGroup le nouveau bilan a persister. + */ protected void updateLastLogsGroup(CtuluLogGroup ctuluLogGroup) { CtuluLogGroup lastLogsGroup = getLastLogsGroup(); + //on enleve le précédent if (lastLogsGroup != null) { dynamicContent.remove(lastLogsGroup); } + //et ajoute le nouveau. if (ctuluLogGroup != null) { dynamicContent.add(ctuluLogGroup); } } - + + /** + * Decharge l'ensemble: Scenario, ManagerEMHScenario, Run et le dernier bilan. + * + * @return toujours true + */ public boolean unloadScenario() { final EMHRun runLoaded = getRunLoaded(); if (runLoaded != null) { @@ -89,45 +161,68 @@ dynamicContent.remove(scenarioLoaded); } return true; - + } - protected boolean addLogToLookup = false; - + + /** + * Lors du chargement d'un scenario, des modifications automatiques peuvent être apportées. Si un service veut afficher ces modifications, il doit redéfinir + * cette methode. + * + * @param modificationDoneWhileLoading + */ protected void manageAutomaticModification(ScenarioAutoModifiedState modificationDoneWhileLoading) { } - + + /** + * Chargement du scenario/run avec mis à jour du bilan et activation de la perspective (voir constructeur) + * + * @param projet le projet + * @param managerScenario le scenario a charger + * @param run le run a chargé. Si null, ignoré. + * @return true si chargé + * @see ProjectLoadProgressRunnable + * @see org.fudaa.dodico.crue.projet.ScenarioLoader + */ protected boolean loadScenario(final EMHProjet projet, final ManagerEMHScenario managerScenario, final EMHRun run) { + //Chargement final ProjectLoadProgressRunnable projectLoadProgressRunnable = new ProjectLoadProgressRunnable(projet, managerScenario, run); final ScenarioLoaderOperation load = doLoad(projectLoadProgressRunnable, LoaderService.getNom(managerScenario, run)); - +//l'opération est terminée. On se place dans le thread swing pour mettre à jour les composants swing... EventQueue.invokeLater(new Runnable() { @Override public void run() { final EMHScenario result = load == null ? null : load.getResult(); if (result != null) { + //on active la perspective service.activePerspective(perspectiveToActive); + //on ferme eventuellement l'ancien scenario unloadScenario(); - if (addLogToLookup) { - dynamicContent.add(load.getLogs()); - } + //on charge les logs et le manager + dynamicContent.add(load.getLogs()); dynamicContent.add(managerScenario); + //on charge le run if (run != null) { dynamicContent.add(run); } + //et finalement le scenario + //attention l'ordre est important car beaucoup de service ecoute l'objet EMHScenario. + //en l'ajoutant à la fin, on est sur que ces services auront aussi accès aux autres données ( bilan, run, manager). dynamicContent.add(load.getResult()); } + //on affiche en avant-plan le bilan si des erreurs ont été trouvées: if (load.getLogs().containsError() || load.getLogs().containsFatalError()) { LogsDisplayer.displayError(load.getLogs(), CommonMessage.getMessage("LoadScenarioBilan.DialogTitle", managerScenario.getNom())); } + //et eventuellement les modifications opérées pendant le chargement. if (result != null) { manageAutomaticModification(load.getAutoModifiedState()); } } }); - + //return true si le scenario est bien présent: return load.getResult() != null; } - + public ScenarioLoaderOperation doLoad(final ProjectLoadProgressRunnable projectLoadProgressRunnable, final String nom) { ScenarioLoaderOperation load = null; if (EventQueue.isDispatchThread()) { Modified: trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/services/ModellingScenarioServiceImpl.java =================================================================== --- trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/services/ModellingScenarioServiceImpl.java 2017-01-25 15:06:46 UTC (rev 9528) +++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/services/ModellingScenarioServiceImpl.java 2017-01-25 16:13:00 UTC (rev 9529) @@ -25,22 +25,57 @@ import org.openide.util.lookup.ServiceProviders; /** + * Le service de base de la perspective Modélisation permettant de gérer le scenario ouvert: chargement, sauvegarde,... + * <table border="1" cellpadding="3" cellspacing="0" summary="lookups"> + * <tr> + * <th align="left">Lookup</th> + * <th align="left">Commentaire</th> + * <th align="left">Méthode utilisant le lookup</th> + * </tr> + * <tr> + * <td>{@link EMHScenario}</td> + * <td> + * Le scenario chargé + * </td> + * <td><code>{@link #getScenarioLoaded()}</code></td> + * </tr> + * <tr> + * <td>{@link ManagerEMHScenario}</td> + * <td> Le ManagerEMHScenario chargé: contient en plus des infos sur le run chargé mais non utile ici + * <td><code>{@link #getManagerScenarioLoaded()}</code></td> + * </tr> + * <tr> + * <td>{@link org.fudaa.ctulu.CtuluLogGroup}</td> + * <td>Bilan de la dernière opération effectuée dans la perspective</td> + * <td><code>{@link #getLastLogsGroup()}</code></td> + * </tr> + * </table> * * @author deniger */ @ServiceProviders(value = { - @ServiceProvider(service = ModellingScenarioService.class), + @ServiceProvider(service = ModellingScenarioService.class) + , @ServiceProvider(service = ModellingScenarioServiceImpl.class)}) public class ModellingScenarioServiceImpl extends ScenarioLoaderServiceAbstract implements ModellingScenarioService { - private EMHProjetServiceImpl projetService = Lookup.getDefault().lookup(EMHProjetServiceImpl.class); + private final EMHProjetServiceImpl projetService = Lookup.getDefault().lookup(EMHProjetServiceImpl.class); + private File tempDir; + private boolean reloading; + public ModellingScenarioServiceImpl() { super(PerspectiveEnum.MODELLING); - addLogToLookup = true; } - File tempDir; + /** + * Fait appel à la méthode de la classe parent. Créé en plus un dossier temporaire pour les sauvegardes. + * + * @param projet le projet contenant le scenario + * @param scenario le scenario a charger + * @return true sir le scenario a pu etre chargé. + * @see ScenarioLoaderServiceAbstract#loadScenario(org.fudaa.dodico.crue.metier.etude.EMHProjet, org.fudaa.dodico.crue.metier.etude.ManagerEMHScenario, org.fudaa.dodico.crue.metier.etude.EMHRun) + */ @Override public boolean loadScenario(EMHProjet projet, ManagerEMHScenario scenario) { boolean res = super.loadScenario(projet, scenario, null); @@ -54,10 +89,17 @@ return res; } + /** + * Avertit l'utilsateur des modifications apportées automatiquement lors du chargement du scenario + * + * @param modificationDoneWhileLoading les modifications effectuées au chargemenet + */ @Override protected void manageAutomaticModification(ScenarioAutoModifiedState modificationDoneWhileLoading) { + //le scenario a été normalisé if (modificationDoneWhileLoading.isNormalized()) { - + //il faut donc avertir l'utilsateur. + //invokeLater pour le faire après les actions en cours. EventQueue.invokeLater(new Runnable() { @Override public void run() { @@ -73,14 +115,18 @@ /** * Attention: a utiliser pour les tests uniquement ! * - * @param scenario - * @param projet + * @param scenario le scenario chargé + * @param projet le projet chargé. */ public void setForTest(EMHScenario scenario, EMHProjet projet) { super.dynamicContent.add(scenario); projetService.setForTest(projet); } + /** + * + * @return le dossier temp associé au scenario chargé. Utilisé pour sauvegarder en 2 etapes les fichiers par exemple + */ public File getTempDir() { return tempDir; } @@ -135,7 +181,7 @@ ModellingSaveProcessor saveProcessor = new ModellingSaveProcessor(); Pair<Set<String>, CtuluLogGroup> logs = CrueProgressUtils.showProgressDialogAndRun(saveProcessor, NbBundle.getMessage(ModellingSaveAction.class, - "CTL_ModellingSaveAction")); + "CTL_ModellingSaveAction")); updateLastLogsGroup(logs.second); if (!logs.first.isEmpty()) { projetService.scenarioSaved(getManagerScenarioLoaded(), logs.first); @@ -143,7 +189,6 @@ return !logs.second.containsFatalError(); } - boolean reloading; @Override public boolean isReloading() { Modified: trunk/soft/fudaa-crue/ui-post/src/main/java/org/fudaa/fudaa/crue/post/services/PostServiceImpl.java =================================================================== --- trunk/soft/fudaa-crue/ui-post/src/main/java/org/fudaa/fudaa/crue/post/services/PostServiceImpl.java 2017-01-25 15:06:46 UTC (rev 9528) +++ trunk/soft/fudaa-crue/ui-post/src/main/java/org/fudaa/fudaa/crue/post/services/PostServiceImpl.java 2017-01-25 16:13:00 UTC (rev 9529) @@ -36,7 +36,6 @@ public PostServiceImpl() { super(PerspectiveEnum.POST); - super.addLogToLookup = true; } private CrueRunLauncher getRunLauncher() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2017-01-25 15:06:48
|
Revision: 9528 http://sourceforge.net/p/fudaa/svn/9528 Author: deniger Date: 2017-01-25 15:06:46 +0000 (Wed, 25 Jan 2017) Log Message: ----------- javadoc + renommage de classes pour etre plus claire Modified Paths: -------------- trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/ScenarioLoader.java trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/create/RunCreator.java trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/create/RunCreatorOptions.java Modified: trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/ScenarioLoader.java =================================================================== --- trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/ScenarioLoader.java 2017-01-25 15:06:31 UTC (rev 9527) +++ trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/ScenarioLoader.java 2017-01-25 15:06:46 UTC (rev 9528) @@ -68,7 +68,7 @@ } /** - * @param run le run a charger + * @param run le run a charger. Sinon, seul le scenario est chargé. * @return */ public ScenarioLoaderOperation load(final EMHRun run) { Modified: trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/create/RunCreator.java =================================================================== --- trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/create/RunCreator.java 2017-01-25 15:06:31 UTC (rev 9527) +++ trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/create/RunCreator.java 2017-01-25 15:06:46 UTC (rev 9528) @@ -177,11 +177,11 @@ } } - //options.getSelectedRun() donne le run à partir duquel on va copier si possible les fichier de résultats ( si pas obsolètes) + //options.getSelectedRunToStartFrom() donne le run à partir duquel on va copier si possible les fichier de résultats ( si pas obsolètes) //on copie si possible les fichiers de résultats. - if (options.getSelectedRun() != null) { - Map<String, RunFile> resultFilesToCopy = projet.getRunFilesResultat(scenario, options.getSelectedRun()); + if (options.getSelectedRunToStartFrom() != null) { + Map<String, RunFile> resultFilesToCopy = projet.getRunFilesResultat(scenario, options.getSelectedRunToStartFrom()); Map<String, RunFile> destResultFiles = projet.getRunFilesResultat(scenario, newRun); RunPredecessorFileFinder finder = new RunPredecessorFileFinder(scenario, destResultFiles.values()); Modified: trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/create/RunCreatorOptions.java =================================================================== --- trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/create/RunCreatorOptions.java 2017-01-25 15:06:31 UTC (rev 9527) +++ trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/create/RunCreatorOptions.java 2017-01-25 15:06:46 UTC (rev 9528) @@ -25,7 +25,6 @@ /** * @param runContainingResultFile - * @param useInputFileFromStudy */ public RunCreatorOptions(EMHRun runContainingResultFile) { super(); @@ -58,7 +57,7 @@ /** * @return the run containing result Files to copy in the new created run ( if not obsolete) */ - public EMHRun getSelectedRun() { + public EMHRun getSelectedRunToStartFrom() { return runContainingResultFile; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2017-01-25 15:06:33
|
Revision: 9527 http://sourceforge.net/p/fudaa/svn/9527 Author: deniger Date: 2017-01-25 15:06:31 +0000 (Wed, 25 Jan 2017) Log Message: ----------- javadoc + renommage de classes pour etre plus claire Modified Paths: -------------- trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/LoaderService.java trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/ProjectLoadContainer.java trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/ProjectLoadProgressRunnable.java Modified: trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/LoaderService.java =================================================================== --- trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/LoaderService.java 2017-01-25 15:06:16 UTC (rev 9526) +++ trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/LoaderService.java 2017-01-25 15:06:31 UTC (rev 9527) @@ -33,46 +33,83 @@ public class LoaderService { /** + * + * @return Un FileFilter par defaut pour charger un fichier etu. + */ + private static FileFilter createEtuFileFilter() { + return Crue10FileFormat.createFileFilter(CrueFileType.ETU, EtuFile()); + } + + /** + * + * @param scenario le scenario. Si null renvoie chaine vide + * @param run le run. Si null renvoie uniquement le nom du scenario. + * @return chaine caractérisant le couple. Si run est nom renvoie uniquement le nom du scenario. + */ + public static String getNom(final ManagerEMHScenario scenario, EMHRun run) { + if (scenario == null) { + return ""; + } + if (run != null) { + return scenario.getNom() + "/" + run.getNom(); + } + return scenario.getNom(); + } + /** * le service gerant la configuration site. */ private final ConfigurationManagerService configurationManagerService = Lookup.getDefault().lookup(ConfigurationManagerService.class); - public static FileFilter createEtuFileFilter() { - return Crue10FileFormat.createFileFilter(CrueFileType.ETU, EtuFile()); - } - + /** + * + * @return {@link ConfigurationManagerService#getDefaultDataHome() } + */ public File getDefaultDataHome() { return configurationManagerService.getDefaultDataHome(); } + /** + * @return {@link org.fudaa.dodico.crue.config.coeur.CoeurManager#getSiteDir() } soit le dossier contenant les fichiers de configuration site. + */ public File getSiteDir() { return configurationManagerService.getCoeurManager().getSiteDir(); } + /** + * + * @param projet le projet à charger + * @param scenario le scenario à charger + * @param run le run à charger ( peut etre null) + * @return le scenario chargé + * @see #load(org.fudaa.dodico.crue.metier.etude.EMHProjet, org.fudaa.dodico.crue.metier.etude.ManagerEMHScenario, org.fudaa.dodico.crue.metier.etude.EMHRun, boolean) + */ public EMHScenario load(final EMHProjet projet, final ManagerEMHScenario scenario, EMHRun run) { return load(projet, scenario, run, false); } - public static String getNom(final ManagerEMHScenario scenario, EMHRun run) { - if (scenario == null) { - return ""; - } - if (run != null) { - return scenario.getNom() + "/" + run.getNom(); - } - return scenario.getNom(); - } - + /** + * + * @param projet le projet à charger + * @param scenario le scenario à charger + * @param run le run à charger ( peut etre null) + * @param displayOnlyIfError si true, le bilan de l'opération sera affiché que si des erreurs sont présentes. + * @return le scenario /run chargé + * @see ScenarioLoader + */ public EMHScenario load(final EMHProjet projet, final ManagerEMHScenario scenario, EMHRun run, boolean displayOnlyIfError) { ScenarioLoaderOperation load = null; + //si on est dans le thread swing, on bloque l'interface le temps du chargement -> pour eviter de figer la fenetre if (EventQueue.isDispatchThread()) { load = CrueProgressUtils.showProgressDialogAndRun(new ProjectLoadProgressRunnable(projet, scenario, run), scenario.getNom()); } else { + //sinon on charge le scenario ( thread non swing). ScenarioLoader loader = new ScenarioLoader(scenario, projet, projet.getCoeurConfig()); load = loader.load(run); } + //recuperation du bilan final boolean isLoadedWithoutFatalError = load.getResult() != null && !load.getLogs().containsFatalError(); + //on affiche le bilan en prenant en compte la valeur de displayOnlyIfError if (displayOnlyIfError) { if (load.getLogs().containsError() || load.getLogs().containsFatalError()) { LogsDisplayer.displayError(load.getLogs(), CommonMessage.getMessage("LoadScenarioBilan.DialogTitle", getNom(scenario, run))); @@ -80,36 +117,56 @@ } else if (load.getLogs().containsSomething()) { LogsDisplayer.displayError(load.getLogs(), CommonMessage.getMessage("LoadScenarioBilan.DialogTitle", getNom(scenario, run))); } + //on renvoie le resultats si pas d'erreur fatale return isLoadedWithoutFatalError ? load.getResult() : null; } - public ProjectLoadContainer loadProject(File toOpen) { - if (toOpen != null) { - CoeurConfigContrat findCoeurConfig = findCoeurConfig(toOpen); + /** + * Charge le fichier etu en respectant la configuration des coeurs (coeur par défaut, si plusieurs coeurs choix à faire...). + * + * @param etuFileToOpen: le fichier etu à ouvrir.si null renvoie null. + * @return le resultat de l'ouverture avec le projet et le fichier etu. + * @see OpenFileProcess + */ + public ProjectLoadContainer loadProject(File etuFileToOpen) { + if (etuFileToOpen != null) { + CoeurConfigContrat findCoeurConfig = findCoeurConfig(etuFileToOpen); if (findCoeurConfig == null) { return null; } - OpenFileProcess runner = new OpenFileProcess(toOpen, findCoeurConfig); + OpenFileProcess runner = new OpenFileProcess(etuFileToOpen, findCoeurConfig); final EMHProjet projet = runner.run(null); - return new ProjectLoadContainer(toOpen, projet); + return new ProjectLoadContainer(etuFileToOpen, projet); } return null; } + /** + * Ouvre un filechooser permettant de choisir un fichier etu. le dossier par défaut est donné par {@link #getDefaultDataHome() }. + * + * @return le fichier etu choisi par l'utilisateur + */ public File chooseEtuFile() { - File home = getDefaultDataHome();//TODO revoir ce point + File home = getDefaultDataHome(); + //on construit le filechooser: final FileChooserBuilder builder = new FileChooserBuilder(LoaderService.class).setTitle(ChooseEtu()). setDefaultWorkingDirectory(home).setApproveText(OpenEtu()); builder.setFilesOnly(true); - //a changer pour ne plus dépendre de cela: - final FileFilter composed = createEtuFileFilter(); - builder.setFileFilter(composed); - final EtuFileIconProvider badgeProvider = new EtuFileIconProvider(composed); + final FileFilter fileFilter = createEtuFileFilter(); + builder.setFileFilter(fileFilter); + //pour afficher différement les fichier etu: + final EtuFileIconProvider badgeProvider = new EtuFileIconProvider(fileFilter); builder.setBadgeProvider(badgeProvider); - File toOpen = builder.showOpenDialog(); - return toOpen; + //choix du fichier + return builder.showOpenDialog(); } + /** + * + * @param etuFile + * @return la configuration coeur correspondant au fichier etu. + * @see ConfigurationManagerService#chooseCoeur(java.lang.String) + */ private CoeurConfigContrat findCoeurConfig(File etuFile) { VersionResult findVersion = Crue10FileFormatFactory.findVersion(etuFile); if (findVersion.getLog().isNotEmpty()) { @@ -118,8 +175,12 @@ return configurationManagerService.chooseCoeur(findVersion.getVersion()); } + /** + * + * @return permet à l'utilisateur de choisir le fichier etu et l'ouvre par la suite. + * @see #loadProject(java.io.File) + */ public ProjectLoadContainer loadProject() { - File toOpen = chooseEtuFile(); return loadProject(toOpen); } Modified: trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/ProjectLoadContainer.java =================================================================== --- trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/ProjectLoadContainer.java 2017-01-25 15:06:16 UTC (rev 9526) +++ trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/ProjectLoadContainer.java 2017-01-25 15:06:31 UTC (rev 9527) @@ -5,23 +5,39 @@ /** * + * Contient le résultat d'une ouverture d'un fichier etu + * * @author deniger */ public class ProjectLoadContainer { - private File etuFile; - private EMHProjet projet; + private final File etuFile; + private final EMHProjet projet; + /** + * + * @param etuFile le fichier etu + * @param projet le projet correspondant + */ + public ProjectLoadContainer(File etuFile, EMHProjet projet) { + this.etuFile = etuFile; + this.projet = projet; + } + + /** + * + * @return le fichier etu + */ public File getEtuFile() { return etuFile; } + /** + * + * @return le project correspondant. + */ public EMHProjet getProjet() { return projet; } - public ProjectLoadContainer(File etuFile, EMHProjet projet) { - this.etuFile = etuFile; - this.projet = projet; - } } Modified: trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/ProjectLoadProgressRunnable.java =================================================================== --- trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/ProjectLoadProgressRunnable.java 2017-01-25 15:06:16 UTC (rev 9526) +++ trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/ProjectLoadProgressRunnable.java 2017-01-25 15:06:31 UTC (rev 9527) @@ -12,6 +12,7 @@ import org.netbeans.api.progress.ProgressRunnable; /** + * permet de charger un scenario/run en etant compatible avec Netbeans RCP et {@link ProgressRunnable} * * @author Frederic Deniger */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2017-01-25 15:06:18
|
Revision: 9526 http://sourceforge.net/p/fudaa/svn/9526 Author: deniger Date: 2017-01-25 15:06:16 +0000 (Wed, 25 Jan 2017) Log Message: ----------- javadoc + renommage de classes pour etre plus claire Modified Paths: -------------- trunk/soft/fudaa-crue/ui-study/src/main/java/org/fudaa/fudaa/crue/study/services/EMHProjetServiceImpl.java Added Paths: ----------- trunk/soft/fudaa-crue/ui-study/src/main/java/org/fudaa/fudaa/crue/study/services/FichierCrueManagerStateUpdater.java Modified: trunk/soft/fudaa-crue/ui-study/src/main/java/org/fudaa/fudaa/crue/study/services/EMHProjetServiceImpl.java =================================================================== --- trunk/soft/fudaa-crue/ui-study/src/main/java/org/fudaa/fudaa/crue/study/services/EMHProjetServiceImpl.java 2017-01-25 13:21:51 UTC (rev 9525) +++ trunk/soft/fudaa-crue/ui-study/src/main/java/org/fudaa/fudaa/crue/study/services/EMHProjetServiceImpl.java 2017-01-25 15:06:16 UTC (rev 9526) @@ -20,11 +20,7 @@ import org.fudaa.dodico.crue.metier.CrueFileType; import org.fudaa.dodico.crue.metier.etude.EMHProjet; import org.fudaa.dodico.crue.metier.etude.EMHRun; -import org.fudaa.dodico.crue.metier.etude.FichierCrue; -import org.fudaa.dodico.crue.metier.etude.FichierCrueManager; -import org.fudaa.dodico.crue.metier.etude.ManagerEMHModeleBase; import org.fudaa.dodico.crue.metier.etude.ManagerEMHScenario; -import org.fudaa.dodico.crue.metier.etude.ManagerEMHSousModele; import org.fudaa.dodico.crue.projet.EMHProjetController; import org.fudaa.dodico.crue.projet.calcul.ExecInputDefault; import org.fudaa.dodico.crue.projet.create.RunCalculOption; @@ -34,6 +30,7 @@ import org.fudaa.fudaa.crue.common.log.LogsDisplayer; import org.fudaa.fudaa.crue.common.property.listener.ListenerManager; import org.fudaa.fudaa.crue.common.services.EMHProjetService; +import org.fudaa.fudaa.crue.common.services.ModellingScenarioService; import org.fudaa.fudaa.crue.common.services.PostRunService; import org.fudaa.fudaa.crue.loader.LoaderService; import org.fudaa.fudaa.crue.loader.ProjectLoadContainer; @@ -432,6 +429,12 @@ return false; } + /** + * Methode interne pour activation d'un projet: persistence des infos, maj des listeners, maj du titre de l'application, construction des Nodes et modification du Lookup de ce service. + * + * @param project: le projet ouvert + * @param etuFile le fichier etu + */ void activeProject(EMHProjet project, File etuFile) { this.etuFile = etuFile; saveEtuFileLastModified(); @@ -462,14 +465,24 @@ } } + /** + * Nettoyage suite fermeture projet: suppression du lock sur le fichier etu, nettoyage des listeners, + * + * @param currentProject + */ private void unactiveProject(EMHProjet currentProject) { + //on enleve le lock if (!readOnly) { fileLocker.unlock(etuFile); } + //nettoie les noeuds nodesManager.clear(reloading); + //le listener sur le dossier du fichier etu listeners.clean(); + etuFolder = null; etuFile = null; + //RAS des infos locales: dynamicContent.remove(currentProject); lastModifiedEtuFile = 0; readOnly = false; @@ -488,10 +501,18 @@ return selectedProject == null ? null : selectedProject.getPropDefinition(); } + /** + * @return true si une etude est ouverte + */ public boolean isProjectOpened() { return getSelectedProject() != null; } + /** + * Maj du listener sur le dossier du fichier etu. + * + * @param project + */ private void registerListener(EMHProjet project) { File file = project.getDirOfFichiersEtudes(); try { @@ -505,10 +526,17 @@ } + /** + * @see getNodesManager() + * @see NodesManager#updateEtuFiles() + */ void updateEtuFiles() { getNodesManager().updateEtuFiles(); } + /** + * sauvegarde de l'eutude en cours ( historique, save et affichage des erreurs si présentes). + */ void quickSave() { assert !readOnly; createHistory(); @@ -523,14 +551,23 @@ } + /** + * Lancement d'un run et delegation au {@link PostRunService} pour la gestion du lancement. + * + * @param scenario le scenario pour lequel le run est lancé. + * @param options les options du run + */ public void launchRun(ManagerEMHScenario scenario, RunCreatorOptions options) { + //le fichier etu va être modifié: on sauvegarde la version en cours... createHistory(); if (this.postRunService == null) { postRunService = Lookup.getDefault().lookup(PostRunService.class); } + //est-ce que le run peut être lancé ? non -> on annule if (!postRunService.validConfigurationForRun(scenario, getSelectedProject().getCoeurConfig())) { return; } + //on créé le run à partir des options fournie EMHProjetController controller = getController(); CrueOperationResult<EMHRun> createRun = null; if (options == null) { @@ -538,86 +575,68 @@ } else { createRun = controller.createRun(scenario.getNom(), options, etuFile); } + //si messages, on les affiche if (createRun.getLogs().containsSomething()) { LogsDisplayer.displayError(createRun.getLogs(), NbBundle.getMessage(EMHProjetServiceImpl.class, "CreateRunError.DialogTitle", scenario.getNom())); } + //la creation a echouer-> on annule if (createRun.getResult() == null) { return; } + //creatiopn de la map des options: donne par type de fichiers, les actions (RunCalculOption) à effectuer. Map<CrueFileType, RunCalculOption> optionsByCompute; if (options == null) { optionsByCompute = RunCreatorOptions.createDefaultMap(); } else { optionsByCompute = options.getOptionsByCompute(); } + //lancement du run opéré par le service de Compte-Rrednu. postRunService.run(new ExecInputDefault(getSelectedProject(), scenario, createRun.getResult()), optionsByCompute); - + //on recharge l'etude. reload(NbBundle.getMessage(EMHProjetServiceImpl.class, "LogLaunchRunDefaultOption", scenario.getNom())); } + /** + * + * @return le fichier etu chargé. Null si pas chargé + */ public File getEtuFile() { return etuFile; } + /** + * Appelle {@link #launchRun(org.fudaa.dodico.crue.metier.etude.ManagerEMHScenario, org.fudaa.dodico.crue.projet.create.RunCreatorOptions)} sans options. + * + * @param scenario le scenario pour lequel le run est lancé. + */ public void launchRun(ManagerEMHScenario scenario) { launchRun(scenario, null); } + /** + * Appelé par {@link ModellingScenarioService} pour indiquer des modifications dans le scenario. + * Permet de mettre à jour les infos des conteneurs ( qui a modifie et quand ). + * + * @param managerScenarioLoaded + * @param modifiedFiles les fichiers modifiées + */ public void scenarioSaved(ManagerEMHScenario managerScenarioLoaded, Set<String> modifiedFiles) { + //on récupère les infos du user et le temps de modifications. ConnexionInformationFixed connexionInfo = new ConnexionInformationFixed(installationService.getConnexionInformation()); - updateModifiedState(managerScenarioLoaded, connexionInfo, modifiedFiles); + //mises à jour des infos pour le scenario chargé + FichierCrueManagerStateUpdater.updateModifiedState(managerScenarioLoaded, connexionInfo, modifiedFiles); List<ManagerEMHScenario> listeScenarios = getSelectedProject().getListeScenarios(); + //et tous les autres for (ManagerEMHScenario managerEMHScenario : listeScenarios) { - updateModifiedState(managerEMHScenario, connexionInfo, modifiedFiles); + FichierCrueManagerStateUpdater.updateModifiedState(managerEMHScenario, connexionInfo, modifiedFiles); } + //sauvegarde des infos. quickSave(); } - protected void updateModifiedState(ManagerEMHScenario scenario, ConnexionInformationFixed info, Set<String> modifiedFiles) { - if (isModified(modifiedFiles, scenario.getListeFichiers())) { - scenario.getInfosVersions().updateForm(info); - } - List<ManagerEMHModeleBase> modeles = scenario.getFils(); - for (ManagerEMHModeleBase modele : modeles) { - boolean modified = updateModifiedState(modele, info, modifiedFiles); - if (modified) { - scenario.getInfosVersions().updateForm(info); - } - } - } - - protected boolean isModified(Set<String> modifiedFiles, FichierCrueManager fichiers) { - if (fichiers == null) { - return false; - } - for (FichierCrue fichierCrue : fichiers.getFichiers()) { - if (modifiedFiles.contains(fichierCrue.getId())) { - return true; - } - } - return false; - } - - protected boolean updateModifiedState(ManagerEMHModeleBase modele, ConnexionInformationFixed info, Set<String> modifiedFiles) { - boolean res = isModified(modifiedFiles, modele.getListeFichiers()); - List<ManagerEMHSousModele> sousModeles = modele.getFils(); - for (ManagerEMHSousModele sousModele : sousModeles) { - boolean sousModeleModified = isModified(modifiedFiles, sousModele.getListeFichiers()); - if (sousModeleModified) { - res = true; - sousModele.getInfosVersions().updateForm(info); - } - } - if (res) { - modele.getInfosVersions().updateForm(info); - } - return res; - - } - boolean isProjetReadOnly() { return readOnly; } Added: trunk/soft/fudaa-crue/ui-study/src/main/java/org/fudaa/fudaa/crue/study/services/FichierCrueManagerStateUpdater.java =================================================================== --- trunk/soft/fudaa-crue/ui-study/src/main/java/org/fudaa/fudaa/crue/study/services/FichierCrueManagerStateUpdater.java (rev 0) +++ trunk/soft/fudaa-crue/ui-study/src/main/java/org/fudaa/fudaa/crue/study/services/FichierCrueManagerStateUpdater.java 2017-01-25 15:06:16 UTC (rev 9526) @@ -0,0 +1,88 @@ +/* +GPL 2 + */ +package org.fudaa.fudaa.crue.study.services; + +import java.util.List; +import java.util.Set; +import org.fudaa.dodico.crue.common.ConnexionInformation; +import org.fudaa.dodico.crue.metier.etude.FichierCrue; +import org.fudaa.dodico.crue.metier.etude.FichierCrueManager; +import org.fudaa.dodico.crue.metier.etude.ManagerEMHModeleBase; +import org.fudaa.dodico.crue.metier.etude.ManagerEMHScenario; +import org.fudaa.dodico.crue.metier.etude.ManagerEMHSousModele; + +/** + * Classe utilitaire pour mettre à jour l'etat des fichiers d'un scenario ( le modifier et la date). + * + * @see ConnexionInformation + * + * @author Frederic Deniger + */ +public class FichierCrueManagerStateUpdater { + + /** + * + * @param fichierCrueIdToCheck la collection de fichiers a tester + * @param fichiers les ids des fichiers modifiés + * @return true si la collection de fichiers contient un id donnée par <code>fichierCrueIdToCheck</code> + * @see FichierCrue#getId() + */ + private static boolean containsAtLeastOnFichierCrueId(Set<String> fichierCrueIdToCheck, FichierCrueManager fichiers) { + if (fichiers == null) { + return false; + } + for (FichierCrue fichierCrue : fichiers.getFichiers()) { + if (fichierCrueIdToCheck.contains(fichierCrue.getId())) { + return true; + } + } + return false; + } + + /** + * Mis a jour des états des conteneurs si un fichier contenu est modifié. + * + * @param scenario le scenario + * @param info les infos de modification ( auteur et date) + * @param idOfModifiedFiles les ids des fichiers modifiés + */ + protected static void updateModifiedState(ManagerEMHScenario scenario, ConnexionInformation info, Set<String> idOfModifiedFiles) { + if (containsAtLeastOnFichierCrueId(idOfModifiedFiles, scenario.getListeFichiers())) { + scenario.getInfosVersions().updateForm(info); + } + List<ManagerEMHModeleBase> modeles = scenario.getFils(); + for (ManagerEMHModeleBase modele : modeles) { + boolean modified = updateModifiedState(modele, info, idOfModifiedFiles); + //si un fichier d'un Modele/sous modele est modifié, il faut mettre à jour le scenario egalement. + if (modified) { + scenario.getInfosVersions().updateForm(info); + } + } + } + + /** + * Mis a jour des états du modele et des sous-modele: si l'id d'un fichier de ces conteneurs fait partis des modifiés, les infos du conteneur sont mis à jour. + * + * @param modele + * @param info les infos de modification ( auteur et date) + * @param idOfModifiedFiles les ids des fichiers modifiés + * @return true si un fichier modifié a été trouvé. + */ + private static boolean updateModifiedState(ManagerEMHModeleBase modele, ConnexionInformation info, Set<String> idOfModifiedFiles) { + boolean res = containsAtLeastOnFichierCrueId(idOfModifiedFiles, modele.getListeFichiers()); + List<ManagerEMHSousModele> sousModeles = modele.getFils(); + for (ManagerEMHSousModele sousModele : sousModeles) { + boolean sousModeleModified = containsAtLeastOnFichierCrueId(idOfModifiedFiles, sousModele.getListeFichiers()); + if (sousModeleModified) { + res = true; + sousModele.getInfosVersions().updateForm(info); + } + } + if (res) { + modele.getInfosVersions().updateForm(info); + } + return res; + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-01-24 16:12:33
|
Revision: 9524 http://sourceforge.net/p/fudaa/svn/9524 Author: bmarchan Date: 2017-01-24 16:12:30 +0000 (Tue, 24 Jan 2017) Log Message: ----------- PIV : Tooltip action Auto cache Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivAutoCacheAction.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivAutoCacheAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivAutoCacheAction.java 2017-01-24 15:39:14 UTC (rev 9523) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivAutoCacheAction.java 2017-01-24 16:12:30 UTC (rev 9524) @@ -31,6 +31,7 @@ */ public PivAutoCacheAction(PivImplementation _impl) { super(PivResource.getS("Cache des images automatique"), null, "PIV_AUTO_CACHE"); + setDefaultToolTip(PivResource.getS("S\xE9lectionn\xE9 : Calcule toutes les images pour l'affichage. Ralentit l\xE9g\xE8rement les calculs de vitesses.")); impl=_impl; setEnabled(true); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2017-01-24 15:39:15
|
Revision: 9523 http://sourceforge.net/p/fudaa/svn/9523 Author: bmarchan Date: 2017-01-24 15:39:14 +0000 (Tue, 24 Jan 2017) Log Message: ----------- Fix LSPIV : Inversion EXPORT_SRC et EXPORT_TRANSF images Modified Paths: -------------- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportImagesAction.java Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportImagesAction.java =================================================================== --- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportImagesAction.java 2017-01-20 17:00:57 UTC (rev 9522) +++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportImagesAction.java 2017-01-24 15:39:14 UTC (rev 9523) @@ -49,7 +49,7 @@ * @param _impl L'implementation. */ public PivExportImagesAction(PivImplementation _impl, boolean _exportSrc) { - super((_exportSrc ? TXTEXPORTERSRC:TXTEXPORTERTRANSF)+"...", null, _exportSrc ? "EXPORT_TRANSF_IMAGES":"EXPORT_SRC_IMAGES"); + super((_exportSrc ? TXTEXPORTERSRC:TXTEXPORTERTRANSF)+"...", null, _exportSrc ? "EXPORT_SRC_IMAGES":"EXPORT_TRANSF_IMAGES"); exportSrc_=_exportSrc; impl=_impl; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2017-01-20 17:01:00
|
Revision: 9522 http://sourceforge.net/p/fudaa/svn/9522 Author: deniger Date: 2017-01-20 17:00:57 +0000 (Fri, 20 Jan 2017) Log Message: ----------- javadoc Modified Paths: -------------- trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/services/AbstractPerspectiveService.java Added Paths: ----------- trunk/soft/fudaa-crue/ui-common/nbactions.xml Added: trunk/soft/fudaa-crue/ui-common/nbactions.xml =================================================================== --- trunk/soft/fudaa-crue/ui-common/nbactions.xml (rev 0) +++ trunk/soft/fudaa-crue/ui-common/nbactions.xml 2017-01-20 17:00:57 UTC (rev 9522) @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<actions> + <action> + <actionName>CUSTOM-report</actionName> + <displayName>report</displayName> + <goals> + <goal>javancss:report</goal> + </goals> + </action> + </actions> Modified: trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/services/AbstractPerspectiveService.java =================================================================== --- trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/services/AbstractPerspectiveService.java 2017-01-20 10:01:54 UTC (rev 9521) +++ trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/services/AbstractPerspectiveService.java 2017-01-20 17:00:57 UTC (rev 9522) @@ -23,7 +23,7 @@ * @author Fred Deniger */ public abstract class AbstractPerspectiveService implements PerspectiveService { - + protected static void activateTopComponentAndSetSelection(TopComponent findTopComponent, Node[] saved) { findTopComponent.requestActive(); if (findTopComponent instanceof ExplorerManager.Provider) { @@ -32,14 +32,14 @@ if (explorerManager != null) { explorerManager.setSelectedNodes(saved); } - + } catch (PropertyVetoException ex) { Exceptions.printStackTrace(ex); } } - + } - + protected static void clearSelection(TopComponent findTopComponent) { if (findTopComponent instanceof ExplorerManager.Provider) { try { @@ -47,13 +47,13 @@ if (explorerManager != null) { explorerManager.setSelectedNodes(new Node[0]); } - + } catch (PropertyVetoException ex) { Exceptions.printStackTrace(ex); } } } - + private final PerspectiveEnum perspective; private final PropertyChangeSupport propertyChangeSupport; private PerspectiveState state = PerspectiveState.MODE_READ_ONLY_TEMP; @@ -68,17 +68,20 @@ this.perspective = perspective; propertyChangeSupport = new PropertyChangeSupport(this); } - + @Override public PerspectiveEnum getPerspective() { return perspective; } /** - * R + * Rafraichit les TopComponent ouverts ( l'état editable). Concrètement, cette methode modifie la sélection ce qui permet de mettre à jour les propriétés + * "editable" des JComponents du TopComponent + * + * @see #setState(org.fudaa.fudaa.crue.common.services.PerspectiveState) */ protected void refreshTopComponents() { - + //pour être sur de toujours travailler dans le Thread Swing if (!EventQueue.isDispatchThread()) { EventQueue.invokeLater(new Runnable() { @Override @@ -88,11 +91,13 @@ }); return; } + //on enregistre la sélection en cours du TopComponent actif TopComponent activated = TopComponent.getRegistry().getActivated(); Node[] saved = null; if (activated != null) { saved = TopComponentHelper.getSelectedNode(activated); } + //on efface la sélection de tous les TopComponent ouverts Map<String, Collection<TopComponent>> openedTopComponentById = TopComponentHelper.getOpenedTopComponentById(); for (String string : getDefaultTopComponents()) { Collection<TopComponent> listOfTc = openedTopComponentById.get(string); @@ -102,35 +107,37 @@ } } } + //on réapplique la sélection du TopComponent actif if (activated != null) { if (saved != null) { activateTopComponentAndSetSelection(activated, saved); } + //on remet le focus sur le TopComponent actif activated.requestActive(); - + } } - + @Override public void addStateListener(PropertyChangeListener listener) { propertyChangeSupport.addPropertyChangeListener("state", listener); } - + @Override public void removeStateListener(PropertyChangeListener listener) { propertyChangeSupport.removePropertyChangeListener("state", listener); } - + @Override public void addDirtyListener(PropertyChangeListener listener) { propertyChangeSupport.addPropertyChangeListener("dirty", listener); } - + @Override public void removeDirtyListener(PropertyChangeListener listener) { propertyChangeSupport.removePropertyChangeListener("dirty", listener); } - + @Override public PerspectiveState getState() { return state; @@ -151,7 +158,7 @@ public boolean isActive() { return active; } - + @Override public boolean deactivate() { if (isDirty()) { @@ -163,7 +170,7 @@ } return true; } - + @Override public boolean isDirty() { return dirty; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2017-01-20 10:01:57
|
Revision: 9521 http://sourceforge.net/p/fudaa/svn/9521 Author: deniger Date: 2017-01-20 10:01:54 +0000 (Fri, 20 Jan 2017) Log Message: ----------- javadoc Modified Paths: -------------- trunk/soft/fudaa-crue/ui-planimetry/src/main/java/org/fudaa/fudaa/crue/planimetry/action/AbstractAddAction.java Modified: trunk/soft/fudaa-crue/ui-planimetry/src/main/java/org/fudaa/fudaa/crue/planimetry/action/AbstractAddAction.java =================================================================== --- trunk/soft/fudaa-crue/ui-planimetry/src/main/java/org/fudaa/fudaa/crue/planimetry/action/AbstractAddAction.java 2017-01-20 09:59:33 UTC (rev 9520) +++ trunk/soft/fudaa-crue/ui-planimetry/src/main/java/org/fudaa/fudaa/crue/planimetry/action/AbstractAddAction.java 2017-01-20 10:01:54 UTC (rev 9521) @@ -91,8 +91,11 @@ zone.unactive(getEditionComponent()); getCalqueDessin().setGele(true); //plus tard on remet la sélection en route. - EventQueue.invokeLater(() -> { - resetToSelection(); + EventQueue.invokeLater(new Runnable() { + @Override + public void run() { + resetToSelection(); + } }); } isUpdating = false; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2017-01-20 09:59:36
|
Revision: 9520 http://sourceforge.net/p/fudaa/svn/9520 Author: deniger Date: 2017-01-20 09:59:33 +0000 (Fri, 20 Jan 2017) Log Message: ----------- javadoc Modified Paths: -------------- trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/InitPerspectiveInstaller.java trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/services/AbstractPerspectiveService.java Modified: trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/InitPerspectiveInstaller.java =================================================================== --- trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/InitPerspectiveInstaller.java 2017-01-16 09:18:46 UTC (rev 9519) +++ trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/InitPerspectiveInstaller.java 2017-01-20 09:59:33 UTC (rev 9520) @@ -14,7 +14,6 @@ import javax.swing.UIManager; import org.fudaa.ebli.commun.EbliComponentFactory; import org.fudaa.ebli.palette.BPalettePlage; -import static org.fudaa.fudaa.crue.common.Bundle.*; import org.fudaa.fudaa.crue.common.editor.CustomColorChooser; import org.fudaa.fudaa.crue.common.editor.FileEditor; import org.fudaa.fudaa.crue.common.editor.LocalDateTimeEditor; @@ -65,15 +64,13 @@ } if (closing) { Set<TopComponent> opened = TopComponent.getRegistry().getOpened(); - opened.forEach((topComponent) -> { + for (TopComponent topComponent : opened) { topComponent.close(); - }); + } PerspectiveService perspectiveService = selectedPerspectiveService.getPerspectiveService(PerspectiveEnum.STUDY); if (perspectiveService != null) { - //on appelle ce closing sur la perspective STUDY pour delocker éventuellement le fichier etu closing = perspectiveService.closing(); } - JDialog d = new JDialog(); JLabel jLabel = new JLabel(FudaaCrueClosing_Label()); d.setTitle(jLabel.getText()); Modified: trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/services/AbstractPerspectiveService.java =================================================================== --- trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/services/AbstractPerspectiveService.java 2017-01-16 09:18:46 UTC (rev 9519) +++ trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/services/AbstractPerspectiveService.java 2017-01-20 09:59:33 UTC (rev 9520) @@ -8,18 +8,14 @@ import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.beans.PropertyVetoException; -import java.util.ArrayList; import java.util.Collection; -import java.util.HashMap; import java.util.Map; -import java.util.Set; import org.fudaa.fudaa.crue.common.PerspectiveEnum; import org.fudaa.fudaa.crue.common.helper.TopComponentHelper; import org.openide.explorer.ExplorerManager; import org.openide.nodes.Node; import org.openide.util.Exceptions; import org.openide.windows.TopComponent; -import org.openide.windows.WindowManager; /** * Template pour les services Perspective. @@ -27,7 +23,7 @@ * @author Fred Deniger */ public abstract class AbstractPerspectiveService implements PerspectiveService { - + protected static void activateTopComponentAndSetSelection(TopComponent findTopComponent, Node[] saved) { findTopComponent.requestActive(); if (findTopComponent instanceof ExplorerManager.Provider) { @@ -36,14 +32,14 @@ if (explorerManager != null) { explorerManager.setSelectedNodes(saved); } - + } catch (PropertyVetoException ex) { Exceptions.printStackTrace(ex); } } - + } - + protected static void clearSelection(TopComponent findTopComponent) { if (findTopComponent instanceof ExplorerManager.Provider) { try { @@ -51,13 +47,13 @@ if (explorerManager != null) { explorerManager.setSelectedNodes(new Node[0]); } - + } catch (PropertyVetoException ex) { Exceptions.printStackTrace(ex); } } } - + private final PerspectiveEnum perspective; private final PropertyChangeSupport propertyChangeSupport; private PerspectiveState state = PerspectiveState.MODE_READ_ONLY_TEMP; @@ -72,7 +68,7 @@ this.perspective = perspective; propertyChangeSupport = new PropertyChangeSupport(this); } - + @Override public PerspectiveEnum getPerspective() { return perspective; @@ -82,9 +78,14 @@ * R */ protected void refreshTopComponents() { - + if (!EventQueue.isDispatchThread()) { - EventQueue.invokeLater(this::refreshTopComponents); + EventQueue.invokeLater(new Runnable() { + @Override + public void run() { + refreshTopComponents(); + } + }); return; } TopComponent activated = TopComponent.getRegistry().getActivated(); @@ -106,31 +107,30 @@ activateTopComponentAndSetSelection(activated, saved); } activated.requestActive(); - + } } - - + @Override public void addStateListener(PropertyChangeListener listener) { propertyChangeSupport.addPropertyChangeListener("state", listener); } - + @Override public void removeStateListener(PropertyChangeListener listener) { propertyChangeSupport.removePropertyChangeListener("state", listener); } - + @Override public void addDirtyListener(PropertyChangeListener listener) { propertyChangeSupport.addPropertyChangeListener("dirty", listener); } - + @Override public void removeDirtyListener(PropertyChangeListener listener) { propertyChangeSupport.removePropertyChangeListener("dirty", listener); } - + @Override public PerspectiveState getState() { return state; @@ -151,7 +151,7 @@ public boolean isActive() { return active; } - + @Override public boolean deactivate() { if (isDirty()) { @@ -163,7 +163,7 @@ } return true; } - + @Override public boolean isDirty() { return dirty; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2017-01-11 22:10:07
|
Revision: 9516 http://sourceforge.net/p/fudaa/svn/9516 Author: deniger Date: 2017-01-11 22:10:05 +0000 (Wed, 11 Jan 2017) Log Message: ----------- javadoc Modified Paths: -------------- trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/services/AbstractSelectedEMHService.java trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/services/ModellingSelectedEMHService.java trunk/soft/fudaa-crue/ui-report/src/main/java/org/fudaa/fudaa/crue/report/service/ReportSelectedEMHService.java Modified: trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/services/AbstractSelectedEMHService.java =================================================================== --- trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/services/AbstractSelectedEMHService.java 2017-01-11 21:53:56 UTC (rev 9515) +++ trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/services/AbstractSelectedEMHService.java 2017-01-11 22:10:05 UTC (rev 9516) @@ -12,33 +12,74 @@ import org.openide.util.lookup.InstanceContent; /** - * conserve les UID des EMH sélectionnés + * conserve les UID des EMH sélectionnés dans une perspective. * + * <table border="1" cellpadding="3" cellspacing="0" summary="lookups"> + * <tr> + * <th align="left">Lookup</th> + * <th align="left">Commentaire</th> + * <th align="left">Méthodes utilisant le lookup</th> + * </tr> + * <tr> + * <td>{@link java.lang.Long}: </td> + * <td> les uids des EMHS sélectionnés. + * </td> + * <td>{@link #setSelectedEMHs(java.util.Collection)}, {@link #getSelectedUids()}, {@link #clearContent()}</td> + * </tr> + * </table> + * * @author Frederic Deniger */ public class AbstractSelectedEMHService implements Lookup.Provider { - private InstanceContent dynamicContent = new InstanceContent(); - private Lookup lookup = new AbstractLookup(dynamicContent); + /** + * le contenu du lookup du service + */ + private final InstanceContent dynamicContent = new InstanceContent(); + /** + * le lookup du service + */ + private final Lookup lookup = new AbstractLookup(dynamicContent); + /** + * true si le lookup est en cours de modifications ( vaudra true lors de l'ajout de plusieurs éléments et false à la fin de l'action). + */ + private boolean updating; + /** + * + * @return le lookup du service + */ @Override public Lookup getLookup() { return lookup; } - private boolean updating; + /** + * @return si la selection est en cours de mise à jour. + */ public boolean isUpdating() { return updating; } + /** + * efface la sélection en cours et la remplace par la nouvelle sélection {@code emhs}. + * Au cours des opérations {@link #isUpdating()} vaudra true, puis false à la fin de la modification du lookup du service + * + * @see EMH#getUiId() + * @param emhs la nouvelle sélectiond'EMHs ( on récupère les uid).: ne doit pas être null. + */ public void setSelectedEMHs(Collection<EMH> emhs) { + //on nettoie le contenu actuel. clearContent(); + //on ajoute la nouvelle selection final int size = emhs.size(); + //en cours de modification si au moins un element à ajouter if (size > 1) { updating = true; } int idx = 0; for (EMH emh : emhs) { + //pour envoyer un event à la dernière modification if (++idx == size) { updating = false; } @@ -47,14 +88,24 @@ updating = false; } + /** + * efface la sélection en cours et la remplace par la nouvelle sélection {@code emhs}. + * Au cours des opérations {@link #isUpdating()} vaudra true, puis false à la fin de la modification du lookup du service + * + * @param uids la nouvelle sélection d'uid ne doit pas être null + */ public void setSelectedUids(Collection<Long> uids) { + //on nettoie le contenu actuel. clearContent(); + //on ajoute la nouvelle selection final int size = uids.size(); + //en cours de modification si au moins un element à ajouter if (size > 1) { updating = true; } int idx = 0; for (Long uid : uids) { + //pour envoyer un event à la dernière modification if (++idx == size) { updating = false; } @@ -63,11 +114,19 @@ updating = false; } + /** + * + * @return ensemble des uid en cours de sélection. Jamais null. + */ public Set<Long> getSelectedUids() { return new HashSet<Long>(lookup.lookupAll(Long.class)); } - public void clearContent() { + /** + * Supprime la sélection courante. + */ + private void clearContent() { + //on recupere tous les uids sélectionnés et on les enleve du lookup. Collection<? extends Long> lookupAll = lookup.lookupAll(Long.class); final int size = lookupAll.size(); if (size > 1) { @@ -75,6 +134,7 @@ } int idx = 0; for (Long uid : lookupAll) { + //pour envoyer un event à la dernière modification if (++idx == size) { updating = false; } Modified: trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/services/ModellingSelectedEMHService.java =================================================================== --- trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/services/ModellingSelectedEMHService.java 2017-01-11 21:53:56 UTC (rev 9515) +++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/services/ModellingSelectedEMHService.java 2017-01-11 22:10:05 UTC (rev 9516) @@ -8,13 +8,19 @@ import org.openide.util.lookup.ServiceProvider; /** - * conserve les UID des EMH sélectionnés + * conserve les UID des EMH sélectionnées. Pour les lookup voir {@link org.fudaa.fudaa.crue.common.services.AbstractSelectedEMHService}. * + * @see org.fudaa.fudaa.crue.common.services.AbstractSelectedEMHService + * * @author Frederic Deniger */ @ServiceProvider(service = ModellingSelectedEMHService.class) public class ModellingSelectedEMHService extends AbstractSelectedEMHService implements Lookup.Provider { + /** + * + * @return le lookup du service + */ @Override public Lookup getLookup() { return super.getLookup(); Modified: trunk/soft/fudaa-crue/ui-report/src/main/java/org/fudaa/fudaa/crue/report/service/ReportSelectedEMHService.java =================================================================== --- trunk/soft/fudaa-crue/ui-report/src/main/java/org/fudaa/fudaa/crue/report/service/ReportSelectedEMHService.java 2017-01-11 21:53:56 UTC (rev 9515) +++ trunk/soft/fudaa-crue/ui-report/src/main/java/org/fudaa/fudaa/crue/report/service/ReportSelectedEMHService.java 2017-01-11 22:10:05 UTC (rev 9516) @@ -8,13 +8,19 @@ import org.openide.util.lookup.ServiceProvider; /** - * conserve les UID des EMH sélectionnés + * conserve les UID des EMH sélectionnées. Pour les lookup voir {@link org.fudaa.fudaa.crue.common.services.AbstractSelectedEMHService}. * + * @see org.fudaa.fudaa.crue.common.services.AbstractSelectedEMHService + * * @author Frederic Deniger */ @ServiceProvider(service = ReportSelectedEMHService.class) public class ReportSelectedEMHService extends AbstractSelectedEMHService implements Lookup.Provider { + /** + * + * @return le lookup du service + */ @Override public Lookup getLookup() { return super.getLookup(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2017-01-11 16:15:11
|
Revision: 9514 http://sourceforge.net/p/fudaa/svn/9514 Author: deniger Date: 2017-01-11 16:15:09 +0000 (Wed, 11 Jan 2017) Log Message: ----------- CRUE-728: le dialogue n'?\195?\169tait pas ouverte dans le bon mode. Modified Paths: -------------- trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/helper/DialogHelper.java Modified: trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/helper/DialogHelper.java =================================================================== --- trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/helper/DialogHelper.java 2017-01-11 16:13:29 UTC (rev 9513) +++ trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/helper/DialogHelper.java 2017-01-11 16:15:09 UTC (rev 9514) @@ -157,10 +157,7 @@ Component finalComp; if (createLayout) { - // création d'un layout pour le redimensionnement - JPanel pn = new JPanel(); - pn.setLayout(new BorderLayout()); - pn.add(cpn, BorderLayout.CENTER); + JPanel pn = createContainerPanel(cpn); finalComp = pn; } else { finalComp = cpn; @@ -214,6 +211,19 @@ /** * + * @param cpn + * @return un JPanel contenant cpn au centre + */ + public static JPanel createContainerPanel(final Component cpn) { + // création d'un layout pour le redimensionnement + JPanel pn = new JPanel(); + pn.setLayout(new BorderLayout()); + pn.add(cpn, BorderLayout.CENTER); + return pn; + } + + /** + * * @param pn la panel a afficher * @param dialogOption voir les options de CtuluDialog pour le dialog * @param table la table contenue This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2017-01-11 16:13:32
|
Revision: 9513 http://sourceforge.net/p/fudaa/svn/9513 Author: deniger Date: 2017-01-11 16:13:29 +0000 (Wed, 11 Jan 2017) Log Message: ----------- CRUE-728: le dialogue n'?\195?\169tait pas ouverte dans le bon mode. Modified Paths: -------------- trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/helper/DialogHelper.java Modified: trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/helper/DialogHelper.java =================================================================== --- trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/helper/DialogHelper.java 2017-01-11 16:07:25 UTC (rev 9512) +++ trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/helper/DialogHelper.java 2017-01-11 16:13:29 UTC (rev 9513) @@ -373,6 +373,14 @@ return DialogDisplayer.getDefault().notify(nd).equals(NotifyDescriptor.YES_OPTION); } + /** + * + * @param title le titre du dialog. + * @param message une string pour le message un JComponent. + * @param classToSave utiliser pour generer l'identifiant de persistance. + * @param version la version pour la persistence. + * @return true si l'utilisateur a valider sa saisie + */ public static boolean showQuestionAndSaveDialogConf(String title, Object message, Class classToSave, String version) { return showQuestionAndSaveDialogConf(title, message, classToSave, null, null, false, version); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |