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...> - 2008-07-11 16:26:30
|
Revision: 3685 http://fudaa.svn.sourceforge.net/fudaa/?rev=3685&view=rev Author: bmarchan Date: 2008-07-11 09:26:37 -0700 (Fri, 11 Jul 2008) Log Message: ----------- Acc?\195?\168s a l'aide locale. Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java 2008-07-11 16:17:25 UTC (rev 3684) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java 2008-07-11 16:26:37 UTC (rev 3685) @@ -8,25 +8,30 @@ package org.fudaa.fudaa.modeleur; import java.awt.Dimension; +import java.awt.EventQueue; import java.awt.Point; import java.awt.event.ActionEvent; import java.beans.PropertyVetoException; import java.io.File; import java.io.IOException; +import java.net.URL; import java.util.List; +import javax.swing.Action; import javax.swing.JComponent; import javax.swing.JInternalFrame; import javax.swing.JOptionPane; import javax.swing.filechooser.FileFilter; import org.fudaa.ctulu.CtuluExportDataInterface; +import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluLibFile; import org.fudaa.ctulu.CtuluRunnable; import org.fudaa.ctulu.CtuluTaskDelegate; import org.fudaa.ctulu.ProgressionInterface; import org.fudaa.ctulu.gui.CtuluDialogPanel; import org.fudaa.ctulu.gui.CtuluFileChooserTestWritable; +import org.fudaa.ctulu.gui.CtuluHelpComponent; import org.fudaa.ctulu.gui.CtuluLibDialog; import org.fudaa.ebli.calque.ZEbliFilleCalques; import org.fudaa.ebli.commun.EbliActionMap; @@ -35,6 +40,7 @@ import org.fudaa.fudaa.commun.FudaaLib; import org.fudaa.fudaa.commun.FudaaProjectStateListener; import org.fudaa.fudaa.commun.FudaaProjetStateInterface; +import org.fudaa.fudaa.commun.aide.FudaaHelpPanel; import org.fudaa.fudaa.commun.impl.FudaaCommonImplementation; import org.fudaa.fudaa.commun.impl.FudaaGuiLib; import org.fudaa.fudaa.commun.impl.FudaaLookPreferencesPanel; @@ -44,6 +50,7 @@ import org.fudaa.fudaa.sig.FSigLib; import org.fudaa.fudaa.sig.FSigProjectPersistence; import org.fudaa.fudaa.sig.FSigResource; +import org.fudaa.fudaa.tr.TrLauncherDefault; import org.fudaa.fudaa.tr.common.TrProjectImportPanel; import org.fudaa.fudaa.tr.common.TrProjectPersistence; import org.fudaa.fudaa.tr.common.TrResource; @@ -123,7 +130,7 @@ public MdlImplementation() { super(); - useNewHelp_ = true; + useNewHelp_ = false; } private File chooseNewFile(boolean _saveDialog) { @@ -237,6 +244,8 @@ create(); } else if ("IMPORT_PROJECT".equals(action)) { importProject(); + } else if ("AIDE_INDEX".equals(action)) { + displayHelp(getAideIndexUrl()); } else if (action.startsWith("TOGGLE")) { final BuColumn c = getMainPanel().getRightColumn(); final JComponent comp = c.getToggleComponent(action); @@ -296,6 +305,10 @@ updateActionsState(); } + protected String getAideIndexUrl() { + return getHelpDir() + "modeleur/index.html"; + } + public BuPreferences getApplicationPreferences() { return null; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-07-11 16:17:20
|
Revision: 3684 http://fudaa.svn.sourceforge.net/fudaa/?rev=3684&view=rev Author: bmarchan Date: 2008-07-11 09:17:25 -0700 (Fri, 11 Jul 2008) Log Message: ----------- Documentation du modeleur au format HTML. Added Paths: ----------- branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/ branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/Modeleur_popup_html.js branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/arbrecalques.zoom69.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/arbrecalquesselect.jpg branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/axis.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/boiteaoutilsdeplacer.jpg branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/boiteaoutilssemis.jpg branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/boutondeplacer.jpg branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/boutonmodesommet.jpg branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/boutonrechercher.zoom93.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/cicon1.gif branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/cicon2.gif branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/cicon9.gif branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/cicon_loadindex_ani.gif branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/configure.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/default.css branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/export-data.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/exporter.zoom86.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/helpman_topicinit.js branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/highlight.js branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/importberges.zoom81.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/importerdialogue.zoom63.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/importprofils.zoom82.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/importsemis.zoom64.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/index.html branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/info.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/layer-prev-view.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/legend.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleleur_demarrage.zoom63.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_common_editor_fr.htm branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_common_layers_export_fr.htm branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_common_layers_fr.htm branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_common_layers_selection_find_fr.htm branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_common_sig_fr.htm branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_common_vue2d_edition_fr.htm branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_content_dyn.html branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_content_static.html branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_first_project_fr.htm branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_ftsearch.html branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_howto_first_fr.htm branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_index_fr.htm branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_kwindex_dyn.html branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_kwindex_static.html branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_navigation.js branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/move.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/navigation.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/note.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/prepro-ed_32.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/restore.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/sauver.zoom62.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/selection-point.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/selection-poly.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/selectionentitepolygne.zoom80.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/selectionentiterecherche.zoom83.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/settings.js branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/sig-add-gr-panel.fr.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/sig-add-gr.fr.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/sig-add-var.fr.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/sig-edition.fr.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/sig.fr.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/table.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/tip.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/vue2d-edit-mass.fr.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/vue2d-edit-select-src.fr.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/vue2d-edit-src-files.fr.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/vue2d-edit-target.fr.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/vue2d-edit-zones.fr.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/vue2d-edition.fr.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/vue2doutilstableau.zoom58.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/vue2dselectionquelquespointsdusemis.zoom85.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/vue2dtableauentitesemis.zoom93.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/vue2dtableaupointssemis.zoom57.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/warning.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/zoom.png branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/zoom_index.js branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/zoom_pageinfo.js branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/zoom_search.js Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/Modeleur_popup_html.js =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/Modeleur_popup_html.js (rev 0) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/Modeleur_popup_html.js 2008-07-11 16:17:25 UTC (rev 3684) @@ -0,0 +1,40 @@ +/* --- Script \xA9 2005-2007 EC Software --- */ +var ua = navigator.userAgent; +var dom = (document.getElementById) ? true : false; +var ie4 = (document.all && !dom) ? true : false; +var ie5_5 = ((ua.indexOf("MSIE 5.5")>=0 || ua.indexOf("MSIE 6")>=0) && ua.indexOf("Opera")<0) ? true : false; +var ns4 = (document.layers && !dom) ? true : false; +var offsxy = 6; +function hmshowPopup(e, txt, stick) { + var tip = '<table border="1" cellpadding="6" cellspacing="0" bgcolor="#FFFFFF" style="{border-width:1px; border-color:#000000; border-collapse:collapse;}"><tr valign=top><td>'+ txt + '<\/td><\/tr><\/table>'; + var tooltip = atooltip(); + e = e?e:window.event; + var mx = ns4 ? e.PageX : e.clientX; + var my = ns4 ? e.PageY : e.clientY; + var obj = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ? window.document.documentElement : window.document.body; + var bodyl = (window.pageXOffset) ? window.pageXOffset : obj.scrollLeft; + var bodyt = (window.pageYOffset) ? window.pageYOffset : obj.scrollTop; + var bodyw = (window.innerWidth) ? window.innerWidth : obj.offsetWidth; + if (ns4) { + tooltip.document.write(tip); + tooltip.document.close(); + if ((mx + offsxy + bodyl + tooltip.width) > bodyw) { mx = bodyw - offsxy - bodyl - tooltip.width; if (mx < 0) mx = 0; } + tooltip.left = mx + offsxy + bodyl; + tooltip.top = my + offsxy + bodyt; + } + else { + tooltip.innerHTML = tip; + if (tooltip.offsetWidth) if ((mx + offsxy + bodyl + tooltip.offsetWidth) > bodyw) { mx = bodyw - offsxy - bodyl - tooltip.offsetWidth; if (mx < 0) mx = 0; } + tooltip.style.left = (mx + offsxy + bodyl)+"px"; + tooltip.style.top = (my + offsxy + bodyt)+"px"; + } + with(tooltip) { ns4 ? visibility="show" : style.visibility="visible" } + if (stick) document.onmouseup = hmhidePopup; +} +function hmhidePopup() { + var tooltip = atooltip(); + ns4 ? tooltip.visibility="hide" : tooltip.style.visibility="hidden"; +} +function atooltip(){ + return ns4 ? document.hmpopupDiv : ie4 ? document.all.hmpopupDiv : document.getElementById('hmpopupDiv') +} Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/Modeleur_popup_html.js ___________________________________________________________________ Name: svn:eol-style + native Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/arbrecalques.zoom69.png =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/arbrecalques.zoom69.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/arbrecalquesselect.jpg =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/arbrecalquesselect.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/axis.png =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/axis.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/boiteaoutilsdeplacer.jpg =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/boiteaoutilsdeplacer.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/boiteaoutilssemis.jpg =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/boiteaoutilssemis.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/boutondeplacer.jpg =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/boutondeplacer.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/boutonmodesommet.jpg =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/boutonmodesommet.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/boutonrechercher.zoom93.png =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/boutonrechercher.zoom93.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/cicon1.gif =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/cicon1.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/cicon2.gif =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/cicon2.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/cicon9.gif =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/cicon9.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/cicon_loadindex_ani.gif =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/cicon_loadindex_ani.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/configure.png =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/configure.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/default.css =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/default.css (rev 0) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/default.css 2008-07-11 16:17:25 UTC (rev 3684) @@ -0,0 +1,64 @@ +/* Text Styles */ +hr { color: #000000} +body, table /* Normal */ +{ + font-size: 10pt; + font-family: 'Arial'; + font-style: normal; + font-weight: normal; + color: #000000; + text-decoration: none; +} +span.f_CodeExample /* Code Example */ +{ + font-size: 8pt; + font-family: 'Courier New'; + color: #000000; +} +span.f_Comment /* Comment */ +{ +} +span.f_CourierFixed /* Courier Fixed */ +{ + font-size: 9pt; + font-family: 'Courier New'; + color: #000000; +} +span.f_Heading1 /* Heading1 */ +{ + font-size: 14pt; + font-weight: bold; + color: #ffffff; +} +span.f_ImageCaption /* Image Caption */ +{ + font-size: 8pt; + font-weight: bold; +} +span.f_Notes /* Notes */ +{ +} +/* Paragraph styles */ +p /* Normal */ +{ + text-align: left; + text-indent: 0px; + padding: 0px 0px 0px 0px; + margin: 0px 0px 0px 0px; +} +.p_CodeExample /* Code Example */ +{ + white-space: nowrap; +} +.p_Comment /* Comment */ +{ +} +.p_Heading1 /* Heading1 */ +{ +} +.p_ImageCaption /* Image Caption */ +{ +} +.p_Notes /* Notes */ +{ +} Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/default.css ___________________________________________________________________ Name: svn:eol-style + native Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/export-data.png =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/export-data.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/exporter.zoom86.png =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/exporter.zoom86.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/helpman_topicinit.js =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/helpman_topicinit.js (rev 0) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/helpman_topicinit.js 2008-07-11 16:17:25 UTC (rev 3684) @@ -0,0 +1,93 @@ +/* ---------------- Script \xA9 2006-2007 EC Software ---------------- +This script was created by Help & Manual. It is designed for use +in combination with the output of Help & Manual and must not +be used outside this context. http://www.helpandmanual.com + +Do not modify this file! It will be overwritten by Help & Manual. +-----------------------------------------------------------------*/ + +var topicInitScriptAvailable = true; +var HMToggles = new Array(); + +function HMToggleExpandAll(value) +{ + if (HMToggles.length != null){ + for (i=0; i<HMToggles.length; i++){ + HMToggleExpand(HMToggles[i], value); + } + } +} + +function HMToggle() +{ + var op = HMToggle.arguments[0]; + for (i=1; i<HMToggle.arguments.length; i++) { + var objID = HMToggle.arguments[i]; + var obj = document.getElementById(objID); + switch (op) { + case "toggle": + var state = obj.getAttribute("hm.state"); + if (state == null) { state = "0" }; + HMToggleExpand(obj, (state != "1")); + break; + + case "expand": + HMToggleExpand(obj, true); + break; + + case "collapse": + HMToggleExpand(obj, false); + break; + } + } +} + +function HMToggleExpand(obj, value) +{ + tagName = obj.nodeName.toLowerCase(); + switch (tagName) { + case "span": + obj.style.display = (value ? "inline" : "none"); + break; + case "table": + obj.style.display = (value ? "block" : "none"); + break; + case "img": + obj.src = (value ? obj.getAttribute("hm.src1") : obj.getAttribute("hm.src0")); + var newTitle = (value ? obj.getAttribute("hm.title1") : obj.getAttribute("hm.title0")); + if (newTitle != null) { obj.title = newTitle; } + var newCaption = (value ? obj.getAttribute("hm.caption1") : obj.getAttribute("hm.caption0")); + if (newCaption != null) { obj.parentNode.parentNode.parentNode.nextSibling.firstChild.firstChild.innerHTML = newCaption; } + break; + } + obj.setAttribute("hm.state", value ? "1" : "0"); +} + +function HMInitToggle() +{ + if (document.getElementById) { + var node = document.getElementById(HMInitToggle.arguments[0]); + for (i=1; i<HMInitToggle.arguments.length-1; i=i+2) { + if (HMInitToggle.arguments[i] == "onclick") { + node.onclick = Function(HMInitToggle.arguments[i+1]); + } + else { + node.setAttribute(HMInitToggle.arguments[i], decodeURI(HMInitToggle.arguments[i+1])); + } + if (HMInitToggle.arguments[i].substring(0,6) == "hm.src") { + var img = new Image(); + img.src = HMInitToggle.arguments[i+1]; + } + } + mustExpand = window.location.search.lastIndexOf("zoom_highlight") > 0; + if (node.nodeName.toLowerCase() == "img") { + var aLink = node.parentNode; + if (aLink.nodeName.toLowerCase() == "a") { + aLink.href = "javascript:HMToggle('toggle','" + HMInitToggle.arguments[0] +"')"; + mustExpand = false; + } + } + HMToggles[HMToggles.length] = node; + HMToggleExpand(node, ((node.getAttribute("hm.state") == "1") || mustExpand)); + } +} \ No newline at end of file Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/helpman_topicinit.js ___________________________________________________________________ Name: svn:eol-style + native Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/highlight.js =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/highlight.js (rev 0) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/highlight.js 2008-07-11 16:17:25 UTC (rev 3684) @@ -0,0 +1,251 @@ +// ---------------------------------------------------------------------------- +// Zoom Search Engine 4.3 (27/6/2006) +// Highlight & auto-scroll script +// +// email: zo...@wr... +// www: http://www.wrensoft.com +// +// Copyright (C) Wrensoft 2006 +// ---------------------------------------------------------------------------- +// Use this script to allow your search matches to highlight and scroll to +// the matched word on the actual web page where it was found. +// +// You will need to link to this JS file from each page of your site +// which requires the "highlight/jump to matched word" feature. +// +// For example, you could paste the following HTML in your site's header or +// footer: +// +// <style>.highlight { background: #FFFF40; }</style> +// <script type="text/javascript" src="highlight.js"></script> +// +// Note: You will need to specify the correct path to "highlight.js" depending +// on where the file is located. +// +// You will then need to modify the BODY tag on your page to include an "onLoad" +// attribute, such as: +// +// <body onload="highlight();"> +// +// If for some reason you can not modify the body tag of your page, an alternative +// would be to put the following line after the </body> tag of your page: +// +// <script type="text/javascript">highlight();</script> +// +// For more information, consult the Users Guide and our support website at: +// http://www.wrensoft.com/zoom/support +// +// +// This script is licensed for use with the Zoom Search Engine. Original +// development by Brett Alcock, VBasys Limited. To licence other applications +// email hig...@vb... with the subject "license". + +var CatchJSErrors = true; + +function catcherror() { return true; } +if (CatchJSErrors) +{ + window.onerror = catcherror; +} + +function QueryString(key) +{ + var value = null; + for (var i=0;i<QueryString.keys.length;i++) + { + if (QueryString.keys[i]==key) + { + value = QueryString.values[i]; + break; + } + } + return value; +} + +function QueryString_Parse() +{ + var query = window.location.search.substring(1); + var pairs = query.split("&"); + + for (var i=0;i<pairs.length;i++) + { + var pos = pairs[i].indexOf('='); + if (pos >= 0) + { + var argname = pairs[i].substring(0,pos); + var value = pairs[i].substring(pos+1); + QueryString.keys[QueryString.keys.length] = argname; + QueryString.values[QueryString.values.length] = value; + } + } +} + +QueryString.keys = new Array(); +QueryString.values = new Array(); + +QueryString_Parse(); + +function getElement(id) +{ + if (document.getElementById) + return(document.getElementById(id)); + else if (document.all) + return(document.all[id]); +} + +function findPosY(obj) +{ + var curtop = 0; + if (obj.offsetParent) + { + while (obj.offsetParent) + { + curtop += obj.offsetTop + obj = obj.offsetParent; + } + } + else if (obj.y) + curtop += obj.y; + return curtop; +} + + +// regular expression version +function SearchHiLite(text) +{ + var SearchAsSubstring = 0; + var hl; + + hl = QueryString("zoom_highlight"); + if (hl == "" || hl == null) + { + hl = QueryString("zoom_highlightsub"); + if (hl == "" || hl == null) + return false; + else + SearchAsSubstring = 1; + } + if ((document.charset && document.charset == "utf-8") || + (document.characterSet && document.characterSet == "UTF-8")) + hl = decodeURIComponent(hl); + else + hl = unescape(hl); + hl = hl.toLowerCase(); + + // create array of terms + //var term = hl.split("+"); + var re = /\"(.*?)\"|[^\\+\"]+/g; + var term = hl.match(re); + + // convert terms in regexp patterns + for (var i=0;i<term.length;i++) // take each term in turn + { + if(term[i] != "") + { + if (term[i].indexOf("\"") != -1) + { + // contains double quotes + term[i]=term[i].replace(/\"/g,""); + term[i]=term[i].replace(/\+/g," "); + } + else + { + term[i]=term[i].replace(/\+/g,""); + } + + if (term[i].indexOf("*") != -1 || term[i].indexOf("?") != -1) + { + // convert wildcard pattern to regexp + term[i] = term[i].replace(/\\/g, " "); + term[i] = term[i].replace(/\^/g, " "); + + //term[i] = term[i].replace(/\+/g, " "); // split on this so no point in looking + + term[i] = term[i].replace(/\#/g, " "); + term[i] = term[i].replace(/\$/g, " "); + term[i] = term[i].replace(/\./g, " "); + + // check if search term only contains only wildcards + // if so, we will not attempt to highlight this term + var wildcards = /\w/; + if (wildcards.test(term[i])) + { + term[i] = term[i].replace(/\*/g, "[^\\s]*"); + term[i] = term[i].replace(/\?/g, "[^\\s]"); // insist upon one non whitespace + } + else + term[i] = ""; + } + + if (term[i] != "") + { + if (SearchAsSubstring == 0) + { + term[i] = "(>[\\s]*|>[^<]+[\\b\\W])("+term[i]+")(<|[\\b\\W][^>]*<)"; + } + else + { + // if term leads with wildcard then allow it to match preceeding text in word + var strWB=""; + if(term[i].substr(0,7)=="[^\\s]*") strWB="\\b"; + term[i] = "(>|>[^<]+)"+strWB+"("+term[i]+")([^>]*<)"; + } + } + } + } + + text=text.replace(/&/ig, '&'); + text=text.replace(/ /ig, ''); + + for (var i=0;i<term.length;i++) // take each term in turn + { + if(term[i] != "") + { + // we need a loop for the main search to catch all between >< + // and we add before each found to ignore those done etc + // todo: develop reliable single pass regexp and dispose of loop + var l = 0; + re = new RegExp(term[i], "gi"); + var count = 0; // just incase + text = ">" + text + "<"; // temporary tag marks + do + { + l=text.length; + text=text.replace(re, '$1<span style="background:#FFFF40;" class="highlight" id="highlight" name="highlight">$2</span id="highlight">$3'); + count++; + } + //while(re.lastIndex>0 && count<100); lastIndex not set properly under netscape + while(l!=text.length && count<100); + text = text.substring(1, text.length-1); // remove temporary tags + } + } + text = text.replace(eval("//g"), ''); + text = text.replace(eval("//g"), ' '); + + return(text); +} + +function jumpHL() +{ + var d=getElement("highlight"); + if(d) + { + var y=findPosY(d); + // if element near top of page + if(y < 100) + window.scrollTo(0,0); // go to top of page + else + window.scrollTo(0,y-50); // show space of 50 above + } +} + +function highlight() +{ + var x = document.body; + if (x) + { + var strHTML=SearchHiLite(x.innerHTML); + if (strHTML!=false) x.innerHTML = strHTML; + jumpHL(); + } +} Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/highlight.js ___________________________________________________________________ Name: svn:eol-style + native Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/importberges.zoom81.png =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/importberges.zoom81.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/importerdialogue.zoom63.png =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/importerdialogue.zoom63.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/importprofils.zoom82.png =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/importprofils.zoom82.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/importsemis.zoom64.png =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/importsemis.zoom64.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/index.html =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/index.html (rev 0) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/index.html 2008-07-11 16:17:25 UTC (rev 3684) @@ -0,0 +1,33 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" + "http://www.w3.org/TR/html4/frameset.dtd"> +<html> +<!-- saved from url=(0029)http://www.helpandmanual.com/ --> +<head> +<title>Fudaa Modeleur</title> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<script type="text/javascript" src="modeleur_navigation.js"></script> +<script type="text/javascript"> +<!-- +var defaulttopic="modeleur_index_fr.htm"; +if (top.location.href.lastIndexOf("?") > 0) defaulttopic=top.location.href.substring(top.location.href.lastIndexOf("?")+1,top.location.href.length).replace(/:/g,""); +document.write('<frameset cols="30%,*" frameborder="1" framespacing="1">'); +if (document.getElementById) { + document.write('<frame name="hmnavigation" src="modeleur_content_dyn.html" title="Navigation frame">'); } +else { + document.write('<frame name="hmnavigation" src="modeleur_content_static.html" title="Navigation frame">'); } +document.write('<frame name="hmcontent" src="' + defaulttopic + '" title="content frame">'); +document.write('</frameset>'); +//--> +</script> +</head> +<noscript> + <frameset cols="30%,*" frameborder="1" framespacing="1"> + <frame name="hmnavigation" src="modeleur_content_static.html" title="Navigation frame"> + <frame name="hmcontent" src="modeleur_index_fr.htm" title="Content frame"> + <noframes> + This page requires frames<br><a href="modeleur_content_static.html">Click here to view the table of contents without frames</a> + </noframes> + </frameset> +</noscript> +</html> + Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/index.html ___________________________________________________________________ Name: svn:eol-style + native Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/info.png =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/info.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/layer-prev-view.png =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/layer-prev-view.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/legend.png =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/legend.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleleur_demarrage.zoom63.png =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleleur_demarrage.zoom63.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur.png =================================================================== (Binary files differ) Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_common_editor_fr.htm =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_common_editor_fr.htm (rev 0) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_common_editor_fr.htm 2008-07-11 16:17:25 UTC (rev 3684) @@ -0,0 +1,107 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<!-- saved from url=(0029)http://www.helpandmanual.com/ --> +<head><script type="text/javascript" src="helpman_topicinit.js"></script> +<!-- Redirect browser to frame page if page is not in the content frame. --> +<script type="text/javascript"> +<!-- +if (top.location.search.lastIndexOf("toc=0")<=0) { + if (top.frames.length==0) { top.location.href="index.html?modeleur_common_editor_fr.htm"; } + else { parent.quicksync('a1.4'); } +} +//--> +</script> +<script type="text/javascript" src="highlight.js"></script> + <title>Editeur de projet</title> + <meta name="generator" content="Help & Manual" /> + <meta name="keywords" content="" /> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + <meta http-equiv="Content-Style-Type" content="text/css" /> + <link type="text/css" href="default.css" rel="stylesheet" /> +</head> +<body style="margin: 0px 0px 0px 0px; background: #FFFFFF;" onload="highlight();"> +<div id="hmpopupDiv" style="visibility:hidden; position:absolute; z-index:1000; "></div> + + +<table width="100%" border="0" cellspacing="0" cellpadding="5" bgcolor="#649CCC"> + <tr valign="middle"> + <td align="left"> + <p class="p_Heading1"><span class="f_Heading1">Editeur de projet</span></p> + + </td> + <td align="right"> + <span style="font-size: 9pt"> + <a href="modeleur_index_fr.htm">Top</a> + <a href="modeleur_first_project_fr.htm">Previous</a> + <a href="modeleur_common_layers_fr.htm">Next</a> + </span> + </td> + </tr> +</table> + + +<!-- Placeholder for topic body. --> +<table width="100%" border="0" cellspacing="0" cellpadding="5"><tr valign="top"><td align="left"> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">Table des matières</span></p> +<p style="text-indent: -13px; margin: 0px 0px 0px 37px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"><a href="modeleur_common_editor_fr.htm#n10503">1. Ouverture d'un projet</a></span></p> +<p style="text-indent: -13px; margin: 0px 0px 0px 37px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"><a href="modeleur_common_editor_fr.htm#n1051d">2. Créer un projet</a></span></p> +<p style="text-indent: -13px; margin: 0px 0px 0px 37px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"><a href="modeleur_common_editor_fr.htm#n1055a">3. Enregistrer un projet</a></span></p> +<p style="text-indent: -13px; margin: 0px 0px 0px 37px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"><a href="modeleur_common_editor_fr.htm#n10571">4. Fermer un projet</a></span></p> +<p style="text-indent: -13px; margin: 0px 0px 0px 37px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"><a href="modeleur_common_editor_fr.htm#n1057a">5. Imprimer</a></span></p> +<p style="text-indent: -13px; margin: 0px 0px 0px 37px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"><a href="modeleur_common_editor_fr.htm#n1058b">6. Importer</a></span></p> +<p style="text-indent: -13px; margin: 0px 0px 0px 37px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"><a href="modeleur_common_editor_fr.htm#n1059a">7. Exporter</a></span></p> +<p style="text-indent: -13px; margin: 0px 0px 0px 37px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"><a href="modeleur_common_editor_fr.htm#n105ae">8. Défaire/Refaire une action</a></span></p> +<p style="text-indent: -13px; margin: 0px 0px 0px 37px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"><a href="modeleur_common_editor_fr.htm#n105b3">9. Les préférences</a></span></p> +<p style="text-indent: -13px; margin: 0px 0px 0px 37px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"><a href="modeleur_common_editor_fr.htm#n105d8">10. Le menu fenêtre</a></span></p> +<p style="text-indent: -13px; margin: 0px 0px 0px 37px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"><a href="modeleur_common_editor_fr.htm#n105e7">11. Aide/mise à jour du logiciel</a></span></p> +<p style="text-indent: -13px; margin: 0px 0px 0px 37px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"><a href="modeleur_common_editor_fr.htm#n105ec">12. Visualiser les traces (fichier journal)</a></span></p> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">Résumé</span></p> +<p style="text-align: justify; margin: 2px 5px 2px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Présentation général de l'éditeur de projet hydraulique.</span></p> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Pour utiliser cette application, utiliser l'exécutable editor: </span><img src="prepro-ed_32.png" width="32" height="32" border="0" alt="prepro-ed_32" style="margin:1px"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"> .</span></p> +<p style="background: #e5e4d9; margin: 20px 0px 19px 5px;"><a name="n10503"></a><span style="font-size: 18pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">1. Ouverture d'un projet</span></p> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Utiliser le menu </span><span style="font-size: 12pt; font-family: 'Courier New'; color: #000000;">Fichier>Ouvrir</span><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"> et sélectionner un fichier projet. Les fichiers projets ont pour extension .mod.zip.</span></p> +<p style="background: #e5e4d9; margin: 20px 0px 19px 5px;"><a name="n1051d"></a><span style="font-size: 18pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">2. Créer un projet</span></p> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Utiliser le </span><span style="font-size: 12pt; font-family: 'Courier New'; color: #000000;">menu Fichier>Créer</span><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">. La fenêtre Vue 2D apparaît, avec l'arbre des calques à gauche.</span></p> +<p style="background: #e5e4d9; margin: 20px 0px 19px 5px;"><a name="n1055a"></a><span style="font-size: 18pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">3. Enregistrer un projet</span></p> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Utiliser le menu </span><span style="font-size: 12pt; font-family: 'Courier New'; color: #000000;">Fichier>Enregistrer</span><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"> ou le raccourci </span><span style="font-size: 12pt; font-family: 'Courier New'; color: #000000;">Ctrl+S</span><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">.</span></p> +<p style="text-align: justify; margin: 2px 5px 2px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Il est possible d'enregistrer le projet sous un autre nom en utilisant l'action </span><span style="font-size: 12pt; font-family: 'Courier New'; color: #000000;">Enregistrer sous</span><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">: le nouveau fichier devient le projet courant.</span></p> +<p style="background: #e5e4d9; margin: 20px 0px 19px 5px;"><a name="n10571"></a><span style="font-size: 18pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">4. Fermer un projet</span></p> +<p style="text-align: justify; margin: 2px 5px 2px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Utiliser le menu </span><span style="font-size: 12pt; font-family: 'Courier New'; color: #000000;">Fichier>Fermer</span><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">. Si le projet en cours est modifié, une sauvegarde sera proposée.</span></p> +<p style="background: #e5e4d9; margin: 20px 0px 19px 5px;"><a name="n1057a"></a><span style="font-size: 18pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">5. Imprimer</span></p> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Le menu Fichier contient toutes les actions nécessaires à l'impression:</span></p> +<div style="text-align: justify; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 24px;"><table border="0" cellpadding="0" cellspacing="0" style="line-height: normal;"><tr style="vertical-align:baseline" valign="baseline"><td width="18"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">1.</span></td><td><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Mise en page</span></td></tr></table></div><div style="text-align: justify; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 24px;"><table border="0" cellpadding="0" cellspacing="0" style="line-height: normal;"><tr style="vertical-align:baseline" valign="baseline"><td width="18"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">2.</span></td><td><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Prévisualisation</span></td></tr></table></div><div style="text-align: justify; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 24px;"><table border="0" cellpadding="0" cellspacing="0" style="line-height: normal;"><tr style="vertical-align:baseline" valign="baseline"><td width="18"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">3.</span></td><td><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Impression</span></td></tr></table></div><p style="background: #e5e4d9; margin: 20px 0px 19px 5px;"><a name="n1058b"></a><span style="font-size: 18pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">6. Importer</span></p> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">En utilisant le menu </span><span style="font-size: 12pt; font-family: 'Courier New'; color: #000000;">Fichier>Importer</span><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">, il est possible d'importer des données géographiques dans les calques (voir le document </span><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"><a href="modeleur_common_sig_fr.htm">Gestion des données géographiques (Commun)</a></span><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">).</span></p> +<p style="background: #e5e4d9; margin: 20px 0px 19px 5px;"><a name="n1059a"></a><span style="font-size: 18pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">7. Exporter</span></p> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Cette action est proposées par la </span><span style="font-size: 12pt; font-family: 'Courier New'; color: #000000;">Vue 2D</span><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"> . Voir le document </span><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"><a href="modeleur_common_layers_export_fr.htm">Exporter les données de la Vue 2D (Commun)</a></span></p> +<p style="background: #e5e4d9; margin: 20px 0px 19px 5px;"><a name="n105ae"></a><span style="font-size: 18pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">8. Défaire/Refaire une action</span></p> +<p style="text-align: justify; margin: 2px 5px 2px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Les actions modifiant les données peuvent être annulées (défaire). Pour cela, utiliser le menu Edition et les actions Défaire/Refaire ou les boutons de la barre d'outils</span></p> +<p style="background: #e5e4d9; margin: 20px 0px 19px 5px;"><a name="n105b3"></a><span style="font-size: 18pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">9. Les préférences</span></p> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Le panneau de préférences : menu Edition>Préférences. Ce panneau comporte plusieurs onglets:</span></p> +<p style="margin: 15px 0px 5px 15px;"><span style="font-size: 14pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">Système</span></p> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Permet d'afficher ou non la bannière (splash screen) à l'ouverture de l'application.</span></p> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Permet de (dés)activer la demande de confirmation lors de la sortie d'une application</span></p> +<p style="text-align: justify; margin: 2px 5px 2px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Ce onglet permet également de remplir les informations sur l'utilisateur.</span></p> +<p style="margin: 15px 0px 5px 15px;"><span style="font-size: 14pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">Accessibilité</span></p> +<p style="text-align: justify; margin: 2px 5px 2px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Choisir la langue de l'interface.</span></p> +<p style="margin: 15px 0px 5px 15px;"><span style="font-size: 14pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">Visuel</span></p> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Permet de modifier l'aspect de l'application et les couleurs de fond.</span></p> +<p style="text-align: justify; margin: 2px 5px 2px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">L'affichage des colonnes, des textes des boutons, l'anti-crénelage, ... sont configurés dans la partie </span><span style="font-size: 12pt; font-family: 'Courier New'; color: #000000;">Bureau</span><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">.</span></p> +<p style="margin: 15px 0px 5px 15px;"><span style="font-size: 14pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">Composants</span></p> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Permet de définir le Navigateur web à utiliser</span></p> +<p style="margin: 15px 0px 5px 15px;"><span style="font-size: 14pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">Mise en page</span></p> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Permet de définir la mise en page pour l'impression.</span></p> +<p style="background: #e5e4d9; margin: 20px 0px 19px 5px;"><a name="n105d8"></a><span style="font-size: 18pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">10. Le menu fenêtre</span></p> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Permet de gérer les fenêtres internes et de permuter la disposition des fenêtres. Il permet également d'afficher/masquer la barre d'outil spécifiques au modeleur et la barre d'état. </span></p> +<p style="margin: 15px 0px 5px 15px;"><a name="n105dd"></a><span style="font-size: 14pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">Aligner les fenêtres internes</span></p> +<p style="text-align: justify; margin: 2px 5px 2px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Les actions Cascade et Mosaïque permettent d'arranger la disposition des fenêtres internes.</span></p> +<p style="background: #e5e4d9; margin: 20px 0px 19px 5px;"><a name="n105e7"></a><span style="font-size: 18pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">11. Aide/mise à jour du logiciel</span></p> +<p style="text-align: justify; margin: 2px 5px 2px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Ces actions sont disponibles à partir du menu aide.</span></p> +<p style="background: #e5e4d9; margin: 20px 0px 19px 5px;"><a name="n105ec"></a><span style="font-size: 18pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">12. Visualiser les traces (fichier journal)????</span></p> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Les messages généré par l'éditeur sont fournis dans un fichier journal. Ces messages sont utiles pour connaître quelles données ont été modifiées par l'utilisateur et pour découvrir des bogues.</span></p> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Pour suivre ces messages, utiliser la commande Edition>Console: une console affichera en temps réel ces messages.</span></p> +<p style="text-align: justify; margin: 2px 5px 2px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Si l'éditeur a un comportement anormal, vous pouvez vérifier les messages. Les messages du style </span><span style="font-size: 12pt; font-family: 'Courier New'; color: #000000;">Exception at</span><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"> indiquent qu'une erreur est survenue. Il est recommandé de notifier ce bogue en joignant le fichier </span><span style="font-family: 'Courier New'; color: #000000;">ts.log</span><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">. Ce fichier est créé dans le répertoire d'installation du préprocesseur.</span></p> + +</td></tr></table> + +</body> +</html> Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_common_editor_fr.htm ___________________________________________________________________ Name: svn:eol-style + native Added: branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_common_layers_export_fr.htm =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_common_layers_export_fr.htm (rev 0) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/aide/src/modeleur/modeleur_common_layers_export_fr.htm 2008-07-11 16:17:25 UTC (rev 3684) @@ -0,0 +1,123 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<!-- saved from url=(0029)http://www.helpandmanual.com/ --> +<head><script type="text/javascript" src="helpman_topicinit.js"></script> +<!-- Redirect browser to frame page if page is not in the content frame. --> +<script type="text/javascript"> +<!-- +if (top.location.search.lastIndexOf("toc=0")<=0) { + if (top.frames.length==0) { top.location.href="index.html?modeleur_common_layers_export_fr.htm"; } + else { parent.quicksync('a1.9'); } +} +//--> +</script> +<script type="text/javascript" src="highlight.js"></script> + <title>Exporter les données de la Vue 2D</title> + <meta name="generator" content="Help & Manual" /> + <meta name="keywords" content="" /> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + <meta http-equiv="Content-Style-Type" content="text/css" /> + <link type="text/css" href="default.css" rel="stylesheet" /> +</head> +<body style="margin: 0px 0px 0px 0px; background: #FFFFFF;" onload="highlight();"> +<div id="hmpopupDiv" style="visibility:hidden; position:absolute; z-index:1000; "></div> + + +<table width="100%" border="0" cellspacing="0" cellpadding="5" bgcolor="#649CCC"> + <tr valign="middle"> + <td align="left"> + <p class="p_Heading1"><span class="f_Heading1">Exporter les données de la Vue 2D</span></p> + + </td> + <td align="right"> + <span style="font-size: 9pt"> + <a href="modeleur_index_fr.htm">Top</a> + <a href="modeleur_common_vue2d_edition_fr.htm">Previous</a> + + </span> + </td> + </tr> +</table> + + +<!-- Placeholder for topic body. --> +<table width="100%" border="0" cellspacing="0" cellpadding="5"><tr valign="top"><td align="left"> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">Table des matières</span></p> +<div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 24px;"><table border="0" cellpadding="0" cellspacing="0" style="line-height: normal;"><tr style="vertical-align:baseline" valign="baseline"><td width="13"><span style="font-size: 12pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000;">▪</span></td><td><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"><a href="modeleur_common_layers_export_fr.htm#n1145c">1. Exporter les données du tableau</a></span></td></tr></table></div><div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 24px;"><table border="0" cellpadding="0" cellspacing="0" style="line-height: normal;"><tr style="vertical-align:baseline" valign="baseline"><td width="13"><span style="font-size: 12pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000;">▪</span></td><td><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"><a href="modeleur_common_layers_export_fr.htm#sect-common-layers-export">2. Exporter vers les mailleurs</a></span></td></tr></table></div><div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 24px;"><table border="0" cellpadding="0" cellspacing="0" style="line-height: normal;"><tr style="vertical-align:baseline" valign="baseline"><td width="13"><span style="font-size: 12pt; font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #000000;">▪</span></td><td><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"><a href="modeleur_common_layers_export_fr.htm#n114e4">3. Comment exporter les données</a></span></td></tr></table></div><p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">Résumé</span></p> +<p style="text-align: justify; margin: 2px 5px 2px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Ce document décrit comment exporter les données de la Vue 2D vers un format texte, Excel, SIG ou de maillage. Il est également possible de filtrer les données avant l'exportation.</span></p> +<p style="background: #e5e4d9; margin: 20px 0px 19px 5px;"><a name="n1145c"></a><span style="font-size: 18pt; font-family: 'Times New Roman'; font-weight: bold; color: #000000;">1. Exporter les données du tableau</span></p> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Le tableau des valeurs doit être activé depuis le bouton </span><img src="table.png" width="22" height="22" border="0" alt="table" style="margin:1px"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"> . Les colonnes peuvent être déplacées et le contenu peut être trié selon une colonne.</span></p> +<p style="text-align: justify; margin: 2px 5px 0px 15px;"><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;">Les valeurs de ce tableau peuvent être copiées dans le presse-papier: utiliser le menu </span><span style="font-size: 12pt; font-family: 'Courier New'; color: #000000;">Export>copier</span><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"> ou le raccourci </span><span style="font-size: 12pt; font-family: 'Courier New'; color: #000000;">Ctrl+C</span><span style="font-size: 12pt; font-family: 'Times New Roman'; color: #000000;"> .</span></p> +<div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 10px 48px 0px 51px;"><table cellspacing="0" cellpadding="1" border="0" style="border: none; border-spacing:0px; border-collapse: collapse;"> +<tr style="text-align:left;vertical-align:top;"> +<td valign="middle" style="border: solid 1px #000000;"><div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 0px;"><table cellspacing="0" cellpadding="1" border="0"... [truncated message content] |
From: <bma...@us...> - 2008-07-10 07:50:29
|
Revision: 3683 http://fudaa.svn.sourceforge.net/fudaa/?rev=3683&view=rev Author: bmarchan Date: 2008-07-10 00:50:38 -0700 (Thu, 10 Jul 2008) Log Message: ----------- Restitution de fichiers sur imports am?\195?\169lior?\195?\169e. Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java 2008-07-10 07:47:45 UTC (rev 3682) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java 2008-07-10 07:50:38 UTC (rev 3683) @@ -81,17 +81,16 @@ @Override protected void importData(ProgressionInterface _prog) { - final GISAttributeInterface[] attChosen = new GISAttributeInterface[]{GISAttributeConstants.BATHY, GISAttributeConstants.TITRE}; - data_.preload(attChosen, _prog); final CtuluCommandComposite cmp = new CtuluCommandComposite(); // Calque des semis de points. if (selectedLayer_ instanceof MdlLayer2dMultiPoint) { final GISZoneCollectionMultiPoint col = (GISZoneCollectionMultiPoint)((MdlModel2dMultiPoint)selectedLayer_.modeleDonnees()).getGeomData(); + final GISAttributeInterface[] attChosen=col.getAttributes(); final GISDataModel[] pts = data_.getPoints(); final int nb = pts.length; for (int i = 0; i < nb; i++) { - final GISDataModel model = new GISDataModelPointMultiPointAdapter(pts[i]); + final GISDataModel model = GISDataModelFilterAdapter.buildAdapter(new GISDataModelPointMultiPointAdapter(pts[i]),attChosen); col.addAll(model, cmp, true); } } @@ -99,6 +98,7 @@ // Les autres calques. else if (selectedLayer_ instanceof MdlLayer2dLine) { final GISZoneCollectionLigneBrisee col = (GISZoneCollectionLigneBrisee)((MdlModel2dLine)selectedLayer_.modeleDonnees()).getGeomData(); + final GISAttributeInterface[] attChosen=col.getAttributes(); GISDataModel[] lines = data_.getPolylignes(); final int nb=lines.length; for (int i=0; i<nb; i++) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-07-10 07:47:36
|
Revision: 3682 http://fudaa.svn.sourceforge.net/fudaa/?rev=3682&view=rev Author: bmarchan Date: 2008-07-10 00:47:45 -0700 (Thu, 10 Jul 2008) Log Message: ----------- D?\195?\169placement g?\195?\169om?\195?\169trie vers un nouveau calque cible : les attributs sont sauvegard?\195?\169s. Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-07-10 07:46:55 UTC (rev 3681) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-07-10 07:47:45 UTC (rev 3682) @@ -12,9 +12,11 @@ import org.fudaa.ctulu.gis.GISGeometryFactory; import org.fudaa.ctulu.gis.GISMultiPoint; import org.fudaa.ctulu.gis.GISPolyligne; +import org.fudaa.ctulu.gis.GISZoneCollection; import org.fudaa.ctulu.gui.CtuluDialogPanel; import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; import org.fudaa.ebli.calque.ZModeleDonnees; +import org.fudaa.ebli.calque.ZModeleGeom; import org.fudaa.ebli.calque.ZScene; import org.fudaa.ebli.calque.edition.ZCalqueEditable; import org.fudaa.ebli.calque.edition.ZCalqueMultiPointEditable; @@ -23,6 +25,7 @@ import org.fudaa.ebli.calque.edition.ZSceneEditor; import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.ebli.geometrie.GrPolyligne; +import org.fudaa.fudaa.commun.FudaaLib; import org.fudaa.fudaa.commun.impl.Fudaa; import org.fudaa.fudaa.modeleur.layer.MdlLayer2dCloud; import org.fudaa.fudaa.modeleur.layer.MdlModel2dCloud; @@ -62,7 +65,7 @@ if (pnInterpolation_==null) pnInterpolation_=new MdlInterpolationPanel(); - if (pnInterpolation_.afficheModaleOk(pn_.getFrame(), "Interpolation entre 2 sommets")) { + if (pnInterpolation_.afficheModaleOk(pn_.getFrame(), FudaaLib.getS("Interpolation entre 2 sommets"))) { int[] idxGeom=getScene().getLayerSelectionMulti().getIdxSelected(); Coordinate[] coords=new Coordinate[2]; @@ -109,7 +112,8 @@ * D\xE9place les g\xE9om\xE9tries s\xE9lectionn\xE9es dans le calque cible. */ public void moveInLayerSelectedGeometries() { - ZModeleDonnees mdld=((ZCalqueAffichageDonneesInterface)getScene().getCalqueActif()).modeleDonnees(); + ZModeleGeom mdldest=(ZModeleGeom)((ZCalqueAffichageDonneesInterface)getScene().getCalqueActif()).modeleDonnees(); + GISZoneCollection coldest=mdldest.getGeomData(); int[] idxGeom=getScene().getLayerSelection().getSelectedIndex(); Geometry[] geoms=new Geometry[idxGeom.length]; @@ -120,31 +124,39 @@ final CtuluCommandComposite cmp = new CtuluCommandComposite(); // Controle qu'une bloc n'est pas constitu\xE9 que d'un point => Message d'erreur. - if (mdld instanceof MdlModel2dLine) { + if (mdldest instanceof MdlModel2dLine) { for (Geometry g : geoms) { if (g.getNumPoints()<2) { - ui_.error("Vous ne pouvez pas d\xE9placer ces g\xE9om\xE9tries.\nUne au moins n'est constitu\xE9e que d'un point!"); + ui_.error(FudaaLib.getS("Vous ne pouvez pas d\xE9placer ces g\xE9om\xE9tries.\nUne au moins n'est constitu\xE9e que d'un point!")); return; } } } - removeSelectedObjects(cmp); - - if (mdld instanceof MdlModel2dMultiPoint) { - MdlModel2dMultiPoint mdl=(MdlModel2dMultiPoint)mdld; - for (Geometry g : geoms) { - Geometry gn=GISGeometryFactory.INSTANCE.createMultiPoint(g.getCoordinates()); - mdl.addGeometry(gn, cmp, ui_,null); + // Ajout des nouveaux objets. + for (int i=0; i<idxGeom.length; i++) { + + // Les attributs + Object[] datadest=new Object[coldest.getNbAttributes()]; + GISZoneCollection colsrc=((ZModeleGeom)getScene().getLayerForId(idxGeom[i]).modeleDonnees()).getGeomData(); + for (int iatt=0; iatt<datadest.length; iatt++) { + int idxAtt=colsrc.getIndiceOf(coldest.getAttribute(iatt)); + if (idxAtt!=-1) datadest[iatt]=colsrc.getValue(idxAtt,getScene().sceneId2LayerId(idxGeom[i])); } - } - else if (mdld instanceof MdlModel2dLine) { - MdlModel2dLine mdl=(MdlModel2dLine)mdld; - for (Geometry g : geoms) { - Geometry gn=GISGeometryFactory.INSTANCE.createLineString(g.getCoordinates()); - mdl.addGeometry(gn, cmp, ui_,null); + + // La g\xE9om\xE9trie + if (mdldest instanceof MdlModel2dMultiPoint) { + Geometry gn=GISGeometryFactory.INSTANCE.createMultiPoint(geoms[i].getCoordinates()); + coldest.addGeometry(gn,datadest,cmp); } + else if (mdldest instanceof MdlModel2dLine) { + Geometry gn=GISGeometryFactory.INSTANCE.createLineString(geoms[i].getCoordinates()); + coldest.addGeometry(gn,datadest,cmp); + } } + + // Suppression des anciens. + removeSelectedObjects(cmp); if (mng_ != null) { mng_.addCmd(cmp.getSimplify()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-07-10 07:46:54
|
Revision: 3681 http://fudaa.svn.sourceforge.net/fudaa/?rev=3681&view=rev Author: bmarchan Date: 2008-07-10 00:46:55 -0700 (Thu, 10 Jul 2008) Log Message: ----------- Ajout d'un attribut NATURE, constant par calque. Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dTrace.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dCloud.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dConstraintLine.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dContour.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dDirectionLine.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLevel.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dProfile.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dZone.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dTrace.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dTrace.java 2008-07-10 07:45:55 UTC (rev 3680) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dTrace.java 2008-07-10 07:46:55 UTC (rev 3681) @@ -13,6 +13,7 @@ import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; import org.fudaa.ctulu.gis.GISZoneListener; import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeEditable; +import org.fudaa.fudaa.sig.FSigResource; /** * Un mod\xE8le de calque pour le calque 1D des traces de profils. Les traces sont des polylignes XY. @@ -29,10 +30,12 @@ public MdlModel1dTrace(final GISZoneListener _listener, final CtuluCommandContainer _cmd) { super(_listener); GISAttribute[] attrs=new GISAttribute[]{ - GISAttributeConstants.TITRE + GISAttributeConstants.TITRE, + GISAttributeConstants.NATURE }; // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. getGeomData().setAttributes(attrs, null); getGeomData().setAttributeIsZ(null); + getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, FSigResource.ATT_NATURE_TP); } } Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dCloud.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dCloud.java 2008-07-10 07:45:55 UTC (rev 3680) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dCloud.java 2008-07-10 07:46:55 UTC (rev 3681) @@ -11,11 +11,13 @@ import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.gis.GISAttribute; import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ctulu.gis.GISAttributeString; import org.fudaa.ctulu.gis.GISGeometryFactory; import org.fudaa.ctulu.gis.GISMultiPoint; import org.fudaa.ctulu.gis.GISZoneCollectionMultiPoint; import org.fudaa.ctulu.gis.GISZoneListener; import org.fudaa.ebli.calque.edition.ZModeleMultiPointEditable; +import org.fudaa.fudaa.sig.FSigResource; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Geometry; @@ -34,12 +36,16 @@ */ public MdlModel2dCloud(final GISZoneListener _listener, final CtuluCommandContainer _cmd) { super(_listener); +// GISAttribute attTry=new GISAttributeString("Nature",false); GISAttribute[] attrs=new GISAttribute[]{ GISAttributeConstants.BATHY, - GISAttributeConstants.TITRE + GISAttributeConstants.TITRE, + GISAttributeConstants.NATURE +// attTry }; // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. getGeomData().setAttributes(attrs, null); getGeomData().setAttributeIsZ(GISAttributeConstants.BATHY); + getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, FSigResource.ATT_NATURE_SM); } } Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dConstraintLine.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dConstraintLine.java 2008-07-10 07:45:55 UTC (rev 3680) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dConstraintLine.java 2008-07-10 07:46:55 UTC (rev 3681) @@ -11,6 +11,7 @@ import org.fudaa.ctulu.gis.GISAttribute; import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISZoneListener; +import org.fudaa.fudaa.sig.FSigResource; /** * Un mod\xE8le de calque pour le calque 2D des lignes de constraintes. Les lignes sont des polylignes XYZ, non @@ -29,10 +30,12 @@ super(_listener); GISAttribute[] attrs=new GISAttribute[]{ GISAttributeConstants.BATHY, - GISAttributeConstants.TITRE + GISAttributeConstants.TITRE, + GISAttributeConstants.NATURE }; // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. getGeomData().setAttributes(attrs, null); getGeomData().setAttributeIsZ(GISAttributeConstants.BATHY); + getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, FSigResource.ATT_NATURE_LC); } } Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dContour.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dContour.java 2008-07-10 07:45:55 UTC (rev 3680) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dContour.java 2008-07-10 07:46:55 UTC (rev 3681) @@ -11,6 +11,7 @@ import org.fudaa.ctulu.gis.GISAttribute; import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISZoneListener; +import org.fudaa.fudaa.sig.FSigResource; /** * Un mod\xE8le de calque pour le calque 2D contour d'\xE9tudes. Les contours d'\xE9tude limitent les informations @@ -28,10 +29,12 @@ public MdlModel2dContour(final GISZoneListener _listener, final CtuluCommandContainer _cmd) { super(_listener); GISAttribute[] attrs=new GISAttribute[]{ - GISAttributeConstants.TITRE + GISAttributeConstants.TITRE, + GISAttributeConstants.NATURE }; // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. getGeomData().setAttributes(attrs, null); getGeomData().setAttributeIsZ(null); + getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, FSigResource.ATT_NATURE_CE); } } Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dDirectionLine.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dDirectionLine.java 2008-07-10 07:45:55 UTC (rev 3680) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dDirectionLine.java 2008-07-10 07:46:55 UTC (rev 3681) @@ -13,6 +13,7 @@ import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; import org.fudaa.ctulu.gis.GISZoneListener; import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeEditable; +import org.fudaa.fudaa.sig.FSigResource; /** * Un mod\xE8le de calque pour le calque 2D des lignes de direction. Les lignes sont des polylignes XYZ, non @@ -31,10 +32,12 @@ super(_listener); GISAttribute[] attrs=new GISAttribute[]{ GISAttributeConstants.BATHY, - GISAttributeConstants.TITRE + GISAttributeConstants.TITRE, + GISAttributeConstants.NATURE }; // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. getGeomData().setAttributes(attrs, null); getGeomData().setAttributeIsZ(GISAttributeConstants.BATHY); + getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, FSigResource.ATT_NATURE_LD); } } Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLevel.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLevel.java 2008-07-10 07:45:55 UTC (rev 3680) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLevel.java 2008-07-10 07:46:55 UTC (rev 3681) @@ -15,6 +15,7 @@ import org.fudaa.ctulu.gis.GISZoneListener; import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeEditable; import org.fudaa.fudaa.modeleur.MdlResource; +import org.fudaa.fudaa.sig.FSigResource; /** * Un mod\xE8le de calque pour le calque 2D lignes de niveaux. Les lignes de niveau sont des lignes XY @@ -34,10 +35,12 @@ GISAttributeDouble zglob=new GISAttributeDouble(MdlResource.MDL.getString("Z"),false); GISAttribute[] attrs=new GISAttribute[]{ zglob, - GISAttributeConstants.TITRE + GISAttributeConstants.TITRE, + GISAttributeConstants.NATURE }; // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. getGeomData().setAttributes(attrs, null); getGeomData().setAttributeIsZ(zglob); + getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, FSigResource.ATT_NATURE_CN); } } Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dProfile.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dProfile.java 2008-07-10 07:45:55 UTC (rev 3680) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dProfile.java 2008-07-10 07:46:55 UTC (rev 3681) @@ -13,6 +13,7 @@ import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; import org.fudaa.ctulu.gis.GISZoneListener; import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeEditable; +import org.fudaa.fudaa.sig.FSigResource; /** * Un mod\xE8le de calque pour le calque 2D des profils. Les profils sont des polylignes XYZ. @@ -30,10 +31,12 @@ super(_listener); GISAttribute[] attrs=new GISAttribute[]{ GISAttributeConstants.BATHY, - GISAttributeConstants.TITRE + GISAttributeConstants.TITRE, + GISAttributeConstants.NATURE }; // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. getGeomData().setAttributes(attrs, null); getGeomData().setAttributeIsZ(GISAttributeConstants.BATHY); + getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, FSigResource.ATT_NATURE_PF); } } Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dZone.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dZone.java 2008-07-10 07:45:55 UTC (rev 3680) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dZone.java 2008-07-10 07:46:55 UTC (rev 3681) @@ -11,6 +11,7 @@ import org.fudaa.ctulu.gis.GISAttribute; import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISZoneListener; +import org.fudaa.fudaa.sig.FSigResource; /** * Un mod\xE8le de calque pour le calque 2D de zones g\xE9om\xE9triques. Les zones permettent de sp\xE9cifier un strickler par la suite. @@ -28,10 +29,12 @@ public MdlModel2dZone(final GISZoneListener _listener, final CtuluCommandContainer _cmd) { super(_listener); GISAttribute[] attrs=new GISAttribute[]{ - GISAttributeConstants.TITRE + GISAttributeConstants.TITRE, + GISAttributeConstants.NATURE }; // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. getGeomData().setAttributes(attrs, null); getGeomData().setAttributeIsZ(null); + getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, FSigResource.ATT_NATURE_ZN); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-07-10 07:45:53
|
Revision: 3680 http://fudaa.svn.sourceforge.net/fudaa/?rev=3680&view=rev Author: bmarchan Date: 2008-07-10 00:45:55 -0700 (Thu, 10 Jul 2008) Log Message: ----------- Mise en place des attributs ?\195?\160 valeurs fixe. Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneAttributeFactory.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneAttributeFactory.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneAttributeFactory.java 2008-07-10 07:45:36 UTC (rev 3679) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneAttributeFactory.java 2008-07-10 07:45:55 UTC (rev 3680) @@ -1,255 +1,245 @@ -/* - * @creation 7 avr. 2005 - * @modification $Date: 2008-03-26 16:46:43 $ - * @license GNU General Public License 2 - * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne - * @mail de...@fu... - */ -package org.fudaa.ctulu.gis; - -import java.util.Arrays; - -import com.sun.j3d.loaders.vrml97.impl.Coordinate; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.LineString; - -/** - * @author Fred Deniger - * @version $Id: GISZoneAttributeFactory.java,v 1.10.6.1 2008-03-26 16:46:43 bmarchan Exp $ - */ -public final class GISZoneAttributeFactory { - - private GISZoneAttributeFactory() { - super(); - } - - /** - * @param _att l'attribut - * @param _src la liste des points source - * @param _target la liste des points cible - * @param _model le model initial - * @return l'interpolateur 1d - */ - public static GISReprojectInterpolateurI create1DInterpolateur(final GISAttributeInterface _att, - final LineString _src, final LineString _target, final GISAttributeModel _model) { - final Class clazz = _att.getDataClass(); - if (clazz == Integer.class) { - return new GISReprojectInterpolateur1DInteger(_src.getCoordinateSequence(), _target.getCoordinateSequence(), - (GISAttributeModelIntegerInterface) _model); - } else if (clazz == Double.class) { - return new GISReprojectInterpolateur1DDouble(_src.getCoordinateSequence(), _target.getCoordinateSequence(), - (GISAttributeModelDoubleInterface) _model); - } else if (clazz == Boolean.class) { - return new GISReprojectInterpolateur1DBoolean(_src.getCoordinateSequence(), _target.getCoordinateSequence(), - (GISAttributeModelBooleanInterface) _model); - } else { - return new GISReprojectInterpolateur1DObject(_src.getCoordinateSequence(), _target.getCoordinateSequence(), - (GISAttributeModelObjectInterface) _model); - } - - } - - /** - * @param _att l'attribut - * @param _src la liste des points source - * @param _target la liste des points cible - * @param _model le model initial - * @return l'interpolateur 1d - */ - public static GISReprojectInterpolateurI create1DInterpolateur(final GISAttributeInterface _att, - final Geometry _src, final Geometry _target, final GISAttributeModel _model) { - final Class clazz = _att.getDataClass(); - if (clazz == Integer.class) { - return new GISReprojectInterpolateur1DInteger( - new GISCoordinateSequence(_src.getCoordinates()), - new GISCoordinateSequence(_target.getCoordinates()), - (GISAttributeModelIntegerInterface) _model); - } else if (clazz == Double.class) { - return new GISReprojectInterpolateur1DDouble( - new GISCoordinateSequence(_src.getCoordinates()), - new GISCoordinateSequence(_target.getCoordinates()), - (GISAttributeModelDoubleInterface) _model); - } else if (clazz == Boolean.class) { - return new GISReprojectInterpolateur1DBoolean( - new GISCoordinateSequence(_src.getCoordinates()), - new GISCoordinateSequence(_target.getCoordinates()), - (GISAttributeModelBooleanInterface) _model); - } else { - return new GISReprojectInterpolateur1DObject( - new GISCoordinateSequence(_src.getCoordinates()), - new GISCoordinateSequence(_target.getCoordinates()), - (GISAttributeModelObjectInterface) _model); - } - - } - - /** - * @param _capacity la capacity par defaut du model - * @param _listener le listener - * @return le model. null si class non valide - */ - public static GISAttributeModel createModelList(final GISAttributeInterface _att, final int _capacity, - final GISAttributeListener _listener) { - final GISAttributeModelListener resfinal = _att.createListModel(_capacity); - resfinal.setListener(_listener); - return resfinal; - } - - public static GISAttributeModel createModelList(final GISAttributeInterface _att, final int _capacity, - final GISAttributeListener _listener, final int _initValuesNb) { - final GISAttributeModelListener resfinal = _att.createListModel(_capacity); - if (_initValuesNb > 0) { - final Object[] add = new Object[_initValuesNb]; - Arrays.fill(add, _att.getDefaultValue()); - resfinal.addAllObject(add, null); - } - resfinal.setListener(_listener); - return resfinal; - } - - /** - * @param _initSize la taille - * @param _listener le listener - * @return le model. null si class non valide - */ - public static GISAttributeModel createModelArray(final GISAttributeInterface _att, final int _initSize, - final GISAttributeListener _listener) { - final GISAttributeModelListener resfinal = _att.createAtomicModel(null, _initSize); - resfinal.setListener(_listener); - return resfinal; - } - - public static Object[] createObjectArray(final GISAttributeInterface _att, final Object[] _init, final int _nbPt) { - if (_init == null) { - return null; - } - final Class clazz = _att.getDataClass(); - if (clazz == Integer.class) { - final Integer[] r = new Integer[_nbPt]; - Arrays.fill(r, _att.getDefaultValue()); - - for (int i = Math.min(r.length, _init.length) - 1; i >= 0; i--) { - final Object o = _init[i]; - r[i] = (Integer) _att.getDefaultValue(); - if (o != null && o instanceof Integer) { - r[i] = (Integer) o; - } - } - return r; - } else if (clazz == Double.class) { - final Double[] r = new Double[_nbPt]; - Arrays.fill(r, _att.getDefaultValue()); - for (int i = Math.min(r.length, _init.length) - 1; i >= 0; i--) { - final Object o = _init[i]; - r[i] = (Double) _att.getDefaultValue(); - if (o != null && o instanceof Double) { - r[i] = (Double) o; - } - } - return r; - } else if (clazz == Boolean.class) { - final Boolean[] r = new Boolean[_nbPt]; - Arrays.fill(r, _att.getDefaultValue()); - for (int i = Math.min(r.length, _init.length) - 1; i >= 0; i--) { - final Object o = _init[i]; - r[i] = (Boolean) _att.getDefaultValue(); - if (o != null && o instanceof Boolean) { - r[i] = (Boolean) o; - } - } - return r; - } else { - final Object[] r = new Object[_nbPt]; - Arrays.fill(r, _att.getDefaultValue()); - for (int i = Math.min(r.length, _init.length) - 1; i >= 0; i--) { - final Object o = _init[i]; - r[i] = _att.getDefaultValue(); - if (o != null) { - r[i] = o; - } - } - return r; - } - } - - /** - * @param _att l'attribut - * @param _initValues les valeurs initiales - * @param _listener le listener - * @return le model. null si class non valide - */ - public static GISAttributeModel createModelArray(final GISAttributeInterface _att, final Object[] _initValues, - final GISAttributeListener _listener) { - GISAttributeModelListener resfinal = null; - final Class clazz = _att.getDataClass(); - if (clazz == Integer.class) { - resfinal = new GISAttributeModelIntegerArray(_initValues, _att); - } else if (clazz == Double.class) { - resfinal = new GISAttributeModelDoubleArray(_initValues, _att); - } else if (clazz == Boolean.class) { - resfinal = new GISAttributeModelBooleanArray(_initValues, _att); - } else { - resfinal = new GISAttributeModelObjectArray(_initValues, _att); - } - resfinal.setListener(_listener); - return resfinal; - } - - /** - * @param _listener le listener - * @param _attr les attributs - * @return une zone correctement initialis\xE9e - */ - public static GISZoneCollectionLigneBrisee createPolyligne(final GISZoneListener _listener, - final GISAttributeInterface[] _attr) { - final GISZoneCollectionLigneBrisee zone = new GISZoneCollectionLigneBrisee(_listener); - zone.initAttributes(_attr); - return zone; - - } - - /** - * @param _listener le listener - * @param _attr les attributs - * @return une zone correctement initialis\xE9e - */ - public static GISZoneCollectionPoint createPoint(final GISZoneListener _listener, final GISAttributeInterface[] _attr) { - final GISZoneCollectionPoint zone = new GISZoneCollectionPoint(_listener); - zone.initAttributes(_attr); - return zone; - - } - - /** - * @param _listener le listener - * @param _attr les attributs - * @return une zone correctement initialis\xE9e - */ - public static GISZoneCollectionLigneBrisee createLigneBrisee(final GISZoneListener _listener, - final GISAttributeInterface[] _attr) { - final GISZoneCollectionLigneBrisee zone = new GISZoneCollectionLigneBrisee(_listener); - zone.initAttributes(_attr); - return zone; - - } - - /** - * @param _zone la zone concern\xE9e - * @param _att l'attribut - * @return le model ou nul si inconnu - */ - public static GISAttributeModel createModel(final GISZoneCollection _zone, final GISAttributeInterface _att) { - final int nbGeom = _zone.getNumGeometries(); - if (_att == null) return null; - if (!_att.isAtomicValue() || (_zone instanceof GISZoneCollectionPoint)) { - return createModelList(_att, (int) (nbGeom * 1.5), _zone, nbGeom); - } - final GISAttributeModel[] models = new GISAttributeModel[nbGeom]; - for (int i = 0; i < nbGeom; i++) { - models[i] = createModelArray(_att, _zone.getGeometry(i).getNumPoints(), _zone); - } - final GISAttributeModelObjectList r = new GISAttributeModelObjectList(Arrays.asList(models), _att); - r.setListener(_zone); - return r; - } -} +/* + * @creation 7 avr. 2005 + * @modification $Date: 2008-03-26 16:46:43 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.ctulu.gis; + +import java.util.Arrays; + +import com.sun.j3d.loaders.vrml97.impl.Coordinate; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.LineString; + +/** + * @author Fred Deniger + * @version $Id: GISZoneAttributeFactory.java,v 1.10.6.1 2008-03-26 16:46:43 bmarchan Exp $ + */ +public final class GISZoneAttributeFactory { + + private GISZoneAttributeFactory() { + super(); + } + + /** + * @param _att l'attribut + * @param _src la liste des points source + * @param _target la liste des points cible + * @param _model le model initial + * @return l'interpolateur 1d + */ + public static GISReprojectInterpolateurI create1DInterpolateur(final GISAttributeInterface _att, + final LineString _src, final LineString _target, final GISAttributeModel _model) { + final Class clazz = _att.getDataClass(); + if (clazz == Integer.class) { + return new GISReprojectInterpolateur1DInteger(_src.getCoordinateSequence(), _target.getCoordinateSequence(), + (GISAttributeModelIntegerInterface) _model); + } else if (clazz == Double.class) { + return new GISReprojectInterpolateur1DDouble(_src.getCoordinateSequence(), _target.getCoordinateSequence(), + (GISAttributeModelDoubleInterface) _model); + } else if (clazz == Boolean.class) { + return new GISReprojectInterpolateur1DBoolean(_src.getCoordinateSequence(), _target.getCoordinateSequence(), + (GISAttributeModelBooleanInterface) _model); + } else { + return new GISReprojectInterpolateur1DObject(_src.getCoordinateSequence(), _target.getCoordinateSequence(), + (GISAttributeModelObjectInterface) _model); + } + + } + + /** + * @param _att l'attribut + * @param _src la liste des points source + * @param _target la liste des points cible + * @param _model le model initial + * @return l'interpolateur 1d + */ + public static GISReprojectInterpolateurI create1DInterpolateur(final GISAttributeInterface _att, + final Geometry _src, final Geometry _target, final GISAttributeModel _model) { + final Class clazz = _att.getDataClass(); + if (clazz == Integer.class) { + return new GISReprojectInterpolateur1DInteger( + new GISCoordinateSequence(_src.getCoordinates()), + new GISCoordinateSequence(_target.getCoordinates()), + (GISAttributeModelIntegerInterface) _model); + } else if (clazz == Double.class) { + return new GISReprojectInterpolateur1DDouble( + new GISCoordinateSequence(_src.getCoordinates()), + new GISCoordinateSequence(_target.getCoordinates()), + (GISAttributeModelDoubleInterface) _model); + } else if (clazz == Boolean.class) { + return new GISReprojectInterpolateur1DBoolean( + new GISCoordinateSequence(_src.getCoordinates()), + new GISCoordinateSequence(_target.getCoordinates()), + (GISAttributeModelBooleanInterface) _model); + } else { + return new GISReprojectInterpolateur1DObject( + new GISCoordinateSequence(_src.getCoordinates()), + new GISCoordinateSequence(_target.getCoordinates()), + (GISAttributeModelObjectInterface) _model); + } + + } + + public static GISAttributeModel createModelList(final GISAttributeInterface _att, final Object _valatt, final int _capacity, + final GISAttributeListener _listener, final int _initValuesNb) { + final GISAttributeModelListener resfinal = _att.createListModel(_capacity); + if (_initValuesNb > 0) { + final Object[] add = new Object[_initValuesNb]; + Arrays.fill(add, _valatt); + resfinal.addAllObject(add, null); + } + resfinal.setListener(_listener); + return resfinal; + } + + /** + * @param _initSize la taille + * @param _listener le listener + * @return le model. null si class non valide + */ + public static GISAttributeModel createModelArray(final GISAttributeInterface _att, final Object _valatt, final int _initSize, + final GISAttributeListener _listener) { + final GISAttributeModelListener resfinal = (GISAttributeModelListener)_att.createDataForGeom(_valatt, _initSize); + resfinal.setListener(_listener); + return resfinal; + } + + public static Object[] createObjectArray(final GISAttributeInterface _att, final Object[] _init, final int _nbPt) { + if (_init == null) { + return null; + } + final Class clazz = _att.getDataClass(); + if (clazz == Integer.class) { + final Integer[] r = new Integer[_nbPt]; + Arrays.fill(r, _att.getDefaultValue()); + + for (int i = Math.min(r.length, _init.length) - 1; i >= 0; i--) { + final Object o = _init[i]; + r[i] = (Integer) _att.getDefaultValue(); + if (o != null && o instanceof Integer) { + r[i] = (Integer) o; + } + } + return r; + } else if (clazz == Double.class) { + final Double[] r = new Double[_nbPt]; + Arrays.fill(r, _att.getDefaultValue()); + for (int i = Math.min(r.length, _init.length) - 1; i >= 0; i--) { + final Object o = _init[i]; + r[i] = (Double) _att.getDefaultValue(); + if (o != null && o instanceof Double) { + r[i] = (Double) o; + } + } + return r; + } else if (clazz == Boolean.class) { + final Boolean[] r = new Boolean[_nbPt]; + Arrays.fill(r, _att.getDefaultValue()); + for (int i = Math.min(r.length, _init.length) - 1; i >= 0; i--) { + final Object o = _init[i]; + r[i] = (Boolean) _att.getDefaultValue(); + if (o != null && o instanceof Boolean) { + r[i] = (Boolean) o; + } + } + return r; + } else { + final Object[] r = new Object[_nbPt]; + Arrays.fill(r, _att.getDefaultValue()); + for (int i = Math.min(r.length, _init.length) - 1; i >= 0; i--) { + final Object o = _init[i]; + r[i] = _att.getDefaultValue(); + if (o != null) { + r[i] = o; + } + } + return r; + } + } + + /** + * @param _att l'attribut + * @param _initValues les valeurs initiales + * @param _listener le listener + * @return le model. null si class non valide + */ + public static GISAttributeModel createModelArray(final GISAttributeInterface _att, final Object[] _initValues, + final GISAttributeListener _listener) { + GISAttributeModelListener resfinal = null; + final Class clazz = _att.getDataClass(); + if (clazz == Integer.class) { + resfinal = new GISAttributeModelIntegerArray(_initValues, _att); + } else if (clazz == Double.class) { + resfinal = new GISAttributeModelDoubleArray(_initValues, _att); + } else if (clazz == Boolean.class) { + resfinal = new GISAttributeModelBooleanArray(_initValues, _att); + } else { + resfinal = new GISAttributeModelObjectArray(_initValues, _att); + } + resfinal.setListener(_listener); + return resfinal; + } + + /** + * @param _listener le listener + * @param _attr les attributs + * @return une zone correctement initialis\xE9e + */ + public static GISZoneCollectionLigneBrisee createPolyligne(final GISZoneListener _listener, + final GISAttributeInterface[] _attr) { + final GISZoneCollectionLigneBrisee zone = new GISZoneCollectionLigneBrisee(_listener); + zone.initAttributes(_attr); + return zone; + + } + + /** + * @param _listener le listener + * @param _attr les attributs + * @return une zone correctement initialis\xE9e + */ + public static GISZoneCollectionPoint createPoint(final GISZoneListener _listener, final GISAttributeInterface[] _attr) { + final GISZoneCollectionPoint zone = new GISZoneCollectionPoint(_listener); + zone.initAttributes(_attr); + return zone; + + } + + /** + * @param _listener le listener + * @param _attr les attributs + * @return une zone correctement initialis\xE9e + */ + public static GISZoneCollectionLigneBrisee createLigneBrisee(final GISZoneListener _listener, + final GISAttributeInterface[] _attr) { + final GISZoneCollectionLigneBrisee zone = new GISZoneCollectionLigneBrisee(_listener); + zone.initAttributes(_attr); + return zone; + + } + + /** + * @param _zone la zone concern\xE9e + * @param _att l'attribut + * @return le model ou nul si inconnu + */ + public static GISAttributeModel createModel(final GISZoneCollection _zone, final GISAttributeInterface _att) { + final int nbGeom = _zone.getNumGeometries(); + if (_att == null) return null; + Object valatt=_zone.fixedAttributes_.get(_att); + if (valatt==null) valatt=_att.getDefaultValue(); + if (!_att.isAtomicValue() || (_zone instanceof GISZoneCollectionPoint)) { + return createModelList(_att, valatt, (int) (nbGeom * 1.5), _zone, nbGeom); + } + final GISAttributeModel[] models = new GISAttributeModel[nbGeom]; + for (int i = 0; i < nbGeom; i++) { + models[i] = createModelArray(_att, valatt, _zone.getGeometry(i).getNumPoints(), _zone); + } + final GISAttributeModelObjectList r = new GISAttributeModelObjectList(Arrays.asList(models), _att); + r.setListener(_zone); + return r; + } +} Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-07-10 07:45:36 UTC (rev 3679) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-07-10 07:45:55 UTC (rev 3680) @@ -22,6 +22,7 @@ import org.fudaa.ctulu.ProgressionInterface; import org.fudaa.ctulu.collection.CtuluCollection; import org.fudaa.ctulu.collection.CtuluCollectionDoubleEdit; +import org.geotools.feature.type.SetAttributeType; /** * Une classe abstraite d'objets g\xE9ometriques auquels sont associ\xE9s des attributs dont les valeurs @@ -37,6 +38,8 @@ /** La liste ordonn\xE9e des mod\xE8les d'attributs associ\xE9es \xE0 la collection. */ protected GISAttributeModelListener[] attr_; + /** La valeur de la nature pour pour cette collection si elle est impos\xE9e. null : non impos\xE9e. */ + protected Map fixedAttributes_=new HashMap(); protected GISAttributeDouble attributeIsZ_ = GISAttributeConstants.BATHY; // Devrait \xEAtre null par defaut. @@ -199,15 +202,17 @@ } final int nbAttribute = getNbAttributes(); final List data = new ArrayList(nbAttribute); - for (int i = 0; i < nbAttribute; i++) { - final GISAttributeInterface gi = getAttribute(i); + for (int iatt = 0; iatt < nbAttribute; iatt++) { + final GISAttributeInterface gi = getAttribute(iatt); final Object[] os = new Object[nbGeom]; - for (int j = 0; j < nbGeom; j++) { - os[j] = gi.createDataForGeom(_model.getValue(i, j), pt[j].getNumPoints()); + for (int igeom = 0; igeom < nbGeom; igeom++) { +// os[igeom] = gi.createDataForGeom(_model.getValue(iatt, igeom), pt[igeom].getNumPoints()); + os[igeom] = createOrAssignAttribut(iatt, _model.getValue(iatt, igeom), pt[igeom]); } data.add(nbGeom == 1 ? os[0] : os); } + final int firstIdx = super.geometry_.getSize() - 1; super.geometry_.addAll(pt, data, _cmd); if (_doPostImport) { @@ -217,6 +222,32 @@ return true; } + /** + * Cr\xE9e ou assigne la valeur d'attribut pass\xE9e. Si la valeur pass\xE9e est null, une valeur par d\xE9faut est affect\xE9e. + * Si la valeur est scalaire et l'attribut atomique, un tableau de valeurs est cr\xE9e. Si la valeur est un tableau et + * l'attribut est global, une valeur scalaire moyenne et cr\xE9ee. + * + * @param _iatt L'indice d'attribut dans la liste des attributs. + * @param _valatt La valeur de l'attribut. Peut \xEAtre null. + * @param _dest La g\xE9om\xE9trie pour la cr\xE9ation de la valeur. + * @return La valeur pour l'attribut et la g\xE9om\xE9trie donn\xE9e. + */ + protected Object createOrAssignAttribut(int _iatt, final Object _init, final Geometry _dest) { + Object ret; + final int nbPt = _dest.getNumPoints(); + Object val=fixedAttributes_.get(getAttribute(_iatt)); + if (val==null) val=_init; + ret = getDataModel(_iatt).getAttribute().createDataForGeom(val,nbPt); + if (attributeIsZ_ != null && attributeIsZ_.isAtomicValue() && _init == null && + getDataModel(_iatt).getAttribute() == attributeIsZ_) { + final GISAttributeModelDoubleArray array = (GISAttributeModelDoubleArray) ret; + for (int k = nbPt - 1; k >= 0; k--) { + array.set(k, ((GISCoordinateSequenceContainerInterface)_dest).getCoordinateSequence().getOrdinate(k,2)); + } + } + return ret; + } + public abstract void addCoordinateSequence(CoordinateSequence _seq, Object[] _datas, CtuluCommandContainer _cmd); public abstract void addGeometry(Geometry _seq, Object[] _datas, CtuluCommandContainer _cmd); @@ -403,6 +434,22 @@ } /** + * Definit les attributs pour lesquels la valeur est immuable.<p> + * <b>Remarque</b> : Si des objets existent d\xE9j\xE0 avec une valeur pour l'attribut \xE0 rendre immuable, ces valeurs ne seront pas + * remplac\xE9e par la valeur constante. Utilisez {@link GISZoneCollection#setAttributes()} + * pour r\xE9initialiser les valeurs pour la collection. + * + * @param _att L'attribut \xE0 fixer. + * @param _value La valeur constante. Si null, l'attribut n'est pas obligatoirement fix\xE9. + */ + public void setFixedAttributeValue(GISAttributeInterface _att, Object _value) { + if (_value==null) + fixedAttributes_.remove(_att); + else + fixedAttributes_.put(_att, _value); + } + + /** * Associe les attributs aux objets de la collection. Pour chaque attribut inexistant dans la liste est cr\xE9\xE9 un nouveau mod\xE8le. * @param _att La liste des attributs, conditionnant l'ordre des mod\xE8les dans la liste des mod\xE8les. * @param _cmd Le conteneur de commande. Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java 2008-07-10 07:45:36 UTC (rev 3679) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java 2008-07-10 07:45:55 UTC (rev 3680) @@ -1,515 +1,507 @@ -/* - * @creation 21 mars 2005 - * @modification $Date: 2008-04-01 07:22:47 $ - * @license GNU General Public License 2 - * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne - * @mail de...@fu... - */ -package org.fudaa.ctulu.gis; - -import gnu.trove.TIntArrayList; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.CoordinateSequence; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.LineString; - -import com.memoire.fu.FuLog; - -import org.fudaa.ctulu.CtuluCommandComposite; -import org.fudaa.ctulu.CtuluCommandContainer; -import org.fudaa.ctulu.CtuluLib; -import org.fudaa.ctulu.CtuluLibArray; -import org.fudaa.ctulu.CtuluLibString; -import org.fudaa.ctulu.CtuluListSelectionInterface; -import org.fudaa.ctulu.CtuluUI; -import org.fudaa.ctulu.collection.CtuluCollectionDouble; - -/** - * @author Fred Deniger - * @version $Id: GISZoneCollectionLigneBrisee.java,v 1.20.6.4 2008-04-01 07:22:47 bmarchan Exp $ - */ -public class GISZoneCollectionLigneBrisee extends GISZoneCollection { - - public GISZoneCollectionLigneBrisee() { - this(null); - } - - /** - * @param _listener le listener - */ - public GISZoneCollectionLigneBrisee(final GISZoneListener _listener) { - this(10, _listener); - } - - /** - * @param _listener le listener - */ - public GISZoneCollectionLigneBrisee(final GISZoneListener _listener, final GISZoneCollectionLigneBrisee _br) { - this(10, _listener); - if (_br != null) { - for (int i = 0; i < _br.getNumGeometries(); i++) { - super.geometry_.add(_br.getGeometry(i), null, null); - } - } - } - - public GISZoneCollectionLigneBrisee(final int _nbObject, final GISZoneListener _listener) { - super(_nbObject); - listener_ = _listener; - } - - private List createListForSeveralAdd(final Object[][] _att, final int _nbGeom) { - final int nbAttributes = getNbAttributes(); - final List attListe = new ArrayList(nbAttributes); - for (int i = 0; i < nbAttributes; i++) { - final Object[] oi = new Object[_nbGeom]; - for (int j = 0; j < _nbGeom; j++) { - oi[j] = _att[j][i]; - } - attListe.add(oi); - } - return attListe; - } - - /** - * @param _idx l'indice de la ligne a changer - * @param _newLine la nouvelle ligne - * @param _cmd le receveur de commande - */ - private void setValueIntern(final int _idx, final LineString _newLine, final CtuluCommandContainer _cmd) { - if (!isGeomModifiable_) { - return; - } - final LineString old = (LineString) super.geometry_.getValueAt(_idx); - if (old.getNumPoints() == _newLine.getNumPoints() || !containsAtomicAttribute()) { - super.geometry_.setObject(_idx, _newLine, _cmd); - } else { - final CtuluCommandComposite cmp = new CtuluCommandComposite(); - for (int i = getNbAttributes() - 1; i >= 0; i--) { - final GISAttributeInterface att = getAttribute(i); - if (att.isAtomicValue()) { - final GISAttributeModel m = (GISAttributeModel) (getModelListener(i).getObjectValueAt(_idx)); - final GISReprojectInterpolateurI interpolateur = GISZoneAttributeFactory.create1DInterpolateur(att, old, - _newLine, m); - getModelListener(i).setObject(_idx, m.deriveNewModel(_newLine.getNumPoints(), interpolateur), cmp); - } - } - super.geometry_.setObject(_idx, _newLine, cmp); - if (_cmd != null) { - _cmd.addCmd(cmp.getSimplify()); - } - } - } - - /** - * Cr\xE9e un tableau de valeurs d'attributs.<p> - * - * Les valeurs peuvent \xEAtre globales ou atomiques. - * - * @param _init Les valeurs d'initialisation, dans l'ordre et au nombre des mod\xE8les d'attributs. - * Si null, les valeurs par d\xE9faut sont affect\xE9es (voir {@link GISAttributeInterface#getDefaultValue()}) - * @param _dest La g\xE9ometrie polyligne ou polygone. - * @param _isClosed Param\xE8tre inutilis\xE9. - * @return - */ - protected Object[] createAttributeList(final Object[] _init, final Geometry _dest, final boolean _isClosed) { - final Object[] rf = new Object[getNbAttributes()]; - final int nbPt = _dest.getNumPoints(); - if (_init != null && _init.length != getNbAttributes()) { - throw new IllegalArgumentException("bad size"); - } - for (int i = getNbAttributes() - 1; i >= 0; i--) { - rf[i] = getDataModel(i).getAttribute().createDataForGeom(_init != null ? _init[i] : null, nbPt); - if (attributeIsZ_ != null && attributeIsZ_.isAtomicValue() && (_init == null || _init[i] == null) - && getDataModel(i).getAttribute() == attributeIsZ_) { - final GISAttributeModelDoubleArray array = (GISAttributeModelDoubleArray) rf[i]; - for (int k = nbPt - 1; k >= 0; k--) { - array.set(k, _dest.getCoordinates()[k].z); - } - } - } - return rf; - } - - public boolean accept(final GISVisitor _v) { - final int nb = getNumGeometries(); - for (int i = 0; i < nb; i++) { - if (!((GISLigneBrisee) getGeometry(i)).accept(_v)) { - return false; - } - } - return true; - } - - public void addAllLineStringClosedOrNode(final LineString[] _gs, final CtuluCommandContainer _cmd) { - if (isGeomModifiable_) { - - final Object[][] att = new Object[_gs.length][]; - for (int i = 0; i < _gs.length; i++) { - att[i] = createAttributeList(null, _gs[i], _gs[i].isClosed()); - } - - geometry_.addAll(_gs, createListForSeveralAdd(att, _gs.length), _cmd); - } - } - - public void addAllPolygones(final GISPolygone[] _gs, final CtuluCommandContainer _cmd) { - if (isGeomModifiable_) { - final Object[][] att = new Object[_gs.length][]; - for (int i = 0; i < _gs.length; i++) { - att[i] = createAttributeList(null, _gs[i], true); - } - geometry_.addAll(_gs, createListForSeveralAdd(att, _gs.length), _cmd); - } - } - - public void addAllPolylignes(final GISPolyligne[] _gs, final CtuluCommandContainer _cmd) { - if (isGeomModifiable_) { - final Object[][] att = new Object[_gs.length][]; - for (int i = 0; i < _gs.length; i++) { - att[i] = createAttributeList(null, _gs[i], false); - } - geometry_.addAll(_gs, createListForSeveralAdd(att, _gs.length), _cmd); - } - } - - public void addCoordinateSequence(final CoordinateSequence _seq, final Object[] _data, - final CtuluCommandContainer _cmd) { - if (_seq == null || _seq.size() < 2) { - return; - } - if (_seq.size() > 3 && _seq.getCoordinate(0).equals2D(_seq.getCoordinate(_seq.size() - 1))) { - addPolygone(_seq, _data, _cmd); - } else { - addPolyligne(_seq, _data, _cmd); - } - } - - public void addGeometry(final Geometry _seq, final Object[] _data, final CtuluCommandContainer _cmd) { - final LineString s = (LineString) _seq; - if (s.isClosed()) { - addPolygone(s.getCoordinateSequence(), _data, _cmd); - } else { - addPolyligne(s.getCoordinateSequence(), _data, _cmd); - } - } - - /** - * @todo Les poly de niveau sont mal trait\xE9es - */ - public void addPoint(final int _ligneIdx, final int _idxBefore, final double _x, final double _y, - final CtuluCommandContainer _cmd) { - if (!isGeomModifiable_) { - return; - } - LineString str = (LineString) super.geometry_.getValueAt(_ligneIdx); - final CoordinateSequence newSeq = str.getCoordinateSequence(); - final int initSize = newSeq.size(); - final Coordinate[] cs = new Coordinate[initSize + 1]; - int idx = 0; - for (int i = 0; i < initSize; i++) { - cs[idx++] = newSeq.getCoordinateCopy(i); - if (i == _idxBefore) { - cs[idx++] = new Coordinate(_x, _y, newSeq.getOrdinate(i, 2)); - } - } - - if (str/*.isClosed()*/ instanceof GISPolygone) { - str = GISGeometryFactory.INSTANCE.createLinearRing(cs); - setValue(_ligneIdx, (GISPolygone) str, _cmd); - } - else if (str instanceof GISPolyligne) { - str = GISGeometryFactory.INSTANCE.createLineString(cs); - setValue(_ligneIdx, (GISPolyligne) str, _cmd); - } - } - - public void addPolygone(final CoordinateSequence _g, final CtuluCommandContainer _cmd) { - addPolygone((GISPolygone) GISGeometryFactory.INSTANCE.createLinearRing(_g), _cmd); - } - - public void addPolygone(final CoordinateSequence _g, final Object[] _data, final CtuluCommandContainer _cmd) { - addPolygone((GISPolygone) GISGeometryFactory.INSTANCE.createLinearRing(_g), _data, _cmd); - } - - public void addPolygone(final GISPolygone _g, final CtuluCommandContainer _cmd) { - addPolygone(_g, null, _cmd); - } - - public void addPolygone(final GISPolygone _g, final Object[] _data, final CtuluCommandContainer _cmd) { - if (isGeomModifiable_) { - super.geometry_.add(_g, Arrays.asList(createAttributeList(_data, _g, true)), _cmd); - } - } - - public void addPolygoneNiveau(final CoordinateSequence _g, final CtuluCommandContainer _cmd) { - addPolygone((GISPolygone) GISGeometryFactory.INSTANCE.createLinearRingNiveau(_g), _cmd); - } - - /** - * Ajoute une polyligne sous forme d'une liste de coordonn\xE9es, avec attributs et gestionnaire de commandes. - * @param _g La liste de coordonn\xE9es, renseign\xE9e en Z. - * @param _data Les attributs, dans l'ordre dans lequel ils sont d\xE9finis dans la collection. - * @param _cmd Le gestionnaire de commandes. Peut \xEAtre null. - */ - public void addPolyligne(final CoordinateSequence _g, final Object[] _data, final CtuluCommandContainer _cmd) { - addPolyligne((GISPolyligne) GISGeometryFactory.INSTANCE.createLineString(_g), _data, _cmd); - } - - public void addPolyligne(final GISCoordinateSequence _g, final CtuluCommandContainer _cmd) { - addPolyligne((GISPolyligne) GISGeometryFactory.INSTANCE.createLineString(_g), _cmd); - } - - public void addPolyligne(final GISPolyligne _g, final CtuluCommandContainer _cmd) { - addPolyligne(_g, null, _cmd); - } - - /** - * Ajoute une polyligne, avec attributs et gestionnaire de commandes. - * @param _g La polyligne, renseign\xE9e en Z. - * @param _data Les attributs, dans l'ordre dans lequel ils sont d\xE9finis dans la collection. - * @param _cmd Le gestionnaire de commandes. Peut \xEAtre null. - */ - public void addPolyligne(final GISPolyligne _g, final Object[] _data, final CtuluCommandContainer _cmd) { - if (isGeomModifiable_) { - super.geometry_.add(_g, Arrays.asList(createAttributeList(_data, _g, false)), _cmd); - } - } - - public void addPolyligneNiveau(final GISCoordinateSequence _g, final CtuluCommandContainer _cmd) { - addPolyligne((GISPolyligne) GISGeometryFactory.INSTANCE.createLineStringNiveau(_g), _cmd); - } - - public boolean containsAtomicAttribute() { - for (int i = getNbAttributes() - 1; i >= 0; i--) { - if (getAttribute(i).isAtomicValue()) { - return true; - } - } - return false; - } - - /** - * @return true si contient au moins un polygone (ligne brisee fermee). - */ - public boolean containsPolygone() { - final GISVisitorChooser chooser = new GISVisitorChooser(); - for (int i = getNumGeometries() - 1; i >= 0; i--) { - ((GISGeometry) getGeometry(i)).accept(chooser); - if (chooser.isPolygone()) { - return true; - } - } - return false; - } - - /** - * @return true si contient au moins un polygone (ligne brisee fermee). - */ - public boolean containsPolyligne() { - final GISVisitorChooser chooser = new GISVisitorChooser(); - for (int i = getNumGeometries() - 1; i >= 0; i--) { - ((GISGeometry) getGeometry(i)).accept(chooser); - if (chooser.isPolyligne()) { - return true; - } - } - return false; - } - - public CoordinateSequence getCoordinateSequence(final int _i) { - return ((LineString) getGeometry(_i)).getCoordinateSequence(); - } - - public Class getDataStoreClass() { - return LineString.class; - } - - public double getDoubleValue(final int _idxAtt, final int _idxGeom) { - if (getAttribute(_idxAtt).isAtomicValue()) { - return CtuluLibArray.getMoyenne(((CtuluCollectionDouble) getModel(_idxAtt).getObjectValueAt(_idxGeom)).getValues()); - } - return ((CtuluCollectionDouble) getModel(_idxAtt)).getValue(_idxGeom); - } - - public void postImport(final int _firstIdx) { - final GISAttributeModel model = getModel(attributeIsZ_); - if (attributeIsZ_ == null || model == null) return; - - if (attributeIsZ_.isAtomicValue()) { - final int nb = getNumGeometries(); - for (int i = (_firstIdx < 0 ? 0 : _firstIdx); i < nb; i++) { - final CoordinateSequence seq = getCoordinateSequence(i); - final GISAttributeModelDoubleArray arr = (GISAttributeModelDoubleArray) model.getObjectValueAt(i); - for (int k = seq.size() - 1; k >= 0; k--) { - arr.set(k, seq.getOrdinate(k, 2)); - } - } - } - // L'attribut est global : On r\xE9cup\xE9re les coordonn\xE9es, qu'on moyenne. - else { - final int nb = getNumGeometries(); - for (int i = (_firstIdx < 0 ? 0 : _firstIdx); i < nb; i++) { - final CoordinateSequence seq = getCoordinateSequence(i); - double moy=0; - for (int k = seq.size() - 1; k >= 0; k--) { - moy+=seq.getOrdinate(k, 2); - } - model.setObject(i,new Double(moy/seq.size()),null); - } - } - } - - public boolean removeAtomicValue(final int _idxGeom, final CtuluListSelectionInterface _sel, final CtuluUI _ui, - final CtuluCommandContainer _cmd) { - if (_sel == null || _sel.isEmpty()) { - return false; - } - boolean r = true; - final LineString line = (LineString) getGeometry(_idxGeom); - int nbPt = line.getCoordinateSequence().size(); - // les nouvelles coordonnees. - final Coordinate[] newCs = new Coordinate[nbPt]; - // cette liste contient les indice a enlever : creee que si necessaire - // si des attribute atomics existent - final TIntArrayList idxToRemove = containsAtomicAttribute() ? new TIntArrayList(nbPt) : null; - // dans le cas polygone le dernier point n'est pas a considerer=premier point - if (line/*.isClosed()*/ instanceof GISPolygone) { - nbPt--; - } - - // compteur tempo - int count = 0; - for (int idxPt = 0; idxPt < nbPt; idxPt++) { - if (_sel.isSelected(idxPt)) { - if (idxToRemove != null) { - idxToRemove.add(idxPt); - } - } else { - newCs[count++] = line.getCoordinateSequence().getCoordinateCopy(idxPt); - } - } - LineString newString = null; - - // Un polygone - if (line/*.isClosed()*/ instanceof GISPolygone) { - if (count < 3) { - r = false; - if (_ui != null) { - _ui.error(null, CtuluLib.getS("La ligne brisee doit contenir {0} points au moins", CtuluLibString.TROIS), - false); - } - - } else { - newCs[count++] = newCs[0]; - final Coordinate[] coord = new Coordinate[count]; - System.arraycopy(newCs, 0, coord, 0, coord.length); - newString = GISGeometryFactory.INSTANCE.createLinearRing(coord); - newString.setUserData(line.getUserData()); - } - } - - // Une polyligne - else if (line instanceof GISPolyligne) { - if (count < 2) { - r = false; - if (_ui != null) { - _ui.error(null, CtuluLib.getS("La ligne brisee doit contenir {0} points au moins", CtuluLibString.DEUX), - false); - } - if (FuLog.isTrace()) { - FuLog.trace("EBLI: polylignes: not enough points"); - // message - } - } else { - final Coordinate[] coord = new Coordinate[count]; - System.arraycopy(newCs, 0, coord, 0, coord.length); - newString = GISGeometryFactory.INSTANCE.createLineString(coord); - newString.setUserData(line.getUserData()); - } - } - - if (r) { - final CtuluCommandComposite cmp = new CtuluCommandComposite(); - super.geometry_.setObject(_idxGeom, newString, cmp); - // si des attributs atomics sont concerne - if (idxToRemove != null && idxToRemove.size() > 0) { - final int[] idx = idxToRemove.toNativeArray(); - Arrays.sort(idx); - for (int i = getNbAttributes() - 1; i >= 0; i--) { - // attribut atomic - if (getAttribute(i).isAtomicValue()) { - // dans ce cas on recupere le model contenant cet attribut - final GISAttributeModel m = getModelListener(i); - // on recupere le sous-model concerne par la modif de geometrie - final GISAttributeModel atomicModel = (GISAttributeModel) m.getObjectValueAt(_idxGeom); - // on le change - m.setObject(_idxGeom, atomicModel.createSubModel(idx), cmp); - } - } - } - if (_cmd!=null) - _cmd.addCmd(cmp.getSimplify()); - } - return r; - } - - public void removeLignes(final int[] _idx, final CtuluCommandContainer _cmd) { - super.geometry_.remove(_idx, _cmd); - } - - public void setCoordinateSequence(final int _idx, final CoordinateSequence _newSeq, final CtuluCommandContainer _cmd) { - final LineString old = (LineString) super.geometry_.getValueAt(_idx); - if (_newSeq != null && _newSeq.size() == old.getNumPoints()) { - final CoordinateSequence seq = GISGeometryFactory.INSTANCE.getCoordinateSequenceFactory().create(_newSeq); - if (old/*.isClosed()*/ instanceof GISPolygone) { - geometry_.setObject(_idx, GISGeometryFactory.INSTANCE.createLinearRing(seq), _cmd); - } else { - GISPolyligne nl = (GISPolyligne)GISGeometryFactory.INSTANCE.createLineString(seq); - geometry_.setObject(_idx, nl, _cmd); - } - } - } - - - /** - * Remplace une ancienne g\xE9om\xE9trie par un nouveau polygone, en interpolant si n\xE9cessaire les attributs. - * @param _idx L'index de la g\xE9ometrie. - * @param _newLine La nouvelle g\xE9om\xE9trie. - * @param _cmd Le container de commandes. - */ - public void setValue(final int _idx, final GISPolygone _newLine, final CtuluCommandContainer _cmd) { - setValueIntern(_idx, _newLine, _cmd); - } - - /** - * Remplace une ancienne g\xE9om\xE9trie par une nouvelle polyligne, en interpolant si n\xE9cessaire les attributs. - * @param _idx L'index de la g\xE9ometrie. - * @param _newLine La nouvelle g\xE9om\xE9trie. - * @param _cmd Le container de commandes. - */ - public void setValue(final int _idx, final GISPolyligne _newLine, final CtuluCommandContainer _cmd) { - setValueIntern(_idx, _newLine, _cmd); - } - - public void updateListeners() { - for (int i = getNbAttributes() - 1; i >= 0; i--) { - final GISAttributeModelListener m = getModelListener(i); - if (m != null) { - if (m.getAttribute().isAtomicValue()) { - for (int j = m.getSize() - 1; j >= 0; j--) { - ((GISAttributeModelListener) m.getObjectValueAt(j)).setListener(this); - } - - } else { - m.setListener(this); - } - } - } - } -} +/* + * @creation 21 mars 2005 + * @modification $Date: 2008-04-01 07:22:47 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.ctulu.gis; + +import gnu.trove.TIntArrayList; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.CoordinateSequence; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.LineString; + +import com.memoire.fu.FuLog; + +import org.fudaa.ctulu.CtuluCommandComposite; +import org.fudaa.ctulu.CtuluCommandContainer; +import org.fudaa.ctulu.CtuluLib; +import org.fudaa.ctulu.CtuluLibArray; +import org.fudaa.ctulu.CtuluLibString; +import org.fudaa.ctulu.CtuluListSelectionInterface; +import org.fudaa.ctulu.CtuluUI; +import org.fudaa.ctulu.collection.CtuluCollectionDouble; + +/** + * @author Fred Deniger + * @version $Id: GISZoneCollectionLigneBrisee.java,v 1.20.6.4 2008-04-01 07:22:47 bmarchan Exp $ + */ +public class GISZoneCollectionLigneBrisee extends GISZoneCollection { + + public GISZoneCollectionLigneBrisee() { + this(null); + } + + /** + * @param _listener le listener + */ + public GISZoneCollectionLigneBrisee(final GISZoneListener _listener) { + this(10, _listener); + } + + /** + * @param _listener le listener + */ + public GISZoneCollectionLigneBrisee(final GISZoneListener _listener, final GISZoneCollectionLigneBrisee _br) { + this(10, _listener); + if (_br != null) { + for (int i = 0; i < _br.getNumGeometries(); i++) { + super.geometry_.add(_br.getGeometry(i), null, null); + } + } + } + + public GISZoneCollectionLigneBrisee(final int _nbObject, final GISZoneListener _listener) { + super(_nbObject); + listener_ = _listener; + } + + private List createListForSeveralAdd(final Object[][] _att, final int _nbGeom) { + final int nbAttributes = getNbAttributes(); + final List attListe = new ArrayList(nbAttributes); + for (int i = 0; i < nbAttributes; i++) { + final Object[] oi = new Object[_nbGeom]; + for (int j = 0; j < _nbGeom; j++) { + oi[j] = _att[j][i]; + } + attListe.add(oi); + } + return attListe; + } + + /** + * @param _idx l'indice de la ligne a changer + * @param _newLine la nouvelle ligne + * @param _cmd le receveur de commande + */ + private void setValueIntern(final int _idx, final LineString _newLine, final CtuluCommandContainer _cmd) { + if (!isGeomModifiable_) { + return; + } + final LineString old = (LineString) super.geometry_.getValueAt(_idx); + if (old.getNumPoints() == _newLine.getNumPoints() || !containsAtomicAttribute()) { + super.geometry_.setObject(_idx, _newLine, _cmd); + } else { + final CtuluCommandComposite cmp = new CtuluCommandComposite(); + for (int i = getNbAttributes() - 1; i >= 0; i--) { + final GISAttributeInterface att = getAttribute(i); + if (att.isAtomicValue()) { + final GISAttributeModel m = (GISAttributeModel) (getModelListener(i).getObjectValueAt(_idx)); + final GISReprojectInterpolateurI interpolateur = GISZoneAttributeFactory.create1DInterpolateur(att, old, + _newLine, m); + getModelListener(i).setObject(_idx, m.deriveNewModel(_newLine.getNumPoints(), interpolateur), cmp); + } + } + super.geometry_.setObject(_idx, _newLine, cmp); + if (_cmd != null) { + _cmd.addCmd(cmp.getSimplify()); + } + } + } + + /** + * Cr\xE9e un tableau de valeurs d'attributs.<p> + * + * Les valeurs peuvent \xEAtre globales ou atomiques. + * + * @param _init Les valeurs d'initialisation, dans l'ordre et au nombre des mod\xE8les d'attributs. + * Si null, les valeurs par d\xE9faut sont affect\xE9es (voir {@link GISAttributeInterface#getDefaultValue()}) + * @param _dest La g\xE9ometrie polyligne ou polygone. + * @param _isClosed Param\xE8tre inutilis\xE9. + * @return + */ + protected Object[] createAttributeList(final Object[] _init, final Geometry _dest, final boolean _isClosed) { + final Object[] rf = new Object[getNbAttributes()]; + if (_init != null && _init.length != getNbAttributes()) { + throw new IllegalArgumentException("bad size"); + } + for (int i = getNbAttributes() - 1; i >= 0; i--) { + rf[i]=createOrAssignAttribut(i,_init==null?null:_init[i],_dest); + } + return rf; + } + + public boolean accept(final GISVisitor _v) { + final int nb = getNumGeometries(); + for (int i = 0; i < nb; i++) { + if (!((GISLigneBrisee) getGeometry(i)).accept(_v)) { + return false; + } + } + return true; + } + + public void addAllLineStringClosedOrNode(final LineString[] _gs, final CtuluCommandContainer _cmd) { + if (isGeomModifiable_) { + + final Object[][] att = new Object[_gs.length][]; + for (int i = 0; i < _gs.length; i++) { + att[i] = createAttributeList(null, _gs[i], _gs[i].isClosed()); + } + + geometry_.addAll(_gs, createListForSeveralAdd(att, _gs.length), _cmd); + } + } + + public void addAllPolygones(final GISPolygone[] _gs, final CtuluCommandContainer _cmd) { + if (isGeomModifiable_) { + final Object[][] att = new Object[_gs.length][]; + for (int i = 0; i < _gs.length; i++) { + att[i] = createAttributeList(null, _gs[i], true); + } + geometry_.addAll(_gs, createListForSeveralAdd(att, _gs.length), _cmd); + } + } + + public void addAllPolylignes(final GISPolyligne[] _gs, final CtuluCommandContainer _cmd) { + if (isGeomModifiable_) { + final Object[][] att = new Object[_gs.length][]; + for (int i = 0; i < _gs.length; i++) { + att[i] = createAttributeList(null, _gs[i], false); + } + geometry_.addAll(_gs, createListForSeveralAdd(att, _gs.length), _cmd); + } + } + + public void addCoordinateSequence(final CoordinateSequence _seq, final Object[] _data, + final CtuluCommandContainer _cmd) { + if (_seq == null || _seq.size() < 2) { + return; + } + if (_seq.size() > 3 && _seq.getCoordinate(0).equals2D(_seq.getCoordinate(_seq.size() - 1))) { + addPolygone(_seq, _data, _cmd); + } else { + addPolyligne(_seq, _data, _cmd); + } + } + + public void addGeometry(final Geometry _seq, final Object[] _data, final CtuluCommandContainer _cmd) { + final LineString s = (LineString) _seq; + if (s.isClosed()) { + addPolygone(s.getCoordinateSequence(), _data, _cmd); + } else { + addPolyligne(s.getCoordinateSequence(), _data, _cmd); + } + } + + /** + * @todo Les poly de niveau sont mal trait\xE9es + */ + public void addPoint(final int _ligneIdx, final int _idxBefore, final double _x, final double _y, + final CtuluCommandContainer _cmd) { + if (!isGeomModifiable_) { + return; + } + LineString str = (LineString) super.geometry_.getValueAt(_ligneIdx); + final CoordinateSequence newSeq = str.getCoordinateSequence(); + final int initSize = newSeq.size(); + final Coordinate[] cs = new Coordinate[initSize + 1]; + int idx = 0; + for (int i = 0; i < initSize; i++) { + cs[idx++] = newSeq.getCoordinateCopy(i); + if (i == _idxBefore) { + cs[idx++] = new Coordinate(_x, _y, newSeq.getOrdinate(i, 2)); + } + } + + if (str/*.isClosed()*/ instanceof GISPolygone) { + str = GISGeometryFactory.INSTANCE.createLinearRing(cs); + setValue(_ligneIdx, (GISPolygone) str, _cmd); + } + else if (str instanceof GISPolyligne) { + str = GISGeometryFactory.INSTANCE.createLineString(cs); + setValue(_ligneIdx, (GISPolyligne) str, _cmd); + } + } + + public void addPolygone(final CoordinateSequence _g, final CtuluCommandContainer _cmd) { + addPolygone((GISPolygone) GISGeometryFactory.INSTANCE.createLinearRing(_g), _cmd); + } + + public void addPolygone(final CoordinateSequence _g, final Object[] _data, final CtuluCommandContainer _cmd) { + addPolygone((GISPolygone) GISGeometryFactory.INSTANCE.createLinearRing(_g), _data, _cmd); + } + + public void addPolygone(final GISPolygone _g, final CtuluCommandContainer _cmd) { + addPolygone(_g, null, _cmd); + } + + public void addPolygone(final GISPolygone _g, final Object[] _data, final CtuluCommandContainer _cmd) { + if (isGeomModifiable_) { + super.geometry_.add(_g, Arrays.asList(createAttributeList(_data, _g, true)), _cmd); + } + } + + public void addPolygoneNiveau(final CoordinateSequence _g, final CtuluCommandContainer _cmd) { + addPolygone((GISPolygone) GISGeometryFactory.INSTANCE.createLinearRingNiveau(_g), _cmd); + } + + /** + * Ajoute une polyligne sous forme d'une liste de coordonn\xE9es, avec attributs et gestionnaire de commandes. + * @param _g La liste de coordonn\xE9es, renseign\xE9e en Z. + * @param _data Les attributs, dans l'ordre dans lequel ils sont d\xE9finis dans la collection. + * @param _cmd Le gestionnaire de commandes. Peut \xEAtre null. + */ + public void addPolyligne(final CoordinateSequence _g, final Object[] _data, final CtuluCommandContainer _cmd) { + addPolyligne((GISPolyligne) GISGeometryFactory.INSTANCE.createLineString(_g), _data, _cmd); + } + + public void addPolyligne(final GISCoordinateSequence _g, final CtuluCommandContainer _cmd) { + addPolyligne((GISPolyligne) GISGeometryFactory.INSTANCE.createLineString(_g), _cmd); + } + + public void addPolyligne(final GISPolyligne _g, final CtuluCommandContainer _cmd) { + addPolyligne(_g, null, _cmd); + } + + /** + * Ajoute une polyligne, avec attributs et gestionnaire de commandes. + * @param _g La polyligne, renseign\xE9e en Z. + * @param _data Les attributs, dans l'ordre dans lequel ils sont d\xE9finis dans la collection. + * @param _cmd Le gestionnaire de commandes. Peut \xEAtre null. + */ + public void addPolyligne(final GISPolyligne _g, final Object[] _data, final CtuluCommandContainer _cmd) { + if (isGeomModifiable_) { + super.geometry_.add(_g, Arrays.asList(createAttributeList(_data, _g, false)), _cmd); + } + } + + public void addPolyligneNiveau(final GISCoordinateSequence _g, final CtuluCommandContainer _cmd) { + addPolyligne((GISPolyligne) GISGeometryFactory.INSTANCE.createLineStringNiveau(_g), _cmd); + } + + public boolean containsAtomicAttribute() { + for (int i = getNbAttributes() - 1; i >= 0; i--) { + if (getAttribute(i).isAtomicValue()) { + return true; + } + } + return false; + } + + /** + * @return true si contient au moins un polygone (ligne brisee fermee). + */ + public boolean containsPolygone() { + final GISVisitorChooser chooser = new GISVisitorChooser(); + for (int i = getNumGeometries() - 1; i >= 0; i--) { + ((GISGeometry) getGeometry(i)).accept(chooser); + if (chooser.isPolygone()) { + return true; + } + } + return false; + } + + /** + * @return true si contient au moins un polygone (ligne brisee fermee). + */ + public boolean containsPolyligne() { + final GISVisitorChooser chooser = new GISVisitorChooser(); + for (int i = getNumGeometries() - 1; i >= 0; i--) { + ((GISGeometry) getGeometry(i)).accept(chooser); + if (chooser.isPolyligne()) { + return true; + } + } + return false; + } + + public CoordinateSequence getCoordinateSequence(final int _i) { + return ((LineString) getGeometry(_i)).getCoordinateSequence(); + } + + public Class getDataStoreClass() { + return LineString.class; + } + + public double getDoubleValue(final int _idxAtt, final int _idxGeom) { + if (getAttribute(_idxAtt).isAtomicValue()) { + return CtuluLibArray.getMoyenne(((CtuluCollectionDouble) getModel(_idxAtt).getObjectValueAt(_idxGeom)).getValues()); + } + return ((CtuluCollectionDouble) getModel(_idxAtt)).getValue(_idxGeom); + } + + public void postImport(final int _firstIdx) { + final GISAttributeModel model = getModel(attributeIsZ_); + if (attributeIsZ_ == null || model == null) return; + + if (attributeIsZ_.isAtomicValue()) { + final int nb = getNumGeometries(); + for (int i = (_firstIdx < 0 ? 0 : _firstIdx); i < nb; i++) { + final CoordinateSequence seq = getCoordinateSequence(i); + final GISAttributeModelDoubleArray arr = (GISAttributeModelDoubleArray) model.getObjectValueAt(i); + for (int k = seq.size() - 1; k >= 0; k--) { + arr.set(k, seq.getOrdinate(k, 2)); + } + } + } + // L'attribut est global : On r\xE9cup\xE9re les coordonn\xE9es, qu'on moyenne. + else { + final int nb = getNumGeometries(); + for (int i = (_firstIdx < 0 ? 0 : _firstIdx); i < nb; i++) { + final CoordinateSequence seq = getCoordinateSequence(i); + double moy=0; + for (int k = seq.size() - 1; k >= 0; k--) { + moy+=seq.getOrdinate(k, 2); + } + model.setObject(i,new Double(moy/seq.size()),null); + } + } + } + + public boolean removeAtomicValue(final int _idxGeom, final CtuluListSelectionInterface _sel, final CtuluUI _ui, + final CtuluCommandContainer _cmd) { + if (_sel == null || _sel.isEmpty()) { + return false; + } + boolean r = true; + final LineString line = (LineString) getGeometry(_idxGeom); + int nbPt = line.getCoordinateSequence().size(); + // les nouvelles coordonnees. + final Coordinate[] newCs = new Coordinate[nbPt]; + // cette liste contient les indice a enlever : creee que si necessaire + // si des attribute atomics existent + final TIntArrayList idxToRemove = containsAtomicAttribute() ? new TIntArrayList(nbPt) : null; + // dans le cas polygone le dernier point n'est pas a considerer=premier point + if (line/*.isClosed()*/ instanceof GISPolygone) { + nbPt--; + } + + // compteur tempo + int count = 0; + for (int idxPt = 0; idxPt < nbPt; idxPt++) { + if (_sel.isSelected(idxPt)) { + if (idxToRemove != null) { + idxToRemove.add(idxPt); + } + } else { + newCs[count++] = line.getCoordinateSequence().getCoordinateCopy(idxPt); + } + } + LineString newString = null; + + // Un polygone + if (line/*.isClosed()*/ instanceof GISPolygone) { + if (count < 3) { + r = false; + if (_ui != null) { + _ui.error(null, CtuluLib.getS("La ligne brisee doit contenir {0} points au moins", CtuluLibString.TROIS), + false); + } + + } else { + newCs[count++] = newCs[0]; + final Coordinate[] coord = new Coordinate[count]; + System.arraycopy(newCs, 0, coord, 0, coord.length); + newString = GISGeometryFactory.INSTANCE.createLinearRing(coord); + newString.setUserData(line.getUserData()); + } + } + + // Une polyligne + else if (line instanceof GISPolyligne) { + if (count < 2) { + r = false; + if (_ui != null) { + _ui.error(null, CtuluLib.getS("La ligne brisee doit contenir {0} points au moins", CtuluLibString.DEUX), + false); + } + if (FuLog.isTrace()) { + FuLog.trace("EBLI: polylignes: not enough points"); + // message + } + } else { + final Coordinate[] coord = new Coordinate[count]; + System.arraycopy(newCs, 0, coord, 0, coord.length); + newString = GISGeometryFactory.INSTANCE.createLineString(coord); + newString.setUserData(line.getUserData()); + } + } + + if (r) { + final CtuluCommandComposite cmp = new CtuluCommandComposite(); + super.geometry_.setObject(_idxGeom, newStrin... [truncated message content] |
From: <bma...@us...> - 2008-07-10 07:45:29
|
Revision: 3679 http://fudaa.svn.sourceforge.net/fudaa/?rev=3679&view=rev Author: bmarchan Date: 2008-07-10 00:45:36 -0700 (Thu, 10 Jul 2008) Log Message: ----------- Un peu de doc Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeInterface.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeModel.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModel.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGuiBuilder.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeInterface.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeInterface.java 2008-07-10 07:42:43 UTC (rev 3678) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeInterface.java 2008-07-10 07:45:36 UTC (rev 3679) @@ -1,98 +1,108 @@ -/* - * @creation 7 avr. 2005 - * @modification $Date: 2008-02-06 18:04:21 $ - * @license GNU General Public License 2 - * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne - * @mail de...@fu... - */ -package org.fudaa.ctulu.gis; - -import org.fudaa.ctulu.CtuluVariable; -import org.fudaa.ctulu.gui.CtuluValueEditorI; - -/** - * Une interface pour un attribut qui peut \xEAtre associ\xE9 aux objets GIS. Un attribut peut - * \xEAtre global \xE0 l'objet auquel il est associ\xE9, ou atomique.<p> - * - * Lorsqu'il est atomique, il est associ\xE9 \xE0 chaque sous partie d'un objet. Exemple : les - * points d'une ligne. - * - * @author Fred Deniger - * @version $Id: GISAttributeInterface.java,v 1.9.8.2 2008-02-06 18:04:21 bmarchan Exp $ - */ -public interface GISAttributeInterface extends CtuluVariable { - - boolean isEditable(); - - boolean isUserVisible(); - - boolean isSameContent(final GISAttributeInterface _att); - - - /** - * @param _nbValues - * @return un modele a utilise pour des donn\xE9es sur les vertex - */ - GISAttributeModelListener createAtomicModel(Object[] _initValues, int _nbValues); - - /** - * Permet de creer facilement les donn\xE9es correspondant a l'att. - * - * @param _initValues la ou les valeurs initiales, peut etre null. Si c'est un tableau et l'attribute est global, la - * moyenne sera prise. Inversement, l'objet sera duplique si un tableau doit etre construit. - * @param _nbPt le nombre de points pour l'objet geometriques correspondant - * @return l'objet correspondant. Si atomique, un {@link GISAttributeModelListener} est renvoy\xE9. Sinon, - * retourne un objet de classe {@link #getDataClass()} - */ - Object createDataForGeom(Object _initValues, int _nbPt); - - /** - * @param _defaultCap la capacit\xE9 par defaut: optimisation. - * @return le modele a utiliser pour une liste variable en taille. - */ - GISAttributeModelListener createListModel(int _defaultCap); - - /** - * @return la valeur par defaut - */ - Object getDefaultValue(); - - boolean setName(String _s); - - /** - * Retourne les donn\xE9es utilisateur, autres que les valeurs d'attributs. - * @return donnee utilisateur - */ - Object getUserData(); - - /** - * Affecte des donn\xE9es utilisateur, autres que les valeurs d'attributs. - * @param _userData donnee utilisateur - */ - void setUserData(Object _userData); - - /** - * Par exemple renvoie double. - * - * @return la classe primitive - */ - Class getDataClass(); - - /** - * @return l'\xE9diteur associe - */ - CtuluValueEditorI getEditor(); - - /** - * @return le nombre de chiffres apr\xE8s la virgule - */ - int getPrecision(); - - /** - * Retourne l'atomicit\xE9 de l'attribut (a utiliser pour les polygones,polylignes). - * - * @return si true, cet attribut signifie que les valeurs sont associees a chaque point - */ - boolean isAtomicValue(); - -} +/* + * @creation 7 avr. 2005 + * @modification $Date: 2008-02-06 18:04:21 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.ctulu.gis; + +import org.fudaa.ctulu.CtuluVariable; +import org.fudaa.ctulu.gui.CtuluValueEditorI; + +/** + * Une interface pour un attribut qui peut \xEAtre associ\xE9 aux objets GIS. Un attribut peut + * \xEAtre global \xE0 l'objet auquel il est associ\xE9, ou atomique.<p> + * + * Lorsqu'il est atomique, il est associ\xE9 \xE0 chaque sous partie d'un objet. Exemple : les + * points d'une ligne. + * + * @author Fred Deniger + * @version $Id: GISAttributeInterface.java,v 1.9.8.2 2008-02-06 18:04:21 bmarchan Exp $ + */ +public interface GISAttributeInterface extends CtuluVariable { + + /** + * D\xE9termine si l'attribut est \xE9ditable dans les \xE9diteurs.<p> + * FIXME BM: Actuellement, un attribut non \xE9ditable est invisible dans les \xE9diteurs. + * @return Si true : Editable + */ + boolean isEditable(); + + /** + * D\xE9termine si l'attribut est visible de l'utilisateur. Si c'est le cas, il est \xE9galement non \xE9ditable.<p> + * FIXME BM: Lorsque l'attribut est \xE9ditable et invisible, on peut tout de m\xEAme l'\xE9diter. + * @return Si true : Visible + */ + boolean isUserVisible(); + + boolean isSameContent(final GISAttributeInterface _att); + + + /** + * @param _nbValues + * @return un modele a utilise pour des donn\xE9es sur les vertex + */ + GISAttributeModelListener createAtomicModel(Object[] _initValues, int _nbValues); + + /** + * Permet de creer facilement les donn\xE9es correspondant a l'att. + * + * @param _initValues la ou les valeurs initiales, peut etre null. Si c'est un tableau et l'attribute est global, la + * moyenne sera prise. Inversement, l'objet sera duplique si un tableau doit etre construit. + * @param _nbPt le nombre de points pour l'objet geometriques correspondant + * @return l'objet correspondant. Si atomique, un {@link GISAttributeModelListener} est renvoy\xE9. Sinon, + * retourne un objet de classe {@link #getDataClass()} + */ + Object createDataForGeom(Object _initValues, int _nbPt); + + /** + * @param _defaultCap la capacit\xE9 par defaut: optimisation. + * @return le modele a utiliser pour une liste variable en taille. + */ + GISAttributeModelListener createListModel(int _defaultCap); + + /** + * @return la valeur par defaut + */ + Object getDefaultValue(); + + boolean setName(String _s); + + /** + * Retourne les donn\xE9es utilisateur, autres que les valeurs d'attributs. + * @return donnee utilisateur + */ + Object getUserData(); + + /** + * Affecte des donn\xE9es utilisateur, autres que les valeurs d'attributs. + * @param _userData donnee utilisateur + */ + void setUserData(Object _userData); + + /** + * Par exemple renvoie double. + * + * @return la classe primitive + */ + Class getDataClass(); + + /** + * @return l'\xE9diteur associe + */ + CtuluValueEditorI getEditor(); + + /** + * @return le nombre de chiffres apr\xE8s la virgule + */ + int getPrecision(); + + /** + * Retourne l'atomicit\xE9 de l'attribut (a utiliser pour les polygones,polylignes). + * + * @return si true, cet attribut signifie que les valeurs sont associees a chaque point + */ + boolean isAtomicValue(); + +} Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeModel.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeModel.java 2008-07-10 07:42:43 UTC (rev 3678) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeModel.java 2008-07-10 07:45:36 UTC (rev 3679) @@ -12,7 +12,7 @@ import org.fudaa.ctulu.collection.CtuluCollection; /** - * Un mod\xE8le associant une valeur \xE0 chaque objet d'une collection GIS {@link GISZoneCollection} pour + * Un mod\xE8le associant une valeur \xE0 chaque g\xE9ometrie d'une collection GIS {@link GISZoneCollection} pour * un attribut particulier.<p> * * Une collection GIS peut comporter plusieurs de ces mod\xE8les. Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModel.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModel.java 2008-07-10 07:42:43 UTC (rev 3678) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModel.java 2008-07-10 07:45:36 UTC (rev 3679) @@ -1,84 +1,84 @@ -/* - * @creation 20 mai 2005 - * @modification $Date: 2006-12-05 10:12:51 $ - * @license GNU General Public License 2 - * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne - * @mail de...@fu... - */ -package org.fudaa.ctulu.gis; - -import com.vividsolutions.jts.geom.Envelope; -import com.vividsolutions.jts.geom.Geometry; - -import org.fudaa.ctulu.ProgressionInterface; - -/** - * Un mod\xE8le associant des valeurs d'attributs \xE0 un ensemble de g\xE9om\xE9tries. - * Dans ce mod\xE8le, les g\xE9om\xE9tries ont toutes le m\xEAme nombre d'attributs du m\xEAme type dans le m\xEAme ordre. - * Les g\xE9om\xE9tries peuvent \xEAtre ou non de m\xEAme type. - * - * @author Fred Deniger - * @version $Id: GISDataModel.java,v 1.6 2006-12-05 10:12:51 deniger Exp $ - */ -public interface GISDataModel { - - /** - * @return le nombre de geometries definies dans ce source - */ - int getNumGeometries(); - - /** - * Cette m\xE9thode est utile lorsqu'on charge des donn\xE9es issues de sig. - * Elle permet de charger en memoire les donn\xE9es des attributs <code>_att</code> - * - * @param _att les attributs a charger - */ - void preload(GISAttributeInterface[] _att, ProgressionInterface _prog); - - /** - * Permet de recuperer le polygone recouvrant si calcule (null sinon). - * - * @return le polygone recouvrant. Peut etre null si le calcul n'est pas immediat - */ - Envelope getEnvelopeInternal(); - - /** - * @return le nombre d'attributs definis. - */ - int getNbAttributes(); - - /** - * @param _idxGeom l'indice de la geometrie [0,getNbGeometries[ - * @return la geometrie _i - */ - Geometry getGeometry(int _idxGeom); - - /** - * @param _idxAtt l'indice de l'attribute [0,getNbAttributes[ - * @return la description de l'attribut _i - */ - GISAttributeInterface getAttribute(final int _idxAtt); - - /** - * @param _att l'attribut a tester - * @return l'indice de l'attribut. - */ - int getIndiceOf(GISAttributeInterface _att); - - /** - * @param _idxAtt l'indice de l'attribute - * @param _idxGeom l'indice de la geometrie - * @return la valeur demande ou null si mauvais indices - */ - Object getValue(final int _idxAtt, int _idxGeom); - - /** - * Dangereux: a utiliser que si on est sur que les valeurs sont des double. - * - * @param _idxAtt l'indice de l'attributs - * @param _idxGeom l'indice de la geom - * @return la valeur correspondante. - */ - double getDoubleValue(final int _idxAtt, int _idxGeom); - -} +/* + * @creation 20 mai 2005 + * @modification $Date: 2006-12-05 10:12:51 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.ctulu.gis; + +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Geometry; + +import org.fudaa.ctulu.ProgressionInterface; + +/** + * Un mod\xE8le associant des valeurs d'attributs \xE0 un ensemble de g\xE9om\xE9tries. + * Dans ce mod\xE8le, les g\xE9om\xE9tries ont toutes le m\xEAme nombre d'attributs du m\xEAme type dans le m\xEAme ordre. + * Les g\xE9om\xE9tries peuvent \xEAtre ou non de m\xEAme type. + * + * @author Fred Deniger + * @version $Id: GISDataModel.java,v 1.6 2006-12-05 10:12:51 deniger Exp $ + */ +public interface GISDataModel { + + /** + * @return le nombre de geometries definies dans ce source + */ + int getNumGeometries(); + + /** + * Cette m\xE9thode est utile lorsqu'on charge des donn\xE9es issues de sig. + * Elle permet de charger en memoire les donn\xE9es des attributs <code>_att</code> + * + * @param _att les attributs a charger + */ + void preload(GISAttributeInterface[] _att, ProgressionInterface _prog); + + /** + * Permet de recuperer le polygone recouvrant si calcule (null sinon). + * + * @return le polygone recouvrant. Peut etre null si le calcul n'est pas immediat + */ + Envelope getEnvelopeInternal(); + + /** + * @return le nombre d'attributs definis. + */ + int getNbAttributes(); + + /** + * @param _idxGeom l'indice de la geometrie [0,getNbGeometries[ + * @return la geometrie _i + */ + Geometry getGeometry(int _idxGeom); + + /** + * @param _idxAtt l'indice de l'attribute [0,getNbAttributes[ + * @return l'attribut ou <code>null</code> si non trouv\xE9. + */ + GISAttributeInterface getAttribute(final int _idxAtt); + + /** + * @param _att l'attribut a tester + * @return l'indice de l'attribut. -1 si l'attribut est introuvable. + */ + int getIndiceOf(GISAttributeInterface _att); + + /** + * @param _idxAtt l'indice de l'attribute + * @param _idxGeom l'indice de la geometrie + * @return la valeur demande ou null si mauvais indices + */ + Object getValue(final int _idxAtt, int _idxGeom); + + /** + * Dangereux: a utiliser que si on est sur que les valeurs sont des double. + * + * @param _idxAtt l'indice de l'attributs + * @param _idxGeom l'indice de la geom + * @return la valeur correspondante. + */ + double getDoubleValue(final int _idxAtt, int _idxGeom); + +} Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGuiBuilder.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGuiBuilder.java 2008-07-10 07:42:43 UTC (rev 3678) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGuiBuilder.java 2008-07-10 07:45:36 UTC (rev 3679) @@ -17,12 +17,20 @@ import org.fudaa.ctulu.gui.CtuluValuesEditorPanel; /** + * Un builder de panneau d'\xE9ditions d'objets GIS. * @author fred deniger * @version $Id: GISGuiBuilder.java,v 1.5 2007-01-10 08:58:47 deniger Exp $ */ public final class GISGuiBuilder { private GISGuiBuilder() {} + /** + * Construction d'un panneau d'\xE9dition de plusieurs points d'une m\xEAme collection. + * @param _pt La collection de points + * @param _idx Les index des points de la collection concern\xE9s. + * @param _cmd Le manager de commandes. + * @return Un panneau d'\xE9dition. + */ public static CtuluValuesEditorPanel buildFor(final GISZoneCollectionPoint _pt, final int[] _idx, final CtuluCommandContainer _cmd) { final List names = new ArrayList(_pt.getNbAttributes() + 2); final List editor = new ArrayList(names.size()); @@ -34,6 +42,7 @@ model.add(_pt.createEditForX()); model.add(_pt.createEditForY()); for (int i = 0; i < _pt.getNbAttributes(); i++) { + // FIXME BM: G\xE9rer attribut non visible. if (_pt.getAttribute(i).isEditable()) { names.add(_pt.getAttribute(i).getName()); editor.add(_pt.getAttribute(i).getEditor()); @@ -45,6 +54,13 @@ .toArray(new CtuluCollection[model.size()]), _cmd); } + /** + * Construction d'un panneau d'\xE9dition de plusieurs g\xE9om\xE9tries d'une m\xEAme collection. + * @param _pt La collection + * @param _idx Les index des g\xE9om\xE9tries de la collection concern\xE9s. + * @param _cmd Le manager de commandes. + * @return Un panneau d'\xE9dition. + */ public static CtuluValuesEditorPanel buildForGlobAtt(final GISZoneCollection _pt, final int[] _idx, final CtuluCommandContainer _cmd) { final int nbAtt = _pt.getNbAttributes(); final List names = new ArrayList(nbAtt); @@ -52,6 +68,7 @@ final List model = new ArrayList(nbAtt); for (int i = 0; i < nbAtt; i++) { final GISAttributeInterface att = _pt.getAttribute(i); + // FIXME BM: G\xE9rer attribut non visible. if (!att.isAtomicValue() && att.isEditable()) { names.add(att.getName()); editor.add(att.getEditor()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-07-10 07:42:35
|
Revision: 3678 http://fudaa.svn.sourceforge.net/fudaa/?rev=3678&view=rev Author: bmarchan Date: 2008-07-10 00:42:43 -0700 (Thu, 10 Jul 2008) Log Message: ----------- Mise en place de l'exportation. Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java Added Paths: ----------- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java 2008-07-09 16:21:37 UTC (rev 3677) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java 2008-07-10 07:42:43 UTC (rev 3678) @@ -7,21 +7,50 @@ */ package org.fudaa.fudaa.modeleur; +import java.io.File; +import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.swing.filechooser.FileFilter; + import org.fudaa.ctulu.CtuluCommandManager; +import org.fudaa.ctulu.CtuluIOOperationSynthese; +import org.fudaa.ctulu.CtuluRunnable; +import org.fudaa.ctulu.CtuluTaskDelegate; +import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ctulu.gis.factory.GISExportDataStoreFactory; +import org.fudaa.ctulu.gui.CtuluDialogPanel; +import org.fudaa.ctulu.gui.CtuluFileChooser; +import org.fudaa.ctulu.gui.CtuluFileChooserTestWritable; import org.fudaa.ctulu.gui.CtuluLibSwing; +import org.fudaa.dodico.rubar.io.RubarStCnFileFormat; +import org.fudaa.dodico.telemac.io.SinusxFileFormat; +import org.fudaa.ebli.calque.BCalque; +import org.fudaa.ebli.calque.action.SceneSplitAction; import org.fudaa.ebli.calque.edition.ZCalqueEditable; import org.fudaa.ebli.commun.EbliActionAbstract; import org.fudaa.ebli.commun.EbliActionInterface; +import org.fudaa.fudaa.commun.FudaaLib; +import org.fudaa.fudaa.commun.impl.FudaaGuiLib; +import org.fudaa.fudaa.commun.save.FudaaSaveLib; +import org.fudaa.fudaa.commun.save.FudaaSaveZipLoader; import org.fudaa.fudaa.modeleur.action.SceneDecimationAction; import org.fudaa.fudaa.modeleur.action.SceneInterpolationAction; import org.fudaa.fudaa.modeleur.action.SceneMoveInLayerAction; import org.fudaa.fudaa.modeleur.action.SceneRefinementAction; import org.fudaa.fudaa.sig.layer.FSigEditor; +import org.fudaa.fudaa.sig.layer.FSigLayerExporter; +import org.fudaa.fudaa.sig.layer.FSigLayerFilter; import org.fudaa.fudaa.sig.layer.FSigVisuPanel; +import org.geotools.data.FileDataStoreFactorySpi; +import com.memoire.bu.BuFileFilter; import com.memoire.bu.BuWizardDialog; +import com.memoire.fu.FuLog; /** * Un manager pour l'\xE9dition des calques SIG. @@ -29,27 +58,31 @@ * @version $Id: MdlEditionManager.java,v 1.1.2.8 2008/05/13 12:10:06 bmarchan Exp $ */ public class MdlEditionManager extends FSigEditor { - + /** * Constructeur minium. * @param _panel * @param _cmd */ public MdlEditionManager(MdlVisuPanel _panel, CtuluCommandManager _cmd) { - super(_panel, _cmd); - setSceneEditor(new MdlSceneEditor(_panel,getSceneEditor().getScene())); - installActions(); + super(_panel, new MdlSceneEditor(_panel,_panel.getScene()), _cmd); } /** * Installation des actions propres au modeleur. */ - private void installActions() { + protected void installSceneActions() { + super.installSceneActions(); + ArrayList<EbliActionInterface> acts=new ArrayList<EbliActionInterface>(); - acts.add(new SceneInterpolationAction((MdlSceneEditor)getSceneEditor())); - acts.add(new SceneMoveInLayerAction((MdlSceneEditor)getSceneEditor())); - acts.add(new SceneDecimationAction((MdlSceneEditor)getSceneEditor())); - acts.add(new SceneRefinementAction((MdlSceneEditor)getSceneEditor())); + EbliActionInterface[] actSuper=sceneEditor_.getScene().getActions(); + if (actSuper!=null) acts.addAll(Arrays.asList(actSuper)); + + acts.add(new SceneSplitAction(sceneEditor_)); + acts.add(new SceneInterpolationAction((MdlSceneEditor)sceneEditor_)); + acts.add(new SceneMoveInLayerAction((MdlSceneEditor)sceneEditor_)); + acts.add(new SceneDecimationAction((MdlSceneEditor)sceneEditor_)); + acts.add(new SceneRefinementAction((MdlSceneEditor)sceneEditor_)); getSceneEditor().getScene().setActions(acts.toArray(new EbliActionAbstract[0])); } @@ -68,4 +101,45 @@ dialog.setLocationRelativeTo(getPanel()); dialog.setVisible(true); } + + public void exportSelectedLayer() { + MdlProjectExportPanel pn=new MdlProjectExportPanel(getUi()); + if (CtuluDialogPanel.isCancelResponse(pn.afficheModale(getFrame(), FudaaLib.getS("Exporter les donn\xE9es de la fen\xEAtre active")))) return; + + final FSigLayerFilter filter = new FSigLayerFilter(); + if (pn.isAllLayers()) { + getPanel().getDonneesCalque().apply(filter); + } + else if (pn.isSelectedLayers()) { + final BCalque[] parent = super.getPanel().getArbreCalqueModel().getSelection(); + if (parent!=null) { + for (int i = 0; i < parent.length; i++) { + parent[i].apply(filter); + } + } + } + else { + filter.setTreatmentOnlyOnVisible(true); + getPanel().getDonneesCalque().apply(filter); + } + + if (filter.isEmpty()) { + return; + } + + final File f=pn.getFile(); + final FSigLayerExporter exporter=pn.getSelectedExporter(); + new CtuluRunnable(FudaaLib.getS("Export de donn\xE9es"), getUi()) { + + public boolean run(ProgressionInterface _proj) { + final CtuluIOOperationSynthese op = filter.exportTo(exporter, getUi(), f, _proj); + if (op != null) { + getUi().manageErrorOperationAndIsFatal(op); + } + return true; + } + + }.run(); + + } } Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java 2008-07-09 16:21:37 UTC (rev 3677) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlImplementation.java 2008-07-10 07:42:43 UTC (rev 3678) @@ -20,6 +20,7 @@ import javax.swing.JOptionPane; import javax.swing.filechooser.FileFilter; +import org.fudaa.ctulu.CtuluExportDataInterface; import org.fudaa.ctulu.CtuluLibFile; import org.fudaa.ctulu.CtuluRunnable; import org.fudaa.ctulu.CtuluTaskDelegate; @@ -56,6 +57,7 @@ import com.memoire.bu.BuMainPanel; import com.memoire.bu.BuMenu; import com.memoire.bu.BuMenuBar; +import com.memoire.bu.BuMenuItem; import com.memoire.bu.BuMenuRecentFiles; import com.memoire.bu.BuPreferences; import com.memoire.bu.BuRegistry; @@ -157,6 +159,7 @@ setEnabledForAction("ENREGISTRERSOUS", bprjOpen); setEnabledForAction("FERMER", bprjOpen); setEnabledForAction("IMPORT_PROJECT", bprjOpen); + setEnabledForAction(CtuluExportDataInterface.EXPORT_CMD, bprjOpen); } void createNewInternalFrame(/*boolean _add*/) { @@ -416,7 +419,7 @@ loader = pn.getLoader(); final FudaaSaveZipLoader finalLoader = loader; final CtuluTaskDelegate createTask = createTask("Import d'un projet"); -// FIXME B.M. : Suppression de la tache dans un thread diff\xE9rent, car l'appli se bloque +// FIXME BM: Suppression de la tache dans un thread diff\xE9rent, car l'appli se bloque // Probable pb de deadlock. // createTask.start(new Runnable() { // public void run() { @@ -574,6 +577,7 @@ setEnabledForAction("CREER", true); setEnabledForAction("OUVRIR", true); setEnabledForAction("IMPORTER", true); + setEnabledForAction("EXPORTER", true); BuMenuRecentFiles mr= (BuMenuRecentFiles)mb.getMenu("REOUVRIR"); if (mr != null) { @@ -598,6 +602,8 @@ // les menus exporter et importer sont construit dynamiquement // b.getMenu(getExporterCmd()).addItemListener(this); BuMenu mmImport = (BuMenu) mb.getMenu("IMPORTER"); + BuMenu mnExport = (BuMenu) mb.getMenu("EXPORTER"); + // menu.addMenuItem(FSigImageImportAction.getCommonTitle(), "IMPORT_IMAGE", FSigImageImportAction.getCommonImage(), // this).setEnabled(false); mmImport.addMenuItem(FudaaLib.getS("Importer un projet"), "IMPORT_PROJECT", BuResource.BU.getMenuIcon("importer"), this) @@ -605,6 +611,11 @@ // menu.addItemListener(this); setEnabledForAction("IMPORT_PROJECT", true); mmImport.setEnabled(true); + + BuMenuItem itExportData = new BuMenuItem(); + super.initExportDataButton(itExportData); + mnExport.add(itExportData); + /* setEnabledForAction("RANGERICONES", true); if (!isSupervisor()) { final JComponent cp = getMainPanel().getMiddleComponent(); Added: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java (rev 0) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java 2008-07-10 07:42:43 UTC (rev 3678) @@ -0,0 +1,322 @@ +/* + * @creation 8 sept. 06 + * @modification $Date: 2008/05/13 12:10:21 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.fudaa.modeleur; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; +import javax.swing.JFileChooser; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTree; +import javax.swing.UIManager; +import javax.swing.border.Border; +import javax.swing.event.CaretEvent; +import javax.swing.event.CaretListener; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.filechooser.FileFilter; +import javax.swing.tree.TreeCellRenderer; +import javax.swing.tree.TreePath; + +import com.memoire.bu.BuButton; +import com.memoire.bu.BuCheckBox; +import com.memoire.bu.BuFileFilter; +import com.memoire.bu.BuHorizontalLayout; +import com.memoire.bu.BuLabel; +import com.memoire.bu.BuRadioButton; +import com.memoire.bu.BuResource; +import com.memoire.bu.BuVerticalLayout; +import com.memoire.fu.FuLog; + +import org.fudaa.ctulu.CtuluArkLoader; +import org.fudaa.ctulu.CtuluLib; +import org.fudaa.ctulu.CtuluLibString; +import org.fudaa.ctulu.CtuluUI; +import org.fudaa.ctulu.gis.factory.GISExportDataStoreFactory; +import org.fudaa.ctulu.gui.CtuluCellRenderer; +import org.fudaa.ctulu.gui.CtuluDialogPanel; +import org.fudaa.ctulu.gui.CtuluFileChooser; +import org.fudaa.ctulu.gui.CtuluFileChooserPanel; +import org.fudaa.dodico.rubar.io.RubarStCnFileFormat; +import org.fudaa.dodico.telemac.io.SinusxFileFormat; + +import org.fudaa.ebli.calque.BCalquePersistenceGroupe; + +import org.fudaa.fudaa.commun.FudaaLib; +import org.fudaa.fudaa.commun.impl.FudaaGuiLib; +import org.fudaa.fudaa.commun.save.FudaaSaveLib; +import org.fudaa.fudaa.commun.save.FudaaSaveZipLoader; +import org.fudaa.fudaa.modeleur.MdlImplementation.MdlFileFilter; +import org.fudaa.fudaa.modeleur.MdlProjectImportTreeModel.LayerNode; +import org.fudaa.fudaa.sig.FSigLib; +import org.fudaa.fudaa.sig.layer.FSigLayerExporter; +import org.fudaa.fudaa.tr.common.TrProjectPersistence; +import org.fudaa.fudaa.tr.common.TrResource; +import org.geotools.data.FileDataStoreFactorySpi; + +/** + * Un panneau pour exporter les donn\xE9es 2D. + * @author Bertrand Marchand + * @version $Id: MdlProjectImportPanel.java,v 1.1.2.1 2008/05/13 12:10:21 bmarchan Exp $ + */ +public class MdlProjectExportPanel extends CtuluDialogPanel implements DocumentListener { + + +/* public static class CellRenderer extends JLabel implements TreeCellRenderer { + final Color selectedBackground_ = UIManager.getColor("Tree.selectionBackground"); + final Color selectedForground_ = UIManager.getColor("Tree.selectionForeground"); + final Border focusBorderColor_ = BorderFactory.createLineBorder(UIManager.getColor("Tree.selectionBorderColor"), 1); + + public CellRenderer() { + this.setOpaque(true); +// setPreferredSize(new Dimension(120, 25)); + } + + protected boolean isSelectable(final Object _value, final boolean _leaf) { + return true; + } + + public Component getTreeCellRendererComponent(final JTree _tree, final Object _value, final boolean _selected, + final boolean _expanded, final boolean _leaf, final int _row, final boolean _hasFocus) { + this.setFont(_tree.getFont()); + setIcon(BuResource.BU.getIcon("calque")); + setText(_value.toString()); + final boolean selectable = isSelectable(_value, _leaf); + if (_selected && selectable) { + setBackground(selectedBackground_); + setForeground(selectedForground_); + } else { + setBackground(_tree.getBackground()); + setForeground(_tree.getForeground()); + } + if (selectable) { + setToolTipText(getText()); + } else { + setToolTipText(getText() + ": " + CtuluLib.getS("Non s\xE9lectionnable")); + } + setBorder((selectable && _hasFocus) ? focusBorderColor_ : CtuluCellRenderer.BORDER_NO_FOCUS); + setEnabled(_tree.isEnabled()); + return this; + } + } +*/ + CtuluFileChooserPanel pn_; + String filename_=""; + BuRadioButton rbAllLayers_; + BuRadioButton rbSelectedLayers_; + BuRadioButton rbVisibleLayers_; + BuFileFilter[] filters_; + CtuluUI ui_; + BuFileFilter selectedFilter_=null; + Map filter2Exporter_; + +// JTree trLayers_; +// FudaaSaveZipLoader loader_=null; + + public MdlProjectExportPanel(CtuluUI _ui) { + ui_=_ui; +// ActionListener rbListener=new ActionListener() { +// public void actionPerformed(ActionEvent _evt) { +// if (rbSelectedLayers_.isSelected()) { +// if (isFileOK()) loadFile(); +// } +// trLayers_.setEnabled(rbSelectedLayers_.isSelected()); +// trLayers_.setModel(new MdlProjectImportTreeModel(loader_)); +// } +// }; + + filters_=buildFilter2Export(); + + setLayout(new BuVerticalLayout(5,true,true)); + final String title = FSigLib.getS("Fichier d'exportation"); + pn_ = new CtuluFileChooserPanel(title); + pn_.setAllFileFilter(false); + pn_.setFileSelectMode(JFileChooser.FILES_ONLY); + pn_.setWriteMode(true); + pn_.setFilter(filters_); + + BuLabel lbFile=new BuLabel(title); + JPanel pnFile=new JPanel(); + pnFile.setLayout(new BorderLayout(3,3)); + pnFile.add(lbFile,BorderLayout.WEST); + pnFile.add(pn_, BorderLayout.CENTER); + add(pnFile); + + rbAllLayers_=new BuRadioButton("Exporter tous les calques"); +// rbAllLayers_.addActionListener(rbListener); + add(rbAllLayers_); + + rbSelectedLayers_=new BuRadioButton("Exporter depuis les calques s\xE9lectionn\xE9s"); +// rbSelectedLayers_.addActionListener(rbListener); + add(rbSelectedLayers_); + + rbVisibleLayers_=new BuRadioButton("Exporter les seuls calques visibles"); +// rbSelectedLayers_.addActionListener(rbListener); + add(rbVisibleLayers_); +// + ButtonGroup bgLayers=new ButtonGroup(); + bgLayers.add(rbAllLayers_); + bgLayers.add(rbSelectedLayers_); + bgLayers.add(rbVisibleLayers_); +// +// trLayers_=new JTree(); +// trLayers_.setShowsRootHandles(true); +// trLayers_.setRootVisible(false); +// trLayers_.setCellRenderer(new CellRenderer()); +// JScrollPane sp=new JScrollPane(trLayers_); +// sp.setPreferredSize(new Dimension(300,200)); +// add(sp); +// + rbAllLayers_.doClick(); +// pn_.getTf().getDocument().addDocumentListener(this); +// + } + + private BuFileFilter[] buildFilter2Export() { + final BuFileFilter sx = SinusxFileFormat.getInstance().createFileFilter(); + final BuFileFilter st = RubarStCnFileFormat.createStFilter(); + filter2Exporter_ = new HashMap(5);// pour l'instant ..... + + filter2Exporter_.put(sx, new FSigLayerExporter.ToSinusX()); + filter2Exporter_.put(st, new FSigLayerExporter.ToRubar()); +// final Map dataStores = GISExportDataStoreFactory.buildFileFilterMap(false); +// for (final Iterator it = dataStores.entrySet().iterator(); it.hasNext();) { +// final Map.Entry e = (Map.Entry) it.next(); +// filter2Exporter_.put(e.getKey(), new FSigLayerExporter.DataStore((FileDataStoreFactorySpi) e.getValue())); +// } + + filters_ = new BuFileFilter[filter2Exporter_.size()]; + filter2Exporter_.keySet().toArray(filters_); + return filters_; + } + + public boolean valide() { + if (!isFileOK()) return false; +// +// // Mise a jour des \xE9tats des calques. Par defaut, les calques sopnt r\xE9cup\xE9r\xE9s. +// if (rbSelectedLayers_.isSelected()) { +// List<LayerNode> nds=getChildrenLeafs((LayerNode)trLayers_.getModel().getRoot()); +// +// TreePath[] paths=trLayers_.getSelectionPaths(); +// if (paths!=null) { +// for (TreePath path : paths) { +// nds.remove((LayerNode)path.getLastPathComponent()); +// } +// } +// +// for (LayerNode nd : nds) { +// loader_.setOption(CtuluArkLoader.OPTION_LAYER_IGNORE+nd.name_,CtuluLibString.toString(true)); +// } +// } + return true; + } + +// private List<LayerNode> getChildrenLeafs(LayerNode _nd) { +// List<LayerNode> r=new ArrayList<LayerNode>(); +// int nb=_nd.getChildCount(); +// for (int i=0; i<nb; i++) { +// LayerNode nd=(LayerNode)_nd.getChildAt(i); +// if (nd.isLeaf()) { +// r.add(nd); +// } +// else { +// List<LayerNode> ls=getChildrenLeafs(nd); +// r.addAll(ls); +// } +// } +// return r; +// } + + private boolean isFileOK() { + final File f = pn_.getFile(); + if (f == null) { + setErrorText(CtuluLib.getS("Donnez un nom au fichier d'exportation")); + return false; + } + if (f.exists() && !ui_.question(CtuluLib.getS("Attention"), CtuluLib.getS("Le fichier {0} existe d\xE9j\xE0. Voulez-vous l'\xE9craser?", + pn_.getFile().toString()))) { + return false; + } + boolean bextok=false; + for (int i=0; i<filters_.length; i++) { + if (filters_[i].accept(f)) { + selectedFilter_=filters_[i]; + bextok=true; + } + } + if (!bextok) { + setErrorText(TrResource.getS("Le fichier choisi a une extension inconnue")); + return false; + } + setErrorText(null); + return true; + } + + public File getFile() { + return pn_.getFile(); + } + + public FSigLayerExporter getSelectedExporter() { + return (FSigLayerExporter)filter2Exporter_.get(selectedFilter_); + } + + public boolean isAllLayers() { + return rbAllLayers_.isSelected(); + } + + public boolean isSelectedLayers() { + return rbSelectedLayers_.isSelected(); + } + + public boolean isVisibleLayers() { + return rbVisibleLayers_.isSelected(); + } +// private FudaaSaveZipLoader loadFile() { +// if (loader_!=null) return loader_; +// +// try { +// loader_=new FudaaSaveZipLoader(pn_.getFile()); +// } +// catch (IOException _exc) { +// setErrorText(TrResource.getS("Le fichier n'est pas accessible")); +// } +// return loader_; +// } + + public void changedUpdate(final DocumentEvent _e) { +// valide(); + } + + public void insertUpdate(final DocumentEvent _e) { +// valide(); + } + + public void removeUpdate(final DocumentEvent _e) { +// valide(); + } + +// public FudaaSaveZipLoader getLoader() throws IOException { +// return loader_; +// } +} Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java ___________________________________________________________________ Name: svn:eol-style + native Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java 2008-07-09 16:21:37 UTC (rev 3677) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java 2008-07-10 07:42:43 UTC (rev 3678) @@ -18,26 +18,35 @@ import com.memoire.fu.FuEmptyArrays; import com.memoire.fu.FuLog; +import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.CtuluIOOperationSynthese; +import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluLibFile; import org.fudaa.ctulu.CtuluLibString; import org.fudaa.ctulu.CtuluUI; import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ctulu.fileformat.FileFormatUnique; +import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ctulu.gis.GISAttributeInterface; import org.fudaa.ctulu.gis.GISDataModel; +import org.fudaa.ctulu.gis.GISDataModelFilterAdapter; import org.fudaa.ctulu.gis.GISDataModelMultiAdapter; -import org.fudaa.ctulu.gis.GISDataModelZoneAdapter; +import org.fudaa.ctulu.gis.GISDataModelPointMultiPointAdapter; import org.fudaa.ctulu.gis.GISZone; import org.fudaa.ctulu.gis.GISZoneCollection; import org.fudaa.ctulu.gis.factory.GISExportDataStoreFactory; import org.fudaa.ctulu.gis.gml.GISGMLZoneExporter; import org.fudaa.ctulu.gis.mif.MIFDataStoreFactory; +import org.fudaa.dodico.rubar.io.RubarSEMFileFormat; +import org.fudaa.dodico.rubar.io.RubarSEMWriterGISAdapter; import org.fudaa.dodico.rubar.io.RubarStCnFileFormat; import org.fudaa.dodico.telemac.io.SinusxFileFormat; import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; import org.fudaa.fudaa.commun.FudaaLib; +import org.fudaa.fudaa.sig.FSigResource; /** * @author fred deniger @@ -68,6 +77,7 @@ int idx = 0; final List total = new ArrayList(_filter.pointCq_); total.addAll(_filter.polyCq_); + total.addAll(_filter.mlptsCq_); final int nb = total.size(); for (int i = 0; i < nb; i++) { final ZCalqueAffichageDonneesInterface oi = (ZCalqueAffichageDonneesInterface) total.get(i); @@ -127,17 +137,139 @@ } } - public static class ToSt extends FSigLayerExporter { + /** + * Export des g\xE9om\xE9tries vers les fichiers Rubar (ST, SEM, CN). + * @author Bertrand Marchand + * @version $Id:$ + */ + public static class ToRubar extends FSigLayerExporter { CtuluIOOperationSynthese exportTo(final FSigLayerFilter _filter, final CtuluUI _impl, final File _f, final ProgressionInterface _prog) { - File f = CtuluLibFile.appendExtensionIfNeeded(_f, "st"); - final int nb = _filter.polyCq_.size(); - final GISDataModel[] models = new GISDataModel[nb]; + CtuluIOOperationSynthese synt=new CtuluIOOperationSynthese(); + File f = CtuluLibFile.getSansExtension(_f); + CtuluAnalyze ana=new CtuluAnalyze(); + synt.setAnalyze(ana); + + // Regroupement des mod\xE8les suivant leur nature. + List<GISDataModel> mdlprofs=new ArrayList<GISDataModel>(); + List<GISDataModel> mdlniv=new ArrayList<GISDataModel>(); + List<GISDataModel> mdlligdir=new ArrayList<GISDataModel>(); + List<GISDataModel> mdlsemis=new ArrayList<GISDataModel>(); + List<GISDataModel> mdlautres=new ArrayList<GISDataModel>(); + + for (int i=0; i<_filter.pointCq_.size(); i++) { + mdlsemis.add(new GISDataModelPointMultiPointAdapter( + GISDataModelFilterAdapter.buildAdapter(_filter.getCollect(_filter.mlptsCq_.get(i)), null))); + } + for (int i = 0; i < _filter.mlptsCq_.size(); i++) { + mdlsemis.add(GISDataModelFilterAdapter.buildAdapter(_filter.getCollect(_filter.mlptsCq_.get(i)), null)); + } + for (int i=0; i<_filter.polyCq_.size(); i++) { + GISZoneCollection col=_filter.getCollect(_filter.polyCq_.get(i)); + if (col.getNbGeometries()==0) continue; + int idxAtt=col.getIndiceOf(GISAttributeConstants.NATURE); + if (idxAtt==-1) { + mdlautres.add(GISDataModelFilterAdapter.buildAdapter(_filter.getCollect(_filter.polyCq_.get(i)), + new GISAttributeInterface[]{GISAttributeConstants.TITRE})); + } + else { + GISDataModel mdl=GISDataModelFilterAdapter.buildAdapter(_filter.getCollect(_filter.polyCq_.get(i)), + new GISAttributeInterface[]{GISAttributeConstants.TITRE,GISAttributeConstants.NATURE}); + if (FSigResource.ATT_NATURE_CN.equals(col.getValue(idxAtt,0))) { + mdlniv.add(mdl); + } + else if (FSigResource.ATT_NATURE_PF.equals(col.getValue(idxAtt,0))) { + mdlprofs.add(mdl); + } + else if (FSigResource.ATT_NATURE_LD.equals(col.getValue(idxAtt,0))) { + mdlligdir.add(mdl); + } + else { + mdlautres.add(mdl); + } + } + } + + FileFormatUnique ff; + + // Les semis + if (mdlsemis.size()>0) { + ff=new RubarSEMFileFormat(); + GISDataModel mdl=new GISDataModelMultiAdapter(mdlsemis.toArray(new GISDataModel[0])); + ana=ff.write(CtuluLibFile.appendExtensionIfNeeded(f, ff.getExtensions()[0]), + new RubarSEMWriterGISAdapter(mdl), _prog).getAnalyze(); + synt.getAnalyze().merge(ana); + if (synt.containsFatalError()) return synt; + } + + // Les profils et lignes directrices + if (mdlprofs.size()>0) { + ff=new RubarStCnFileFormat(); + GISDataModel[] mdl=new GISDataModel[2]; + mdl[0]=new GISDataModelMultiAdapter(mdlprofs.toArray(new GISDataModel[0])); + mdl[1]=mdlligdir.size()==0 ? null:new GISDataModelMultiAdapter(mdlligdir.toArray(new GISDataModel[0])); + ana=ff.write(CtuluLibFile.appendExtensionIfNeeded(f, ff.getExtensions()[0]), mdl, _prog).getAnalyze(); + synt.getAnalyze().merge(ana); + if (synt.containsFatalError()) return synt; + } + + // Les courbes de niveau + if (mdlniv.size()>0) { + ff=new RubarStCnFileFormat(); + GISDataModel[] mdl=new GISDataModel[2]; + mdl[0]=new GISDataModelMultiAdapter(mdlniv.toArray(new GISDataModel[0])); + mdl[1]=null; + ana=ff.write(CtuluLibFile.appendExtensionIfNeeded(f, ff.getExtensions()[1]), mdl, _prog).getAnalyze(); + synt.getAnalyze().merge(ana); + if (synt.containsFatalError()) return synt; + } + + // Les autres polylignes => dans un fichier _autres.st + if (mdlautres.size()>0) { + ff=new RubarStCnFileFormat(); + GISDataModel[] mdl=new GISDataModel[2]; + mdl[0]=new GISDataModelMultiAdapter(mdlautres.toArray(new GISDataModel[0])); + mdl[1]=null; + ana=ff.write(CtuluLibFile.appendExtensionIfNeeded( + new File(f.getPath()+"_"+CtuluLib.getS("autres")),ff.getExtensions()[0]), mdl, _prog).getAnalyze(); + synt.getAnalyze().merge(ana); + if (synt.containsFatalError()) return synt; + } + + // Les polylignes. +/* int nb = _filter.polyCq_.size(); + GISDataModel[] models = new GISDataModel[nb]; + FileFormatUnique ff=new RubarStCnFileFormat(); for (int i = 0; i < nb; i++) { - models[i] = new GISDataModelZoneAdapter(_filter.getCollect(_filter.polyCq_.get(i)), FuEmptyArrays.INT0); + models[i]=GISDataModelFilterAdapter.buildAdapter(_filter.getCollect(_filter.polyCq_.get(i)), + new GISAttributeInterface[]{GISAttributeConstants.TITRE, GISAttributeConstants.NATURE}); +// models[i] = new GISDataModelZoneAdapter(_filter.getCollect(_filter.polyCq_.get(i)), FuEmptyArrays.INT0); } - return new RubarStCnFileFormat().write(f, new GISDataModelMultiAdapter(models), _prog); - + if (models.length>0) { + ana=ff.write(CtuluLibFile.appendExtensionIfNeeded(f, ff.getExtensions()[0]), new GISDataModelMultiAdapter(models), _prog) + .getAnalyze(); + synt.getAnalyze().merge(ana); + if (synt.containsFatalError()) return synt; + } + + // Les semis => Tous dans le m\xEAme fichier. + models = new GISDataModel[_filter.mlptsCq_.size()+_filter.pointCq_.size()]; + ff=new RubarSEMFileFormat(); + int nbMlt = _filter.mlptsCq_.size(); + for (int i = 0; i < nbMlt; i++) { + models[i]=GISDataModelFilterAdapter.buildAdapter(_filter.getCollect(_filter.mlptsCq_.get(i)), null); + } + int nbPts = _filter.pointCq_.size(); + for (int i = 0; i < nbPts; i++) { + models[i+nbMlt]=new GISDataModelPointMultiPointAdapter( + GISDataModelFilterAdapter.buildAdapter(_filter.getCollect(_filter.pointCq_.get(i)), null)); + } + if (models.length>0) { + ana=ff.write(CtuluLibFile.appendExtensionIfNeeded(f, ff.getExtensions()[0]), + new RubarSEMWriterGISAdapter(new GISDataModelMultiAdapter(models)), _prog).getAnalyze(); + synt.getAnalyze().merge(ana); + }*/ + return synt; } } Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java 2008-07-09 16:21:37 UTC (rev 3677) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java 2008-07-10 07:42:43 UTC (rev 3678) @@ -14,6 +14,7 @@ import java.util.Set; import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.MultiPoint; import com.vividsolutions.jts.geom.Point; import org.fudaa.ctulu.CtuluIOOperationSynthese; @@ -27,6 +28,7 @@ import org.fudaa.ebli.calque.ZModeleGeom; /** + * Un filtre sur les calques a exporter. Les calques a exporter peuvent \xEAtre uniquement les calques visibles. * @author Fred Deniger * @version $Id: FSigLayerFilter.java,v 1.4 2007-04-30 14:22:39 deniger Exp $ */ @@ -35,6 +37,8 @@ final Set cq_ = new HashSet(); List pointCq_ = new ArrayList(); List polyCq_ = new ArrayList(); + List mlptsCq_=new ArrayList(); + boolean bonlyVisible_=false; /** * @@ -47,11 +51,11 @@ * @return true si vide */ public boolean isEmpty() { - return pointCq_.size() == 0 && polyCq_.size() == 0; + return pointCq_.size() == 0 && polyCq_.size() == 0 && mlptsCq_.size()==0; } public int getNbZone() { - return pointCq_.size() + polyCq_.size(); + return pointCq_.size() + polyCq_.size() + mlptsCq_.size(); } public CtuluIOOperationSynthese exportTo(final FSigLayerExporter _exporter, final CtuluUI _impl, final File _file, @@ -73,19 +77,18 @@ return getCollect((ZCalqueAffichageDonneesInterface) _o); } - ZCalqueAffichageDonneesInterface[] getPointCalques() { - final ZCalqueAffichageDonneesInterface[] res = new ZCalqueAffichageDonneesInterface[pointCq_.size()]; - pointCq_.toArray(res); - return res; + /** + * Le traitement ne s'applique qu'aux seuls calques visibles. + * @param _b True : Uniquement les calques visibles sont consid\xE9r\xE9s. + */ + public void setTreatmentOnlyOnVisible(boolean _b) { + bonlyVisible_=_b; } - ZCalqueAffichageDonneesInterface[] getLignesCalques() { - final ZCalqueAffichageDonneesInterface[] res = new ZCalqueAffichageDonneesInterface[polyCq_.size()]; - polyCq_.toArray(res); - return res; - } - public boolean visit(final BCalque _cq) { + // Calque non trait\xE9 si invisible. + if (bonlyVisible_ && !_cq.isVisible()) return true; + if (!cq_.contains(_cq) && _cq instanceof ZCalqueAffichageDonneesInterface && ((ZCalqueAffichageDonneesInterface) _cq).modeleDonnees() instanceof ZModeleGeom) { final ZModeleGeom geom = (ZModeleGeom) ((ZCalqueAffichageDonneesInterface) _cq).modeleDonnees(); @@ -93,6 +96,8 @@ pointCq_.add(_cq); } else if (LineString.class.isAssignableFrom(geom.getGeomData().getDataStoreClass())) { polyCq_.add(_cq); + } else if (MultiPoint.class.isAssignableFrom(geom.getGeomData().getDataStoreClass())) { + mlptsCq_.add(_cq); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-07-09 16:21:29
|
Revision: 3677 http://fudaa.svn.sourceforge.net/fudaa/?rev=3677&view=rev Author: bmarchan Date: 2008-07-09 09:21:37 -0700 (Wed, 09 Jul 2008) Log Message: ----------- Ajout de l'attribut Nature Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-07-09 16:20:58 UTC (rev 3676) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-07-09 16:21:37 UTC (rev 3677) @@ -30,7 +30,7 @@ } public static String toString(final GISAttributeInterface _att) { - if (_att == TITRE || _att == BATHY) { + if (_att == TITRE || _att == BATHY || _att == NATURE) { return _att.getID(); } final String attributeSep = getAttributeSep(); @@ -49,6 +49,9 @@ if (BATHY.getID().equals(_saveName)) { return BATHY; } + if (NATURE.getID().equals(_saveName)) { + return NATURE; + } return null; } @@ -76,6 +79,9 @@ if (TITRE.isSameContent(res)) { res = TITRE; } + else if (NATURE.isSameContent(res)) { + res = NATURE; + } } return res; @@ -85,11 +91,12 @@ final ArrayList l = new ArrayList(2); l.add(BATHY); l.add(TITRE); + l.add(NATURE); return l; } public static boolean isConstant(final GISAttributeInterface _att) { - return _att == TITRE || _att == BATHY; + return _att == TITRE || _att == BATHY || _att == NATURE; } /** @@ -100,10 +107,6 @@ private int numid_=0; String def_ = CtuluLib.getS("<Defaut>"); - protected Object readResolve() { - return TITRE; - } - public String getID() { return "ATTRIBUTE_TITLE"; } @@ -125,14 +128,23 @@ }; /** + * Un attribut nature, global. + */ + public final static GISAttributeString NATURE = new GISAttributeString(CtuluLib.getS("Nature"), false) { + public String getID() { + return "ATTRIBUTE_NATURE"; + } + + public boolean isEditable() { + return false; + } + }; + + /** * Un attribut bathy, atomique. */ public final static GISAttributeDouble BATHY = new GISAttributeDouble(CtuluLib.getS("z"), true) { - protected Object readResolve() { - return BATHY; - } - public String getID() { return "ATTRIBUTE_Z"; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-07-09 16:20:50
|
Revision: 3676 http://fudaa.svn.sourceforge.net/fudaa/?rev=3676&view=rev Author: bmarchan Date: 2008-07-09 09:20:58 -0700 (Wed, 09 Jul 2008) Log Message: ----------- Des constantes pour l'attribut Nature. Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigResource.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigResource.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigResource.java 2008-07-09 16:17:56 UTC (rev 3675) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigResource.java 2008-07-09 16:20:58 UTC (rev 3676) @@ -18,6 +18,24 @@ */ public final class FSigResource extends FudaaResource { + /** Nature Semis */ + public final static String ATT_NATURE_SM="SM"; + /** Nature Courbe niveau */ + public final static String ATT_NATURE_CN="CN"; + /** Nature Profil */ + public final static String ATT_NATURE_PF="PF"; + /** Nature Ligne directrice */ + public final static String ATT_NATURE_LD="LD"; + /** Nature Ligne de contrainte */ + public final static String ATT_NATURE_LC="LC"; + /** Nature Trace de profil */ + public final static String ATT_NATURE_TP="TP"; + /** Nature Zone */ + public final static String ATT_NATURE_ZN="ZN"; + /** Nature Contour d'\xE9tude */ + public final static String ATT_NATURE_CE="CE"; + + public final static FSigResource FSIG = new FSigResource(FudaaResource.FUDAA); private FSigResource(final BuResource _b) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-07-09 16:17:50
|
Revision: 3675 http://fudaa.svn.sourceforge.net/fudaa/?rev=3675&view=rev Author: bmarchan Date: 2008-07-09 09:17:56 -0700 (Wed, 09 Jul 2008) Log Message: ----------- Ecriture/lecture de fichiers ST Rubar Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/fortran/FileOpWriterCharSimpleAbstract.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/fortran/FileOpWriterCharSimpleAbstract.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/fortran/FileOpWriterCharSimpleAbstract.java 2008-07-09 16:09:26 UTC (rev 3674) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/fortran/FileOpWriterCharSimpleAbstract.java 2008-07-09 16:17:56 UTC (rev 3675) @@ -53,7 +53,7 @@ return lineSep_; } - public final void setFile(final File _f) { + public void setFile(final File _f) { analyze_ = new CtuluAnalyze(); analyze_.setResource(_f.getAbsolutePath()); FileWriter out = null; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-07-09 16:09:18
|
Revision: 3674 http://fudaa.svn.sourceforge.net/fudaa/?rev=3674&view=rev Author: bmarchan Date: 2008-07-09 09:09:26 -0700 (Wed, 09 Jul 2008) Log Message: ----------- Nouvelle m?\195?\169thode getDistance3D() Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluLibGeometrie.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluLibGeometrie.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluLibGeometrie.java 2008-07-09 16:05:52 UTC (rev 3673) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluLibGeometrie.java 2008-07-09 16:09:26 UTC (rev 3674) @@ -1,240 +1,254 @@ -/* - * @file CtuluGeometrie.java - * @creation 29 janv. 2004 - * @modification $Date: 2006-10-24 12:47:38 $ - * @license GNU General Public License 2 - * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne - * @mail de...@fu... - */ -package org.fudaa.ctulu; - -import java.awt.geom.AffineTransform; -import java.awt.geom.Point2D; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Point; - -import com.memoire.fu.FuLog; - -/** - * @author deniger - * @version $Id: CtuluLibGeometrie.java,v 1.13 2006-10-24 12:47:38 deniger Exp $ - */ -public final class CtuluLibGeometrie { - - private CtuluLibGeometrie() {} - - /** - * @param _x1 x du point 1 - * @param _y1 y du point 1 - * @param _x2 x du point 2 - * @param _y2 y du point 2 - * @return Renvoie la distance entre le point p1(_x1,_y1) et le point p2(_x2,_y2) - */ - public static double getDistance(final double _x1, final double _y1, final double _x2, final double _y2) { - return Math.sqrt((_x2 - _x1) * (_x2 - _x1) + (_y2 - _y1) * (_y2 - _y1)); - } - - public static double getDistanceAuCarre(final double _x1, final double _y1, final double _x2, final double _y2) { - return (_x2 - _x1) * (_x2 - _x1) + (_y2 - _y1) * (_y2 - _y1); - } - - public static double getDistanceXY(final Coordinate _c1, final Coordinate _c2) { - return getDistance(_c1.x, _c1.y, _c2.x, _c2.y); - } - - /** - * @param _x1 x du point 1 - * @param _y1 y du point 1 - * @param _x2 x du point 2 - * @param _y2 y du point 2 - * @return Renvoie la norme au carre. - */ - public static double getD2(final double _x1, final double _y1, final double _x2, final double _y2) { - return (_x2 - _x1) * (_x2 - _x1) + (_y2 - _y1) * (_y2 - _y1); - } - - public static double getD2(final Coordinate _c1, final Coordinate _c2) { - return getD2(_c1.x, _c1.y, _c2.x, _c2.y); - } - - public static double getD2(final Point _c1, final Point _c2) { - return getD2(_c1.getX(), _c1.getY(), _c2.getX(), _c2.getY()); - } - - /** - * @param _segX1 x du point 1 du segment - * @param _segY1 y du point 1 du segment - * @param _segX2 x du point 2 du segment - * @param _segY2 y du point 2 du segment - * @param _x x du point a considerer - * @param _y y du point a considerer - * @return Renvoie la distance entre le point p(_x,_y) et le segment [P1,P2] P1=_segX1,_segY1. Tester dans ebli - */ - public static double distanceFromSegment(final double _segX1, final double _segY1, final double _segX2, - final double _segY2, final double _x, final double _y) { - return Math.sqrt(distanceAuCarreFromSegment(_segX1, _segY1, _segX2, _segY2, _x, _y)); - } - - public static double distanceAuCarreFromSegment(final double _segX1, final double _segY1, final double _segX2, - final double _segY2, final double _x, final double _y) { - if ((_segX1 == _segX2) && (_segY1 == _segY2)) { - return getDistanceAuCarre(_segX1, _segY1, _x, _y); - } - // P1=(_x1,_y1) - // P2=(_x2,_y2) - // X=thisPoint - // vecteur A=X-P1 - // vecteur B=P2-P1 - // On calcule la projection de A sur B - // le produit scalaire - double p = (_x - _segX1) * (_segX2 - _segX1) + (_y - _segY1) * (_segY2 - _segY1); - // si le point est "en dehors" du segment ,on prend la distance X P1 - if (p < 0) { - return getDistanceAuCarre(_x, _y, _segX1, _segY1); - } - - // le produit scalaire/norme de B - p = p / ((_segX2 - _segX1) * (_segX2 - _segX1) + (_segY2 - _segY1) * (_segY2 - _segY1)); - // si p>1 p est en dehors du segment - if (p > 1) { - return getDistanceAuCarre(_x, _y, _segX2, _segY2); - } - // le vecteur projete a pour coordonnees PROJ: - double projx = p * (_segX2 - _segX1); - double projy = p * (_segY2 - _segY1); - // le vecteur de norme (on reutilise le variable projx) - projx = (_x - _segX1) - projx; - projy = (_y - _segY1) - projy; - return projx * projx + projy * projy; - } - - /** - * Tester dans dodico TestMaillage. - * - * @param _x1 x de P1 - * @param _y1 y de P1 - * @param _x2 x de P2 - * @param _y2 y de P2 - * @param _x3 x de P3 - * @param _y3 y de P3 - * @return l'aire du triangle P1P2P3 - */ - public static double aireTriangle(final double _x1, final double _y1, final double _x2, final double _y2, - final double _x3, final double _y3) { - // ERROR aie - double p = (_x3 - _x1) * (_x2 - _x1) + (_y3 - _y1) * (_y2 - _y1); - final double d1d2 = getDistance(_x1, _y1, _x2, _y2); - // le produit scalaire/norme de B - p = p / (d1d2 * d1d2); - // le vecteur projete a pour coordonnees PROJ: - double projx = p * (_x2 - _x1); - double projy = p * (_y2 - _y1); - // le vecteur de norme (on reutilise le variable projx) - projx = (_x3 - _x1) - projx; - projy = (_y3 - _y1) - projy; - return d1d2 * Math.sqrt(projx * projx + projy * projy) / 2; - } - - /** - * Donne la valeur de l'angle <code>_angleInit</code> dans l'intervalle [-360;360]. - * - * @param _angleInit l'angle a ajuster dans l'intervalle [-360;360] - * @return l'equivalent dans l'intervalle [-360;360] - */ - public static double getAngle(final double _angleInit) { - return ((_angleInit > 360) || (_angleInit < -360)) ? _angleInit % 360 : _angleInit; - } - - public static AffineTransform projection(final Point2D[] _ptImages, final Point2D[] _ptReels) - throws IllegalArgumentException { - double[] proj = new double[6]; - if (_ptImages == null || _ptReels == null) { - return null; - // double[] projInv = new double[6]; - // double[] m_MatZoom = new double[6]; - // initialiser avec la matrice I - /* - * m_MatZoom[0]=1; m_MatZoom[4]=1; - */ - } - - if ((_ptImages.length != _ptReels.length) || (_ptImages.length < 3)) { - throw new IllegalArgumentException("badData"); - } - - if (_ptImages.length == 3) { - try { - // modif Gilbert : la division par 0 ne leve plus d'exception !!! - final double diviseur = -_ptImages[2].getY() * _ptImages[0].getX() + _ptImages[2].getY() * _ptImages[1].getX() - - _ptImages[0].getY() * _ptImages[1].getX() + _ptImages[1].getY() * _ptImages[0].getX() - + _ptImages[0].getY() * _ptImages[2].getX() - _ptImages[1].getY() * _ptImages[2].getX(); - - if (Math.abs(diviseur) < 0.0001) { - throw new Exception("div0"); - } - proj[0] = (float) ((-_ptImages[1].getY() * _ptReels[2].getX() - _ptImages[0].getY() * _ptReels[1].getX() - + _ptImages[2].getY() * _ptReels[1].getX() + _ptImages[1].getY() * _ptReels[0].getX() + _ptImages[0].getY() - * _ptReels[2].getX() - _ptImages[2].getY() * _ptReels[0].getX()) / diviseur); - - proj[1] = (float) (-(-_ptImages[1].getX() * _ptReels[2].getX() + _ptImages[2].getX() * _ptReels[1].getX() - + _ptImages[1].getX() * _ptReels[0].getX() - _ptImages[0].getX() * _ptReels[1].getX() + _ptImages[0].getX() - * _ptReels[2].getX() - _ptImages[2].getX() * _ptReels[0].getX()) / diviseur); - - proj[2] = (float) ((_ptImages[2].getX() * _ptImages[0].getY() * _ptReels[1].getX() - _ptImages[1].getX() - * _ptImages[0].getY() * _ptReels[2].getX() + _ptImages[1].getY() * _ptImages[0].getX() * _ptReels[2].getX() - + _ptImages[2].getY() * _ptImages[1].getX() * _ptReels[0].getX() - _ptImages[2].getY() - * _ptImages[0].getX() * _ptReels[1].getX() - _ptImages[1].getY() * _ptImages[2].getX() * _ptReels[0].getX()) / diviseur); - - proj[3] = (float) (-1 / diviseur * (_ptImages[1].getY() * _ptReels[2].getY() - _ptImages[0].getY() - * _ptReels[2].getY() - _ptImages[2].getY() * _ptReels[1].getY() - _ptImages[1].getY() * _ptReels[0].getY() - + _ptImages[0].getY() * _ptReels[1].getY() + _ptImages[2].getY() * _ptReels[0].getY())); - - proj[4] = (float) ((_ptImages[1].getX() * _ptReels[2].getY() - _ptImages[1].getX() * _ptReels[0].getY() - + _ptImages[0].getX() * _ptReels[1].getY() - _ptImages[0].getX() * _ptReels[2].getY() + _ptImages[2].getX() - * _ptReels[0].getY() - _ptImages[2].getX() * _ptReels[1].getY()) / diviseur); - - proj[5] = (float) (-(_ptImages[2].getY() * _ptImages[0].getX() * _ptReels[1].getY() - _ptImages[2].getY() - * _ptImages[1].getX() * _ptReels[0].getY() + _ptImages[1].getY() * _ptImages[2].getX() * _ptReels[0].getY() - - _ptImages[1].getY() * _ptImages[0].getX() * _ptReels[2].getY() + _ptImages[1].getX() - * _ptImages[0].getY() * _ptReels[2].getY() - _ptImages[2].getX() * _ptImages[0].getY() * _ptReels[1].getY()) / diviseur); - - } catch (final Exception e) { - // MsgInfo erW = new MsgInfo(parent, MsgInfo.ERROR,"Verifiez que les points ne sont pas alignes !"); - throw new IllegalArgumentException("checkPts"); - // throw e; - } - } else { - try { - final int n = _ptImages.length; - final int nc = 6; - final double[] a = new double[2 * n * 6]; - final double[] b = new double[2 * n]; - for (int i = 0; i < n; i++) { - b[2 * i] = _ptReels[i].getX(); - b[2 * i + 1] = _ptReels[i].getY(); - a[0 + 2 * i * nc] = _ptImages[i].getX(); - a[1 + 2 * i * nc] = _ptImages[i].getY(); - a[2 + 2 * i * nc] = 1.0; - a[3 + (2 * i + 1) * nc] = _ptImages[i].getX(); - a[4 + (2 * i + 1) * nc] = _ptImages[i].getY(); - a[5 + (2 * i + 1) * nc] = 1.0; - } - proj = LocalSolve.leastsquare(a, b, 2 * n, nc); - - /* - * System.out.println(ResourceManager.get("projMatrix")+"\n"+proj[0]+" "+proj[1]+" "+proj[2]+" "); - * System.out.println(proj[3]+" "+proj[4]+" "+proj[5]+" "); - */ - } catch (final Exception e) { - FuLog.error(e); - /* - * //MsgInfo erW = new MsgInfo(parent, MsgInfo.ERROR,"Verifiez que les points ne sont pas alignes !"); throw new - * Exception(ResourceManager.get("checkPts")); - */ - } - } - return new AffineTransform(proj[0], proj[3], proj[1], proj[4], proj[2], proj[5]); - } - -} +/* + * @file CtuluGeometrie.java + * @creation 29 janv. 2004 + * @modification $Date: 2006-10-24 12:47:38 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.ctulu; + +import java.awt.geom.AffineTransform; +import java.awt.geom.Point2D; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Point; + +import com.memoire.fu.FuLog; + +/** + * @author deniger + * @version $Id: CtuluLibGeometrie.java,v 1.13 2006-10-24 12:47:38 deniger Exp $ + */ +public final class CtuluLibGeometrie { + + private CtuluLibGeometrie() {} + + /** + * @param _x1 x du point 1 + * @param _y1 y du point 1 + * @param _x2 x du point 2 + * @param _y2 y du point 2 + * @return Renvoie la distance entre le point p1(_x1,_y1) et le point p2(_x2,_y2) + */ + public static double getDistance(final double _x1, final double _y1, final double _x2, final double _y2) { + return Math.sqrt((_x2 - _x1) * (_x2 - _x1) + (_y2 - _y1) * (_y2 - _y1)); + } + + /** + * @param _x1 x du point 1 + * @param _y1 y du point 1 + * @param _z1 z du point 1 + * @param _x2 x du point 2 + * @param _y2 y du point 2 + * @param _z2 z du point 2 + * @return Renvoie la distance entre le point p1(_x1,_y1,_z1) et le point p2(_x2,_y2,_z2) + */ + public static double getDistance3D(final double _x1, final double _y1,final double _z1, + final double _x2, final double _y2, final double _z2) { + return Math.sqrt((_x2 - _x1) * (_x2 - _x1) + (_y2 - _y1) * (_y2 - _y1) + (_z2 - _z1) * (_z2 - _z1)); + } + + public static double getDistanceAuCarre(final double _x1, final double _y1, final double _x2, final double _y2) { + return (_x2 - _x1) * (_x2 - _x1) + (_y2 - _y1) * (_y2 - _y1); + } + + public static double getDistanceXY(final Coordinate _c1, final Coordinate _c2) { + return getDistance(_c1.x, _c1.y, _c2.x, _c2.y); + } + + /** + * @param _x1 x du point 1 + * @param _y1 y du point 1 + * @param _x2 x du point 2 + * @param _y2 y du point 2 + * @return Renvoie la norme au carre. + */ + public static double getD2(final double _x1, final double _y1, final double _x2, final double _y2) { + return (_x2 - _x1) * (_x2 - _x1) + (_y2 - _y1) * (_y2 - _y1); + } + + public static double getD2(final Coordinate _c1, final Coordinate _c2) { + return getD2(_c1.x, _c1.y, _c2.x, _c2.y); + } + + public static double getD2(final Point _c1, final Point _c2) { + return getD2(_c1.getX(), _c1.getY(), _c2.getX(), _c2.getY()); + } + + /** + * @param _segX1 x du point 1 du segment + * @param _segY1 y du point 1 du segment + * @param _segX2 x du point 2 du segment + * @param _segY2 y du point 2 du segment + * @param _x x du point a considerer + * @param _y y du point a considerer + * @return Renvoie la distance entre le point p(_x,_y) et le segment [P1,P2] P1=_segX1,_segY1. Tester dans ebli + */ + public static double distanceFromSegment(final double _segX1, final double _segY1, final double _segX2, + final double _segY2, final double _x, final double _y) { + return Math.sqrt(distanceAuCarreFromSegment(_segX1, _segY1, _segX2, _segY2, _x, _y)); + } + + public static double distanceAuCarreFromSegment(final double _segX1, final double _segY1, final double _segX2, + final double _segY2, final double _x, final double _y) { + if ((_segX1 == _segX2) && (_segY1 == _segY2)) { + return getDistanceAuCarre(_segX1, _segY1, _x, _y); + } + // P1=(_x1,_y1) + // P2=(_x2,_y2) + // X=thisPoint + // vecteur A=X-P1 + // vecteur B=P2-P1 + // On calcule la projection de A sur B + // le produit scalaire + double p = (_x - _segX1) * (_segX2 - _segX1) + (_y - _segY1) * (_segY2 - _segY1); + // si le point est "en dehors" du segment ,on prend la distance X P1 + if (p < 0) { + return getDistanceAuCarre(_x, _y, _segX1, _segY1); + } + + // le produit scalaire/norme de B + p = p / ((_segX2 - _segX1) * (_segX2 - _segX1) + (_segY2 - _segY1) * (_segY2 - _segY1)); + // si p>1 p est en dehors du segment + if (p > 1) { + return getDistanceAuCarre(_x, _y, _segX2, _segY2); + } + // le vecteur projete a pour coordonnees PROJ: + double projx = p * (_segX2 - _segX1); + double projy = p * (_segY2 - _segY1); + // le vecteur de norme (on reutilise le variable projx) + projx = (_x - _segX1) - projx; + projy = (_y - _segY1) - projy; + return projx * projx + projy * projy; + } + + /** + * Tester dans dodico TestMaillage. + * + * @param _x1 x de P1 + * @param _y1 y de P1 + * @param _x2 x de P2 + * @param _y2 y de P2 + * @param _x3 x de P3 + * @param _y3 y de P3 + * @return l'aire du triangle P1P2P3 + */ + public static double aireTriangle(final double _x1, final double _y1, final double _x2, final double _y2, + final double _x3, final double _y3) { + // ERROR aie + double p = (_x3 - _x1) * (_x2 - _x1) + (_y3 - _y1) * (_y2 - _y1); + final double d1d2 = getDistance(_x1, _y1, _x2, _y2); + // le produit scalaire/norme de B + p = p / (d1d2 * d1d2); + // le vecteur projete a pour coordonnees PROJ: + double projx = p * (_x2 - _x1); + double projy = p * (_y2 - _y1); + // le vecteur de norme (on reutilise le variable projx) + projx = (_x3 - _x1) - projx; + projy = (_y3 - _y1) - projy; + return d1d2 * Math.sqrt(projx * projx + projy * projy) / 2; + } + + /** + * Donne la valeur de l'angle <code>_angleInit</code> dans l'intervalle [-360;360]. + * + * @param _angleInit l'angle a ajuster dans l'intervalle [-360;360] + * @return l'equivalent dans l'intervalle [-360;360] + */ + public static double getAngle(final double _angleInit) { + return ((_angleInit > 360) || (_angleInit < -360)) ? _angleInit % 360 : _angleInit; + } + + public static AffineTransform projection(final Point2D[] _ptImages, final Point2D[] _ptReels) + throws IllegalArgumentException { + double[] proj = new double[6]; + if (_ptImages == null || _ptReels == null) { + return null; + // double[] projInv = new double[6]; + // double[] m_MatZoom = new double[6]; + // initialiser avec la matrice I + /* + * m_MatZoom[0]=1; m_MatZoom[4]=1; + */ + } + + if ((_ptImages.length != _ptReels.length) || (_ptImages.length < 3)) { + throw new IllegalArgumentException("badData"); + } + + if (_ptImages.length == 3) { + try { + // modif Gilbert : la division par 0 ne leve plus d'exception !!! + final double diviseur = -_ptImages[2].getY() * _ptImages[0].getX() + _ptImages[2].getY() * _ptImages[1].getX() + - _ptImages[0].getY() * _ptImages[1].getX() + _ptImages[1].getY() * _ptImages[0].getX() + + _ptImages[0].getY() * _ptImages[2].getX() - _ptImages[1].getY() * _ptImages[2].getX(); + + if (Math.abs(diviseur) < 0.0001) { + throw new Exception("div0"); + } + proj[0] = (float) ((-_ptImages[1].getY() * _ptReels[2].getX() - _ptImages[0].getY() * _ptReels[1].getX() + + _ptImages[2].getY() * _ptReels[1].getX() + _ptImages[1].getY() * _ptReels[0].getX() + _ptImages[0].getY() + * _ptReels[2].getX() - _ptImages[2].getY() * _ptReels[0].getX()) / diviseur); + + proj[1] = (float) (-(-_ptImages[1].getX() * _ptReels[2].getX() + _ptImages[2].getX() * _ptReels[1].getX() + + _ptImages[1].getX() * _ptReels[0].getX() - _ptImages[0].getX() * _ptReels[1].getX() + _ptImages[0].getX() + * _ptReels[2].getX() - _ptImages[2].getX() * _ptReels[0].getX()) / diviseur); + + proj[2] = (float) ((_ptImages[2].getX() * _ptImages[0].getY() * _ptReels[1].getX() - _ptImages[1].getX() + * _ptImages[0].getY() * _ptReels[2].getX() + _ptImages[1].getY() * _ptImages[0].getX() * _ptReels[2].getX() + + _ptImages[2].getY() * _ptImages[1].getX() * _ptReels[0].getX() - _ptImages[2].getY() + * _ptImages[0].getX() * _ptReels[1].getX() - _ptImages[1].getY() * _ptImages[2].getX() * _ptReels[0].getX()) / diviseur); + + proj[3] = (float) (-1 / diviseur * (_ptImages[1].getY() * _ptReels[2].getY() - _ptImages[0].getY() + * _ptReels[2].getY() - _ptImages[2].getY() * _ptReels[1].getY() - _ptImages[1].getY() * _ptReels[0].getY() + + _ptImages[0].getY() * _ptReels[1].getY() + _ptImages[2].getY() * _ptReels[0].getY())); + + proj[4] = (float) ((_ptImages[1].getX() * _ptReels[2].getY() - _ptImages[1].getX() * _ptReels[0].getY() + + _ptImages[0].getX() * _ptReels[1].getY() - _ptImages[0].getX() * _ptReels[2].getY() + _ptImages[2].getX() + * _ptReels[0].getY() - _ptImages[2].getX() * _ptReels[1].getY()) / diviseur); + + proj[5] = (float) (-(_ptImages[2].getY() * _ptImages[0].getX() * _ptReels[1].getY() - _ptImages[2].getY() + * _ptImages[1].getX() * _ptReels[0].getY() + _ptImages[1].getY() * _ptImages[2].getX() * _ptReels[0].getY() + - _ptImages[1].getY() * _ptImages[0].getX() * _ptReels[2].getY() + _ptImages[1].getX() + * _ptImages[0].getY() * _ptReels[2].getY() - _ptImages[2].getX() * _ptImages[0].getY() * _ptReels[1].getY()) / diviseur); + + } catch (final Exception e) { + // MsgInfo erW = new MsgInfo(parent, MsgInfo.ERROR,"Verifiez que les points ne sont pas alignes !"); + throw new IllegalArgumentException("checkPts"); + // throw e; + } + } else { + try { + final int n = _ptImages.length; + final int nc = 6; + final double[] a = new double[2 * n * 6]; + final double[] b = new double[2 * n]; + for (int i = 0; i < n; i++) { + b[2 * i] = _ptReels[i].getX(); + b[2 * i + 1] = _ptReels[i].getY(); + a[0 + 2 * i * nc] = _ptImages[i].getX(); + a[1 + 2 * i * nc] = _ptImages[i].getY(); + a[2 + 2 * i * nc] = 1.0; + a[3 + (2 * i + 1) * nc] = _ptImages[i].getX(); + a[4 + (2 * i + 1) * nc] = _ptImages[i].getY(); + a[5 + (2 * i + 1) * nc] = 1.0; + } + proj = LocalSolve.leastsquare(a, b, 2 * n, nc); + + /* + * System.out.println(ResourceManager.get("projMatrix")+"\n"+proj[0]+" "+proj[1]+" "+proj[2]+" "); + * System.out.println(proj[3]+" "+proj[4]+" "+proj[5]+" "); + */ + } catch (final Exception e) { + FuLog.error(e); + /* + * //MsgInfo erW = new MsgInfo(parent, MsgInfo.ERROR,"Verifiez que les points ne sont pas alignes !"); throw new + * Exception(ResourceManager.get("checkPts")); + */ + } + } + return new AffineTransform(proj[0], proj[3], proj[1], proj[4], proj[2], proj[5]); + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-07-09 16:05:59
|
Revision: 3673 http://fudaa.svn.sourceforge.net/fudaa/?rev=3673&view=rev Author: bmarchan Date: 2008-07-09 09:05:52 -0700 (Wed, 09 Jul 2008) Log Message: ----------- Correctif pour correspondre au contrat GISDataModel Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAbstract.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAbstract.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAbstract.java 2008-07-09 15:56:30 UTC (rev 3672) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAbstract.java 2008-07-09 16:05:52 UTC (rev 3673) @@ -39,8 +39,9 @@ } public final int getIndiceOf(final GISAttributeInterface _att) { + if (_att==null) return -1; for (int i = getNbAttributes() - 1; i >= 0; i--) { - if (getAttribute(i).equals(_att)) { + if (_att.equals(getAttribute(i))) { return i; } } @@ -52,11 +53,16 @@ } public final GISAttributeInterface getAttribute(final int _idxAtt) { - return model_.getAttribute(attShown_ == null ? _idxAtt : attShown_[_idxAtt]); + int idx=getRealAttributIndex(_idxAtt); + if (idx<0 || idx>model_.getNbAttributes()) return null; + return model_.getAttribute(idx); } public Envelope getEnvelopeInternal() { return model_.getEnvelopeInternal(); } - + + protected int getRealAttributIndex(final int _idxAtt) { + return attShown_ == null ? _idxAtt : attShown_[_idxAtt]; + } } Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java 2008-07-09 15:56:30 UTC (rev 3672) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java 2008-07-09 16:05:52 UTC (rev 3673) @@ -1,188 +1,188 @@ -/* - * @creation 6 juin 2005 - * @modification $Date: 2007-01-10 08:58:47 $ - * @license GNU General Public License 2 - * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne - * @mail de...@fu... - */ -package org.fudaa.ctulu.gis; - -import java.util.BitSet; - -import com.vividsolutions.jts.geom.Geometry; - -import org.fudaa.ctulu.CtuluLibArray; - -/** - * Un filtre permettant d'exposer certains attributs d'un mod\xE8le de donn\xE9es - * et/ou certaines g\xE9om\xE9tries.<p> - * <b>Important</b> : Le filtre autorise des attributs qui ne sont pas dans le modele d'origine. - * Pour ces attributs, les valeurs retourn\xE9es pour chaque g\xE9om\xE9trie sont nulles. - * @author Fred Deniger - * @version $Id: GISDataModelFilterAdapter.java,v 1.1 2007-01-10 08:58:47 deniger Exp $ - */ -public class GISDataModelFilterAdapter extends GISDataModelAbstract { - - /** - * Cr\xE9ation d'un filtre conservant toutes les g\xE9om\xE9tries et seulement les attributs donn\xE9s. - */ - public static GISDataModelFilterAdapter buildAdapter(final GISDataModel _collection, - final GISAttributeInterface[] _att) { - return buildAdapter(_collection, _att, null); - } - - /** - * Cr\xE9ation d'un filtre ne conservant que les g\xE9om\xE9tries d'indices donn\xE9s et les attributs donn\xE9s. - * @param _collection la zone a adapter - * @param _att les attributs dans l'ordre voulu. - * @param _idxGeom Les indices des seules g\xE9om\xE9tries \xE0 exposer. - * @return l'adapteur - */ - public static GISDataModelFilterAdapter buildAdapter(final GISDataModel _collection, - final GISAttributeInterface[] _att, final int[] _idxGeom) { - - final int[] idx = _att == null ? null : new int[_att.length]; - if (_att != null) { - for (int i = _att.length - 1; i >= 0; i--) { - idx[i] = _collection.getIndiceOf(_att[i]); - } - } - return new GISDataModelFilterAdapter(_collection, idx, _idxGeom); - - } - - /** - * Cr\xE9ation d'un filtre ne conservant que les lignes et les d'attributs donn\xE9s. - */ - public static GISDataModelFilterAdapter buildLigneAdapter(final GISDataModel _collection, - final GISAttributeInterface[] _att) { - boolean allLigneBrisee = true; - final GISVisitorChooser chooser = new GISVisitorChooser(); - final int nb = _collection.getNumGeometries(); - final BitSet set = new BitSet(nb); - for (int i = 0; i < nb; i++) { - ((GISGeometry) _collection.getGeometry(i)).accept(chooser); - if (chooser.isPolyligne() || chooser.isPolygone()) { - set.set(i); - } else { - allLigneBrisee = false; - } - } - if (allLigneBrisee) { - return buildAdapter(_collection, _att, null); - } - return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set)); - } - - /** - * Cr\xE9ation d'un filtre ne conservant que les lignes ferm\xE9es et les d'attributs donn\xE9s. - */ - public static GISDataModelFilterAdapter buildLigneFermeeAdapter(final GISDataModel _collection, - final GISAttributeInterface[] _att) { - boolean allLigneFermee = true; - final GISVisitorChooser chooser = new GISVisitorChooser(); - final int nb = _collection.getNumGeometries(); - final BitSet set = new BitSet(nb); - for (int i = 0; i < nb; i++) { - ((GISGeometry) _collection.getGeometry(i)).accept(chooser); - if (chooser.isPolygone()) { - set.set(i); - } else { - allLigneFermee = false; - } - } - if (allLigneFermee) { - return buildAdapter(_collection, _att, null); - } - return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set)); - } - - /** - * Cr\xE9ation d'un filtre ne conservant que les lignes ferm\xE9es et les d'attributs donn\xE9s. - */ - public static GISDataModelFilterAdapter buildLigneOuverteAdapter(final GISDataModel _collection, - final GISAttributeInterface[] _att) { - boolean allLigneBrisee = true; - final GISVisitorChooser chooser = new GISVisitorChooser(); - final int nb = _collection.getNumGeometries(); - final BitSet set = new BitSet(nb); - for (int i = 0; i < nb; i++) { - ((GISGeometry) _collection.getGeometry(i)).accept(chooser); - if (chooser.isPolyligne()) { - set.set(i); - } else { - allLigneBrisee = false; - } - } - if (allLigneBrisee) { - return buildAdapter(_collection, _att, null); - } - return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set)); - } - - /** - * Cr\xE9ation d'un filtre ne conservant que les points et les d'attributs donn\xE9s. - */ - public static GISDataModelFilterAdapter buildPointAdapter(final GISDataModel _collection, - final GISAttributeInterface[] _att) { - boolean allPoint = true; - final GISVisitorChooser chooser = new GISVisitorChooser(); - final int nb = _collection.getNumGeometries(); - final BitSet set = new BitSet(nb); - for (int i = 0; i < nb; i++) { - ((GISGeometry) _collection.getGeometry(i)).accept(chooser); - if (chooser.isPt()) { - set.set(i); - } else { - allPoint = false; - } - } - if (allPoint) { - return buildAdapter(_collection, _att, null); - } - return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set)); - } - - final int[] geometryShown_; - - /** - * @param _model - * @param _idxAtt - */ - public GISDataModelFilterAdapter(final GISDataModel _model, final int[] _idxAtt, final int[] _idxGeom) { - super(_idxAtt, _model); - - geometryShown_ = _idxGeom; - } - - private int getRealGeometryIndex(final int _init) { - return geometryShown_ == null ? _init : geometryShown_[_init]; - } - - // geom - - public double getDoubleValue(final int _idxAtt, final int _idxGeom) { - final int idx = attShown_ == null ? _idxAtt : attShown_[_idxAtt]; - if (idx < 0 || idx >= model_.getNbAttributes()) { - return 0; - } - return model_.getDoubleValue(idx, getRealGeometryIndex(_idxGeom)); - } - - public Geometry getGeometry(final int _idxGeom) { - return model_.getGeometry(getRealGeometryIndex(_idxGeom)); - } - - public int getNumGeometries() { - return geometryShown_ == null ? model_.getNumGeometries() : geometryShown_.length; - } - - public Object getValue(final int _idxAtt, final int _idxGeom) { - final int idx = attShown_ == null ? _idxAtt : attShown_[_idxAtt]; - if (idx < 0 || idx >= model_.getNbAttributes()) { - return null; - } - return model_.getValue(idx, getRealGeometryIndex(_idxGeom)); - } - -} +/* + * @creation 6 juin 2005 + * @modification $Date: 2007-01-10 08:58:47 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.ctulu.gis; + +import java.util.BitSet; + +import com.vividsolutions.jts.geom.Geometry; + +import org.fudaa.ctulu.CtuluLibArray; + +/** + * Un filtre permettant d'exposer certains attributs d'un mod\xE8le de donn\xE9es + * et/ou certaines g\xE9om\xE9tries.<p> + * <b>Important</b> : Le filtre autorise des attributs qui ne sont pas dans le modele d'origine. + * Pour ces attributs, les valeurs retourn\xE9es pour chaque g\xE9om\xE9trie sont nulles. + * @author Fred Deniger + * @version $Id: GISDataModelFilterAdapter.java,v 1.1 2007-01-10 08:58:47 deniger Exp $ + */ +public class GISDataModelFilterAdapter extends GISDataModelAbstract { + + /** + * Cr\xE9ation d'un filtre conservant toutes les g\xE9om\xE9tries et seulement les attributs donn\xE9s. + */ + public static GISDataModelFilterAdapter buildAdapter(final GISDataModel _collection, + final GISAttributeInterface[] _att) { + return buildAdapter(_collection, _att, null); + } + + /** + * Cr\xE9ation d'un filtre ne conservant que les g\xE9om\xE9tries d'indices donn\xE9s et les attributs donn\xE9s. + * @param _collection la zone a adapter + * @param _att les attributs dans l'ordre voulu. + * @param _idxGeom Les indices des seules g\xE9om\xE9tries \xE0 exposer, dans l'ordre souhait\xE9. + * @return l'adapteur + */ + public static GISDataModelFilterAdapter buildAdapter(final GISDataModel _collection, + final GISAttributeInterface[] _att, final int[] _idxGeom) { + + final int[] idx = _att == null ? null : new int[_att.length]; + if (_att != null) { + for (int i = _att.length - 1; i >= 0; i--) { + idx[i] = _collection.getIndiceOf(_att[i]); + } + } + return new GISDataModelFilterAdapter(_collection, idx, _idxGeom); + + } + + /** + * Cr\xE9ation d'un filtre ne conservant que les lignes et les d'attributs donn\xE9s. + */ + public static GISDataModelFilterAdapter buildLigneAdapter(final GISDataModel _collection, + final GISAttributeInterface[] _att) { + boolean allLigneBrisee = true; + final GISVisitorChooser chooser = new GISVisitorChooser(); + final int nb = _collection.getNumGeometries(); + final BitSet set = new BitSet(nb); + for (int i = 0; i < nb; i++) { + ((GISGeometry) _collection.getGeometry(i)).accept(chooser); + if (chooser.isPolyligne() || chooser.isPolygone()) { + set.set(i); + } else { + allLigneBrisee = false; + } + } + if (allLigneBrisee) { + return buildAdapter(_collection, _att, null); + } + return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set)); + } + + /** + * Cr\xE9ation d'un filtre ne conservant que les lignes ferm\xE9es et les d'attributs donn\xE9s. + */ + public static GISDataModelFilterAdapter buildLigneFermeeAdapter(final GISDataModel _collection, + final GISAttributeInterface[] _att) { + boolean allLigneFermee = true; + final GISVisitorChooser chooser = new GISVisitorChooser(); + final int nb = _collection.getNumGeometries(); + final BitSet set = new BitSet(nb); + for (int i = 0; i < nb; i++) { + ((GISGeometry) _collection.getGeometry(i)).accept(chooser); + if (chooser.isPolygone()) { + set.set(i); + } else { + allLigneFermee = false; + } + } + if (allLigneFermee) { + return buildAdapter(_collection, _att, null); + } + return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set)); + } + + /** + * Cr\xE9ation d'un filtre ne conservant que les lignes ferm\xE9es et les d'attributs donn\xE9s. + */ + public static GISDataModelFilterAdapter buildLigneOuverteAdapter(final GISDataModel _collection, + final GISAttributeInterface[] _att) { + boolean allLigneBrisee = true; + final GISVisitorChooser chooser = new GISVisitorChooser(); + final int nb = _collection.getNumGeometries(); + final BitSet set = new BitSet(nb); + for (int i = 0; i < nb; i++) { + ((GISGeometry) _collection.getGeometry(i)).accept(chooser); + if (chooser.isPolyligne()) { + set.set(i); + } else { + allLigneBrisee = false; + } + } + if (allLigneBrisee) { + return buildAdapter(_collection, _att, null); + } + return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set)); + } + + /** + * Cr\xE9ation d'un filtre ne conservant que les points et les d'attributs donn\xE9s. + */ + public static GISDataModelFilterAdapter buildPointAdapter(final GISDataModel _collection, + final GISAttributeInterface[] _att) { + boolean allPoint = true; + final GISVisitorChooser chooser = new GISVisitorChooser(); + final int nb = _collection.getNumGeometries(); + final BitSet set = new BitSet(nb); + for (int i = 0; i < nb; i++) { + ((GISGeometry) _collection.getGeometry(i)).accept(chooser); + if (chooser.isPt()) { + set.set(i); + } else { + allPoint = false; + } + } + if (allPoint) { + return buildAdapter(_collection, _att, null); + } + return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set)); + } + + final int[] geometryShown_; + + /** + * @param _model + * @param _idxAtt + */ + public GISDataModelFilterAdapter(final GISDataModel _model, final int[] _idxAtt, final int[] _idxGeom) { + super(_idxAtt, _model); + + geometryShown_ = _idxGeom; + } + + private int getRealGeometryIndex(final int _init) { + return geometryShown_ == null ? _init : geometryShown_[_init]; + } + + // geom + + public double getDoubleValue(final int _idxAtt, final int _idxGeom) { + final int idx = getRealAttributIndex(_idxAtt); + if (idx < 0 || idx >= model_.getNbAttributes()) { + return 0; + } + return model_.getDoubleValue(idx, getRealGeometryIndex(_idxGeom)); + } + + public Geometry getGeometry(final int _idxGeom) { + return model_.getGeometry(getRealGeometryIndex(_idxGeom)); + } + + public int getNumGeometries() { + return geometryShown_ == null ? model_.getNumGeometries() : geometryShown_.length; + } + + public Object getValue(final int _idxAtt, final int _idxGeom) { + final int idx = getRealAttributIndex(_idxAtt); + if (idx < 0 || idx >= model_.getNbAttributes()) { + return null; + } + return model_.getValue(idx, getRealGeometryIndex(_idxGeom)); + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-07-09 15:56:41
|
Revision: 3672 http://fudaa.svn.sourceforge.net/fudaa/?rev=3672&view=rev Author: bmarchan Date: 2008-07-09 08:56:30 -0700 (Wed, 09 Jul 2008) Log Message: ----------- Ecriture/lecture de fichiers ST Rubar Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStWriter.java Added Paths: ----------- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarSEMWriterGISAdapter.java Added: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarSEMWriterGISAdapter.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarSEMWriterGISAdapter.java (rev 0) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarSEMWriterGISAdapter.java 2008-07-09 15:56:30 UTC (rev 3672) @@ -0,0 +1,82 @@ +/* + * @creation 2 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.dodico.rubar.io; + +import org.fudaa.ctulu.CtuluNumberFormatFortran; +import org.fudaa.ctulu.CtuluNumberFormatI; +import org.fudaa.ctulu.collection.CDoubleArrayList; +import org.fudaa.ctulu.collection.CtuluCollectionDouble; +import org.fudaa.ctulu.gis.GISCollectionPointDataDoubleInterface; +import org.fudaa.ctulu.gis.GISDataModel; +import org.fudaa.ctulu.gis.GISMultiPoint; +import org.fudaa.dodico.fortran.FortranDoubleReaderResultInterface; + +import com.vividsolutions.jts.geom.CoordinateSequence; +import com.vividsolutions.jts.geom.Geometry; + +/** + * Un adapteur pour ecrire sur un fichier Rubar SEM a partir d'un modele de multipoints. + * @author Bertrand Marchand + * @version $Id:$ + */ +public class RubarSEMWriterGISAdapter implements FortranDoubleReaderResultInterface { + CDoubleArrayList[] values_=new CDoubleArrayList[3]; + CtuluNumberFormatFortran doubleFormater_ = new CtuluNumberFormatFortran(13); + + /** + * Le mod\xE8le ne doit contenir que des multipoints. Le reste n'est pas trait\xE9. + * @param _mdl + */ + public RubarSEMWriterGISAdapter(GISDataModel _mdl) { + initVals(_mdl); + } + + private void initVals(GISDataModel _mdl) { + int nblines=0; + int nb=_mdl.getNumGeometries(); + for (int i=0; i<nb; i++) + nblines+=_mdl.getGeometry(i).getNumPoints(); + + for (int i=0; i<3; i++) + values_[i]=new CDoubleArrayList(nblines); + + for (int i=0; i<nb; i++) { + GISMultiPoint g=(GISMultiPoint)_mdl.getGeometry(i); + CoordinateSequence seq=g.getCoordinateSequence(); + int nbpts=seq.size(); + for (int j=0; j<nbpts; j++) { + for (int k=0; k<3; k++) + values_[k].add(seq.getOrdinate(j,k)); + } + } + } + + public GISCollectionPointDataDoubleInterface createXYValuesInterface() { + throw new IllegalAccessError("This method shouldn't be accessed"); + } + + public CtuluCollectionDouble getCollectionFor(int _col) { + return values_[_col]; + } + + public CtuluNumberFormatI getFormat(int _col) { + return doubleFormater_; + } + + public int getNbColonne() { + return 3; // X,Y,Z. + } + + public int getNbLigne() { + return values_[0].size(); + } + + public double getValue(int _ligne, int _col) { + return getCollectionFor(_col).getValue(_ligne); + } +} Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarSEMWriterGISAdapter.java ___________________________________________________________________ Name: svn:eol-style + native Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java 2008-07-09 15:48:54 UTC (rev 3671) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java 2008-07-09 15:56:30 UTC (rev 3672) @@ -56,11 +56,12 @@ /** * Lit les profils et les lignes directrices. - * @return Un tableau GISZoneCollectionLigneBrisee[2]. [0] : la collection des profils, [1] : la collection de lignes directrices. + * @return Un tableau GISZoneCollectionLigneBrisee[2]. [0] : la collection des profils (ou null si aucun profil), + * [1] : la collection de lignes directrices (ou null si aucune ligne directrice). */ protected Object internalRead() { // Remarque : Cette impl\xE9mentation empeche des noms semblables (les noms sont stock\xE9s comme cl\xE9 de Map) sur les lignes - // directrices (ce qui peut \xEAtre normal puisque c'est le m\xEAme nom en un point de chaque profil qui permet de constituer + // directrices. Ce qui peut \xEAtre normal puisque c'est le m\xEAme nom en un point de chaque profil qui permet de constituer // la ligne. if (in_ == null) { return null; @@ -95,8 +96,8 @@ // dans les fichier st, il se peut qu'il y ait des points en double, donc on fait ce test: if (last == null || !last.equals2D(coordinate)) { coordinatesEnCours.add(coordinate); + last = coordinate; } - last = coordinate; // Ligne directrice eventuelle. Pas de controle que la ligne directrice est bien sur tous les profils. String namedir=in_.stringField(4).trim(); @@ -106,7 +107,7 @@ coordldir=new ArrayList(200); mdirs.put(namedir,coordldir); } - coordldir.add(coordinate.clone()); + coordldir.add(last.clone()); } in_.readFields(fmt); @@ -117,7 +118,7 @@ if (str != null) { lignes.add(str); if ("".equals(name)) { - names.add(CtuluLib.getS("_P")+((GISGeometry)str).getId()); + names.add(CtuluLib.getS(isSt_?"_P":"_N")+((GISGeometry)str).getId()); } else { names.add(name); Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStWriter.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStWriter.java 2008-07-09 15:48:54 UTC (rev 3671) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStWriter.java 2008-07-09 15:56:30 UTC (rev 3672) @@ -7,53 +7,115 @@ */ package org.fudaa.dodico.rubar.io; +import java.io.File; import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; -import com.vividsolutions.jts.geom.CoordinateSequence; -import com.vividsolutions.jts.geom.LineString; - +import org.fudaa.ctulu.CtuluLib; +import org.fudaa.ctulu.CtuluLibGeometrie; import org.fudaa.ctulu.CtuluNumberFormatI; import org.fudaa.ctulu.fileformat.FortranLib; +import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISDataModel; - +import org.fudaa.ctulu.gis.GISDataModelFilterAdapter; import org.fudaa.dodico.fortran.FileOpWriterCharSimpleAbstract; import org.fudaa.dodico.fortran.FortranWriter; +import com.vividsolutions.jts.geom.CoordinateSequence; +import com.vividsolutions.jts.geom.LineString; + /** - * @author fred deniger + * Une classe pour ecrire les donn\xE9es Rubar St. Si le mod\xE8le poss\xE8de un attribut TITRE, alors il est \xE9crit comme + * nom du profil. + * + * @author fred deniger, Bertrand Marchand * @version $Id: RubarStWriter.java,v 1.4 2007-05-04 13:47:30 deniger Exp $ */ public class RubarStWriter extends FileOpWriterCharSimpleAbstract { + /** Pour chaque profil, association entre l'indice de certains points et des indices de lignes directrices.*/ + HashMap<Integer,ArrayList<Integer>>[] pts2lds_=null; + /** Le mod\xE8le de profils, une fois r\xE9ordonn\xE9, ou identique si non r\xE9ordonn\xE9. */ + GISDataModel profs_=null; + /** Le fichier est de type ST */ + boolean isSt_; + + public void setFile(final File _f) { + isSt_ = !_f.getName().toLowerCase().endsWith(".cn"); + super.setFile(_f); + } + + /** + * Ecrit les profils et les lignes directrices. + * param _o Un tableau GISDataModel[2]. + * [0] : le modele des profils (ou null si aucun profil), + * [1] : le modele de lignes directrices (ou null si aucune ligne directrice). + */ protected void internalWrite(final Object _o) { - if (!(_o instanceof GISDataModel)) { + if (!(_o instanceof GISDataModel[]) || ((GISDataModel[])_o).length!=2) { donneesInvalides(_o); return; } - final GISDataModel ligne = (GISDataModel) _o; - final int[] fmtEntete = new int[] { 6, 6, 6, 6, 11 }; - final int[] fmt = new int[] { 13, 13, 13, 3 }; + + GISDataModel lines=((GISDataModel[])_o)[1]; + // Lignes directrices ou non ? + boolean bldirs=lines!=null; + // Si pb avec les lignes directrices => Pas d'\xE9criture de fichier. + if (!prepareWrite((GISDataModel[])_o)) return; + +// profs_ = ((GISDataModel[])_o)[0]; + + final int attName=profs_.getIndiceOf(GISAttributeConstants.TITRE); + final int attNameLines=bldirs?lines.getIndiceOf(GISAttributeConstants.TITRE):-1; + + final int[] fmtEntete = new int[] { 6, 6, 6, 6, 13, 1, 42 }; + final int[] fmt = new int[] { 13, 13, 13, 1, 3 }; final FortranWriter writer = new FortranWriter(out_); writer.setSpaceBefore(true); - // erreur dans la doc - writer.setSpaceBefore(true); final CtuluNumberFormatI numbFmt = FortranLib.getFortranFormat(12, 3); final String sep = "999.999"; try { - for (int i = 0; i < ligne.getNumGeometries(); i++) { - writer.doubleField(4, 0); - writer.intField(3, 0); - writer.intField(2, 0); - writer.intField(1, 0); - writer.intField(0, i + 1); - writer.writeFields(fmtEntete); - final CoordinateSequence str = ((LineString) ligne.getGeometry(i)).getCoordinateSequence(); + for (int i = 0; i < profs_.getNumGeometries(); i++) { + HashMap<Integer,ArrayList<Integer>> pts2ld=bldirs?pts2lds_[i]:null; + String name; + if (isSt_) { + if (attName==-1||(name=(String)profs_.getValue(attName, i))==null) name=""; + writer.setSpaceBefore(false); + writer.stringField(6, name); + writer.stringField(5, ""); + writer.doubleField(4, 0); + writer.intField(3, 0); + writer.intField(2, 0); + writer.intField(1, 0); + writer.intField(0, i+1); + writer.writeFields(fmtEntete); + writer.setSpaceBefore(true); + } + final CoordinateSequence str = ((LineString) profs_.getGeometry(i)).getCoordinateSequence(); for (int k = 0; k < str.size(); k++) { - writer.stringField(2, numbFmt.format(str.getOrdinate(k, 2))); - writer.stringField(1, numbFmt.format(str.getOrdinate(k, 1))); - writer.stringField(0, numbFmt.format(str.getOrdinate(k, 0))); - writer.writeFields(fmt); + // Un m\xEAme point de profil peut \xEAtre partag\xE9 par plusieurs lignes directrices => On duplique ce point. + ArrayList<Integer> idxline=bldirs?pts2ld.get(k):null; + if (idxline!=null) { + for (int il=0; il<idxline.size(); il++) { + if (attNameLines==-1 || (name=(String)lines.getValue(attNameLines,idxline.get(il)))==null || + name.length()>3) name="D"+idxline.get(il); + writer.stringField(4, name); + writer.stringField(3, ""); + writer.stringField(2, numbFmt.format(str.getOrdinate(k, 2))); + writer.stringField(1, numbFmt.format(str.getOrdinate(k, 1))); + writer.stringField(0, numbFmt.format(str.getOrdinate(k, 0))); + writer.writeFields(fmt); + } + } + else { + writer.stringField(2, numbFmt.format(str.getOrdinate(k, 2))); + writer.stringField(1, numbFmt.format(str.getOrdinate(k, 1))); + writer.stringField(0, numbFmt.format(str.getOrdinate(k, 0))); + writer.writeFields(fmt); + } } writer.stringField(2, sep); writer.stringField(1, sep); @@ -63,8 +125,106 @@ } } catch (final IOException _evt) { analyze_.manageException(_evt); + } + } + + /** + * Controle que les lignes directrices et profils d\xE9finissent bien une trame correcte. R\xE9ordonne les profils et les + * lignes directrices. D\xE9finit les liens entre les points des profils et des lignes directrices eventuelles.<p> + * + * @param _mdls Les mod\xE8les de lignes directrices et profils. + * @return true si ok. + */ + private boolean prepareWrite(GISDataModel[] _mdls) { + GISDataModel ldirs=_mdls[1]; + profs_=_mdls[0]; + + pts2lds_=null; + if (ldirs==null) return true; // On ne peut rien controler sans lignes directrices. + + // Les lignes directrices doivent avoir m\xEAme nombre de points. + int nbpts=-1; + for (int i=0; i<ldirs.getNumGeometries(); i++) { + if (nbpts==-1) { + nbpts=ldirs.getGeometry(i).getNumPoints(); + } + else if (ldirs.getGeometry(i).getNumPoints()!=nbpts) { + analyze_.addError(CtuluLib.getS("Les lignes directrices doivent avoir le m\xEAme nombre de points"), 0); + break; + } + } + // Le nombre de profils doit \xEAtre \xE9gal au nombre de points des lignes directrices. + if (nbpts!=profs_.getNumGeometries()) { + analyze_.addError(CtuluLib.getS("Le nombre de points sur les lignes directrices doit \xEAtre \xE9gal au nombre de profils"), 0); + } + if (analyze_.containsErrors()) return false; + + List<Integer> ordProfs=new ArrayList<Integer>(profs_.getNumGeometries()); + CoordinateSequence firstLine=((LineString)ldirs.getGeometry(0)).getCoordinateSequence(); + // On r\xE9ordonne les profils suivant la 1ere ligne directrice. + NEXT_LD_COORD: + for (int i=0; i<firstLine.size(); i++) { + double x1=firstLine.getOrdinate(i,CoordinateSequence.X); + double y1=firstLine.getOrdinate(i,CoordinateSequence.Y); + double z1=firstLine.getOrdinate(i,CoordinateSequence.Z); + for (int j=0; j<profs_.getNumGeometries(); j++) { + if (ordProfs.contains(j)) continue; + CoordinateSequence seq=((LineString)profs_.getGeometry(j)).getCoordinateSequence(); + for (int k=0; k<seq.size(); k++) { + double x2=seq.getOrdinate(k,CoordinateSequence.X); + double y2=seq.getOrdinate(k,CoordinateSequence.Y); + double z2=seq.getOrdinate(k,CoordinateSequence.Z); + if (CtuluLibGeometrie.getDistance3D(x1,y1,z1,x2,y2,z2)<1.E-6) { + ordProfs.add(j); + continue NEXT_LD_COORD; + } + } + } + analyze_.addError(CtuluLib.getS("Les lignes directrices ne sont probablement pas connect\xE9es aux profils"), 0); + return false; + } + + int[] iprofs=new int[ordProfs.size()]; + for (int i=0; i<iprofs.length; i++) iprofs[i]=ordProfs.get(i).intValue(); + profs_=GISDataModelFilterAdapter.buildAdapter(profs_, null, iprofs); + + // Les profils sont r\xE9ordonn\xE9s => On associe un index de ligne directrice aux points qui en contiennent. + pts2lds_=new HashMap[profs_.getNumGeometries()]; + for (int i=0; i<profs_.getNumGeometries(); i++) { + pts2lds_[i]=new HashMap<Integer,ArrayList<Integer>>(); + CoordinateSequence seqprof=((LineString)profs_.getGeometry(i)).getCoordinateSequence(); + + NEXT_LD: + for (int j=0; j<ldirs.getNumGeometries(); j++) { + CoordinateSequence seqline=((LineString)ldirs.getGeometry(j)).getCoordinateSequence(); + double x1=seqline.getOrdinate(i,CoordinateSequence.X); + double y1=seqline.getOrdinate(i,CoordinateSequence.Y); + double z1=seqline.getOrdinate(i,CoordinateSequence.Z); + for (int k=0; k<seqprof.size(); k++) { + double x2=seqprof.getOrdinate(k,CoordinateSequence.X); + double y2=seqprof.getOrdinate(k,CoordinateSequence.Y); + double z2=seqprof.getOrdinate(k,CoordinateSequence.Z); + if (CtuluLibGeometrie.getDistance3D(x1,y1,z1,x2,y2,z2)<1.E-6) { + ArrayList<Integer> idxlines=pts2lds_[i].get(k); + if (idxlines==null) { + idxlines=new ArrayList<Integer>(); + pts2lds_[i].put(k,idxlines); + } + idxlines.add(j); + continue NEXT_LD; + } + } + int attNameLines=ldirs.getIndiceOf(GISAttributeConstants.TITRE); + String name; + if (attNameLines==-1) name=""+j; + else name=(String)ldirs.getValue(attNameLines,j); + analyze_.addError( + CtuluLib.getS("La ligne directrice {0} n'est pas connect\xE9e \xE0 un profil au sommet {1}",name,""+(i+1)), 0); + return false; + } } - + if (analyze_.containsErrors()) return false; + return true; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-07-09 15:48:46
|
Revision: 3671 http://fudaa.svn.sourceforge.net/fudaa/?rev=3671&view=rev Author: bmarchan Date: 2008-07-09 08:48:54 -0700 (Wed, 09 Jul 2008) Log Message: ----------- Implementent GISCoordinateSequenceContainerInterface pour traitements g?\195?\169n?\195?\169riques. Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLigneBrisee.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPoint.java Added Paths: ----------- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISCoordinateSequenceContainerInterface.java Added: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISCoordinateSequenceContainerInterface.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISCoordinateSequenceContainerInterface.java (rev 0) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISCoordinateSequenceContainerInterface.java 2008-07-09 15:48:54 UTC (rev 3671) @@ -0,0 +1,24 @@ +/* + * @creation 11 f\xE9vr. 2004 + * @modification $Date: 2006-02-09 08:59:28 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.ctulu.gis; + +import com.vividsolutions.jts.geom.CoordinateSequence; + +/** + * Interface definissant des g\xE9om\xE9tries \xE0 base de {@link CoordinateSequence}. + * + * @author Bertrand Marchand + * @version $Id: GISPointContainerInterface.java,v 1.3 2006-02-09 08:59:28 deniger Exp $ + */ +public interface GISCoordinateSequenceContainerInterface { + + /** + * @return La sequence de coordonn\xE9es pour la g\xE9om\xE9trie. + */ + public CoordinateSequence getCoordinateSequence(); +} Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISCoordinateSequenceContainerInterface.java ___________________________________________________________________ Name: svn:eol-style + native Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLigneBrisee.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLigneBrisee.java 2008-07-08 14:47:31 UTC (rev 3670) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLigneBrisee.java 2008-07-09 15:48:54 UTC (rev 3671) @@ -12,7 +12,7 @@ * @author Fred Deniger * @version $Id: GISLigneBrisee.java,v 1.2 2006-02-09 08:59:28 deniger Exp $ */ -public interface GISLigneBrisee extends GISGeometry{ +public interface GISLigneBrisee extends GISGeometry, GISCoordinateSequenceContainerInterface{ Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java 2008-07-08 14:47:31 UTC (rev 3670) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java 2008-07-09 15:48:54 UTC (rev 3671) @@ -18,7 +18,7 @@ * @author Bertrand Marchand * @version $Id: GISMultiPoint.java,v 1.8.6.2 2008-04-01 17:09:56 bmarchan Exp $ */ -public class GISMultiPoint extends MultiPoint implements GISGeometry { +public class GISMultiPoint extends MultiPoint implements GISGeometry, GISCoordinateSequenceContainerInterface { CoordinateSequence seq_=null; protected long id_=GISGeometryFactory.INSTANCE.getNewId(); Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPoint.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPoint.java 2008-07-08 14:47:31 UTC (rev 3670) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPoint.java 2008-07-09 15:48:54 UTC (rev 3671) @@ -17,7 +17,7 @@ * @author deniger * @version $Id: GISPoint.java,v 1.5 2006-07-13 13:34:35 deniger Exp $ */ -public class GISPoint extends Point implements GISGeometry { +public class GISPoint extends Point implements GISGeometry, GISCoordinateSequenceContainerInterface { protected long id_=GISGeometryFactory.INSTANCE.getNewId(); public long getId() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-07-08 14:49:28
|
Revision: 3670 http://fudaa.svn.sourceforge.net/fudaa/?rev=3670&view=rev Author: bmarchan Date: 2008-07-08 07:47:31 -0700 (Tue, 08 Jul 2008) Log Message: ----------- Suppression de FIXME corrig?\195?\169s. Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/GenarrModeleTable.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3DataSimulation.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3DessinerPort.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3DonneesGeneralesParametres.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3FrameSaisieHoraires.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3ModeleDurManeuvreEclEntrant.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3ModeleDurManeuvreEclSortant.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3ModeleExcel.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3ModeleVitesseBiefAvalant.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3ModeleVitesseBiefMontant.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3Modeletrajets.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/GenarrModeleTable.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporDataSimulation.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporDessinerPort.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporDonneesGeneralesParametres.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporFrameSaisieHoraires.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporModeleDureeParcoursCercles.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporModeleDureeParcoursChenaux.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporModeleExcel.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/GenarrModeleTable.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/GenarrModeleTable.java 2008-07-08 14:19:35 UTC (rev 3669) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/GenarrModeleTable.java 2008-07-08 14:47:31 UTC (rev 3670) @@ -231,15 +231,7 @@ return null; } String s = o.toString(); - //FIXME fred + court et + efficace if(CtuluLibString.isEmpty(s)) return null; -/* if (s == null) { - return null; - } - s = s.trim(); - if (s.length() == 0) { - return null; - }*/ try { return new Number(_colXls, _rowXls, Double.parseDouble(s)); } catch (final NumberFormatException e) {} Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3DataSimulation.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3DataSimulation.java 2008-07-08 14:19:35 UTC (rev 3669) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3DataSimulation.java 2008-07-08 14:47:31 UTC (rev 3670) @@ -68,8 +68,8 @@ /** * donn\xE9es generales du port. */ - // FIXME: fred jamais utilise - Sinavi3DonneesGenerales donneesGenerales_ = new Sinavi3DonneesGenerales(); + // Fred jamais utilise +// Sinavi3DonneesGenerales donneesGenerales_ = new Sinavi3DonneesGenerales(); /** * Tableau de catgories de Navires. @@ -80,14 +80,14 @@ /** * Liste d'horaires saisis par l'utilisateur par defaut une cinquantaine ce qui est plus que amplement suffisant. */ - // FIXME: FRED JAMAIS UTILISE - Sinavi3ListeHoraires listeHoraire_ = new Sinavi3ListeHoraires(); + // FRED: JAMAIS UTILISE +// Sinavi3ListeHoraires listeHoraire_ = new Sinavi3ListeHoraires(); /** * Nombres d'horaires choisis si cet indice est a zro, cela prouve que l'utilisateur n'as toujours pas retr de donnes * horaires, on ne peut donc pas passer la suite. */ - // FIXME: FRED JAMAIS UTILISE - int nbHoraires_; + // FRED: JAMAIS UTILISE +// int nbHoraires_; /** * les donn\xE9es des gares. @@ -122,8 +122,8 @@ * Liste d'horaires pour les categories de navires ces horaires ne sont pas enregistr\xE9 dans les sauvegardes, ils * servent juste a rendre la saisie plus rapide et ergonomique. */ - // FIXME: FRED JAMAIS UTILISE - ArrayList listeHorairesNavires_ = new ArrayList(); + // FRED: JAMAIS UTILISE +// ArrayList listeHorairesNavires_ = new ArrayList(); /** * Interface parent sinavi. @@ -247,18 +247,18 @@ } // A: initialisation des donn\xE9es - donneesGenerales_ = new Sinavi3DonneesGenerales(); +// donneesGenerales_ = new Sinavi3DonneesGenerales(); listeBateaux_ = new Sinavi3Navires(); - listeHoraire_ = new Sinavi3ListeHoraires(); - nbHoraires_ = 0; +// listeHoraire_ = new Sinavi3ListeHoraires(); +// nbHoraires_ = 0; listeGare_ = new Sinavi3Gares(); listeBief_ = new Sinavi3Biefs(); listeEcluse_ = new Sinavi3Ecluses(); // final Sinavi3StrutureReglesDureesParcours reglesDureesParcoursChenal_ = new Sinavi3StrutureReglesDureesParcours(); // final Sinavi3StrutureReglesDureesParcours reglesDureesParcoursCercle_ = new Sinavi3StrutureReglesDureesParcours(); - listeHorairesNavires_ = new ArrayList(); +// listeHorairesNavires_ = new ArrayList(); // Ajoute le projet qui vient d'etre ouvert et en fait le projet courant. this.application_.liste_.ajouteSimulation(nomFichierVoulu, projet); @@ -642,11 +642,11 @@ void getParametresProjet() { // A: initialisation des donn\xE9es - donneesGenerales_ = new Sinavi3DonneesGenerales(); +// donneesGenerales_ = new Sinavi3DonneesGenerales(); listeBateaux_ = new Sinavi3Navires(); - listeHoraire_ = new Sinavi3ListeHoraires(); - nbHoraires_ = 0; +// listeHoraire_ = new Sinavi3ListeHoraires(); +// nbHoraires_ = 0; listeGare_ = new Sinavi3Gares(); listeBief_ = new Sinavi3Biefs(); @@ -655,7 +655,7 @@ reglesVitesseBiefMontant_= new Sinavi3StrutureReglesDureesParcours(); durManeuvreEclEntrant_ = new Sinavi3StrutureReglesDureesParcours(); durManeuvreEclSortant_ = new Sinavi3StrutureReglesDureesParcours(); - listeHorairesNavires_ = new ArrayList(); +// listeHorairesNavires_ = new ArrayList(); /** recopiage des donn\xE9es des gares */ @@ -2036,11 +2036,11 @@ SSimulationSinavi2 simuOld=(SSimulationSinavi2) listeSimulationsSinavi2_.get(0); //A: initialisation des donn\xE9es - donneesGenerales_ = new Sinavi3DonneesGenerales(); +// donneesGenerales_ = new Sinavi3DonneesGenerales(); listeBateaux_ = new Sinavi3Navires(); - listeHoraire_ = new Sinavi3ListeHoraires(); - nbHoraires_ = 0; +// listeHoraire_ = new Sinavi3ListeHoraires(); +// nbHoraires_ = 0; listeGare_ = new Sinavi3Gares(); listeBief_ = new Sinavi3Biefs(); @@ -2049,7 +2049,7 @@ reglesVitesseBiefMontant_= new Sinavi3StrutureReglesDureesParcours(); durManeuvreEclEntrant_ = new Sinavi3StrutureReglesDureesParcours(); durManeuvreEclSortant_ = new Sinavi3StrutureReglesDureesParcours(); - listeHorairesNavires_ = new ArrayList(); +// listeHorairesNavires_ = new ArrayList(); //-- recopiage des donn\xE9es --// Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3DessinerPort.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3DessinerPort.java 2008-07-08 14:19:35 UTC (rev 3669) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3DessinerPort.java 2008-07-08 14:47:31 UTC (rev 3670) @@ -182,7 +182,6 @@ * Methode d implementation de CtuluImageProducer retourne null on ne s'en pr\xE9occupe pas. */ public Dimension getDefaultImageDimension() { - // TODO Auto-generated method stub return this.getSize(); } @@ -1142,7 +1141,7 @@ * @return */ int nombreEcluses2arcsIdentiques(final int _arcEcluse) { - // FIXME: FRED JAMAIS UTILISE + // FRED: JAMAIS UTILISE // final int indiceColoriage = 2; int compteurEcluses = 0; final int gare1 = this.donnees_.params_.grapheTopologie.graphe[_arcEcluse].numGare1; Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3DonneesGeneralesParametres.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3DonneesGeneralesParametres.java 2008-07-08 14:19:35 UTC (rev 3669) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3DonneesGeneralesParametres.java 2008-07-08 14:47:31 UTC (rev 3670) @@ -149,8 +149,6 @@ tfTitre2.setText(dg.titre2); tfTitre3.setText(dg.titre3); boxNombrePassages.setSelectedItem(new Integer(dg.nombrePassages)); - //FIXME aie inutile -// tfGraineDepart.setText((new Integer(dg.graineDepart)).toString()); tfGraineDepart.setText(Integer.toString(dg.graineDepart)); boxPremierJour.setSelectedIndex(dg.premierJourSimulation); dfDureeInitSimul.setDureeField(dg.heureDebutReelSimulation); Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3FrameSaisieHoraires.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3FrameSaisieHoraires.java 2008-07-08 14:19:35 UTC (rev 3669) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3FrameSaisieHoraires.java 2008-07-08 14:47:31 UTC (rev 3670) @@ -104,7 +104,6 @@ .setToolTipText("Saisissez le nombre correspondant l'horaire de fermeture. Par exemple, si vous voulez rentrer 8h46, tapez 8.46"); if (horaire_.semaineCreneau1HeureArrivee != -1 && horaire_.semaineCreneau2HeureArrivee != -1 - //FIXME Fred & remplace par && && horaire_.semaineCreneau1HeureDep != -1 && horaire_.semaineCreneau2HeureDep != -1) { // valeur recuperee de la structure horaire this.creneau1debut_.setText("" + (float) horaire_.semaineCreneau1HeureDep); Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3ModeleDurManeuvreEclEntrant.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3ModeleDurManeuvreEclEntrant.java 2008-07-08 14:19:35 UTC (rev 3669) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3ModeleDurManeuvreEclEntrant.java 2008-07-08 14:47:31 UTC (rev 3670) @@ -159,15 +159,7 @@ return null; } String s = o.toString(); - //FIXME fred + court et + efficace if(CtuluLibString.isEmpty(s)) return null; - /* if (s == null) { - return null; - } - s = s.trim(); - if (s.length() == 0) { - return null; - }*/ try { return new Number(_colXls, _rowXls, Double.parseDouble(s)); } catch (final NumberFormatException e) {} Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3ModeleDurManeuvreEclSortant.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3ModeleDurManeuvreEclSortant.java 2008-07-08 14:19:35 UTC (rev 3669) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3ModeleDurManeuvreEclSortant.java 2008-07-08 14:47:31 UTC (rev 3670) @@ -157,15 +157,7 @@ return null; } String s = o.toString(); - //FIXME fred + court et + efficace if(CtuluLibString.isEmpty(s)) return null; - /* if (s == null) { - return null; - } - s = s.trim(); - if (s.length() == 0) { - return null; - }*/ try { return new Number(_colXls, _rowXls, Double.parseDouble(s)); } catch (final NumberFormatException e) {} Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3ModeleExcel.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3ModeleExcel.java 2008-07-08 14:19:35 UTC (rev 3669) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3ModeleExcel.java 2008-07-08 14:47:31 UTC (rev 3670) @@ -171,15 +171,7 @@ return null; } String s = o.toString(); - //FIXME fred + court et + efficace if(CtuluLibString.isEmpty(s)) return null; -/* if (s == null) { - return null; - } - s = s.trim(); - if (s.length() == 0) { - return null; - }*/ try { return new Number(_colXls, _rowXls, Double.parseDouble(s)); } catch (final NumberFormatException e) {} Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3ModeleVitesseBiefAvalant.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3ModeleVitesseBiefAvalant.java 2008-07-08 14:19:35 UTC (rev 3669) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3ModeleVitesseBiefAvalant.java 2008-07-08 14:47:31 UTC (rev 3670) @@ -157,15 +157,7 @@ return null; } String s = o.toString(); - //FIXME fred + court et + efficace if(CtuluLibString.isEmpty(s)) return null; - /* if (s == null) { - return null; - } - s = s.trim(); - if (s.length() == 0) { - return null; - }*/ try { return new Number(_colXls, _rowXls, Double.parseDouble(s)); } catch (final NumberFormatException e) {} Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3ModeleVitesseBiefMontant.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3ModeleVitesseBiefMontant.java 2008-07-08 14:19:35 UTC (rev 3669) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3ModeleVitesseBiefMontant.java 2008-07-08 14:47:31 UTC (rev 3670) @@ -156,15 +156,7 @@ return null; } String s = o.toString(); - //FIXME fred + court et + efficace if(CtuluLibString.isEmpty(s)) return null; - /* if (s == null) { - return null; - } - s = s.trim(); - if (s.length() == 0) { - return null; - }*/ try { return new Number(_colXls, _rowXls, Double.parseDouble(s)); } catch (final NumberFormatException e) {} Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3Modeletrajets.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3Modeletrajets.java 2008-07-08 14:19:35 UTC (rev 3669) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3Modeletrajets.java 2008-07-08 14:47:31 UTC (rev 3670) @@ -110,15 +110,7 @@ return null; } String s = o.toString(); - //FIXME fred + court et + efficace if(CtuluLibString.isEmpty(s)) return null; - /* if (s == null) { - return null; - } - s = s.trim(); - if (s.length() == 0) { - return null; - }*/ try { return new Number(_colXls, _rowXls, Double.parseDouble(s)); } catch (final NumberFormatException e) {} Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/GenarrModeleTable.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/GenarrModeleTable.java 2008-07-08 14:19:35 UTC (rev 3669) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/GenarrModeleTable.java 2008-07-08 14:47:31 UTC (rev 3670) @@ -216,15 +216,7 @@ return null; } String s = o.toString(); - //FIXME fred + court et + efficace if(CtuluLibString.isEmpty(s)) return null; -/* if (s == null) { - return null; - } - s = s.trim(); - if (s.length() == 0) { - return null; - }*/ try { return new Number(_colXls, _rowXls, Double.parseDouble(s)); } catch (final NumberFormatException e) {} Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporDataSimulation.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporDataSimulation.java 2008-07-08 14:19:35 UTC (rev 3669) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporDataSimulation.java 2008-07-08 14:47:31 UTC (rev 3670) @@ -86,8 +86,8 @@ /** * donn\xE9es generales du port. */ - // FIXME: fred jamais utilise - SiporDonneesGenerales donneesGenerales_ = new SiporDonneesGenerales(); + // fred : jamais utilise +// SiporDonneesGenerales donneesGenerales_ = new SiporDonneesGenerales(); /** * Tableau de catgories de Navires. @@ -102,14 +102,14 @@ /** * Liste d'horaires saisis par l'utilisateur par defaut une cinquantaine ce qui est plus que amplement suffisant. */ - // FIXME: FRED JAMAIS UTILISE - SiporListeHoraires listeHoraire_ = new SiporListeHoraires(); + // FRED: JAMAIS UTILISE +// SiporListeHoraires listeHoraire_ = new SiporListeHoraires(); /** * Nombres d'horaires choisis si cet indice est a zro, cela prouve que l'utilisateur n'as toujours pas retr de donnes * horaires, on ne peut donc pas passer la suite. */ - // FIXME: FRED JAMAIS UTILISE - int nbHoraires_; + // FRED: JAMAIS UTILISE +// int nbHoraires_; /** * les donn\xE9es des bassins. @@ -146,8 +146,8 @@ * Liste d'horaires pour les categories de navires ces horaires ne sont pas enregistr\xE9 dans les sauvegardes, ils * servent juste a rendre la saisie plus rapide et ergonomique. */ - // FIXME: FRED JAMAIS UTILISE - ArrayList listeHorairesNavires_ = new ArrayList(); + // FRED: JAMAIS UTILISE +// ArrayList listeHorairesNavires_ = new ArrayList(); /** * Interface parent SIPOR. @@ -275,11 +275,11 @@ } // A: initialisation des donn\xE9es - donneesGenerales_ = new SiporDonneesGenerales(); +// donneesGenerales_ = new SiporDonneesGenerales(); categoriesNavires_ = new SiporNavires(); lQuais_ = new SiporListeQuais(); - listeHoraire_ = new SiporListeHoraires(); - nbHoraires_ = 0; +// listeHoraire_ = new SiporListeHoraires(); +// nbHoraires_ = 0; listebassin_ = new SiporBassins(); listeGare_ = new SiporGares(); listeCercle_ = new SiporCercles(); @@ -287,7 +287,7 @@ listeEcluse_ = new SiporEcluses(); // final SiporStrutureReglesDureesParcours reglesDureesParcoursChenal_ = new SiporStrutureReglesDureesParcours(); // final SiporStrutureReglesDureesParcours reglesDureesParcoursCercle_ = new SiporStrutureReglesDureesParcours(); - listeHorairesNavires_ = new ArrayList(); +// listeHorairesNavires_ = new ArrayList(); // Ajoute le projet qui vient d'etre ouvert et en fait le projet courant. this.application_.liste_.ajouteSimulation(nomFichierVoulu, projet); @@ -649,11 +649,11 @@ void getParametresProjet() { // A: initialisation des donn\xE9es - donneesGenerales_ = new SiporDonneesGenerales(); +// donneesGenerales_ = new SiporDonneesGenerales(); categoriesNavires_ = new SiporNavires(); lQuais_ = new SiporListeQuais(); - listeHoraire_ = new SiporListeHoraires(); - nbHoraires_ = 0; +// listeHoraire_ = new SiporListeHoraires(); +// nbHoraires_ = 0; listebassin_ = new SiporBassins(); listeGare_ = new SiporGares(); listeCercle_ = new SiporCercles(); @@ -661,7 +661,7 @@ listeEcluse_ = new SiporEcluses(); reglesDureesParcoursChenal_ = new SiporStrutureReglesDureesParcours(); reglesDureesParcoursCercle_ = new SiporStrutureReglesDureesParcours(); - listeHorairesNavires_ = new ArrayList(); +// listeHorairesNavires_ = new ArrayList(); /** recopiage des donn\xE9es des gares */ Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporDessinerPort.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporDessinerPort.java 2008-07-08 14:19:35 UTC (rev 3669) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporDessinerPort.java 2008-07-08 14:47:31 UTC (rev 3670) @@ -1293,7 +1293,7 @@ * @return */ int nombreEcluses2arcsIdentiques(final int _arcEcluse) { - // FIXME: FRED JAMAIS UTILISE + // FRED: JAMAIS UTILISE // final int indiceColoriage = 2; int compteurEcluses = 0; final int gare1 = this.donnees_.params_.grapheTopologie.graphe[_arcEcluse].numGare1; Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporDonneesGeneralesParametres.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporDonneesGeneralesParametres.java 2008-07-08 14:19:35 UTC (rev 3669) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporDonneesGeneralesParametres.java 2008-07-08 14:47:31 UTC (rev 3670) @@ -149,8 +149,6 @@ tfTitre2.setText(dg.titre2); tfTitre3.setText(dg.titre3); boxNombrePassages.setSelectedItem(new Integer(dg.nombrePassages)); - //FIXME aie inutile -// tfGraineDepart.setText((new Integer(dg.graineDepart)).toString()); tfGraineDepart.setText(Integer.toString(dg.graineDepart)); boxPremierJour.setSelectedIndex(dg.premierJourSimulation); dfDureeInitSimul.setDureeField(dg.heureDebutReelSimulation); Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporFrameSaisieHoraires.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporFrameSaisieHoraires.java 2008-07-08 14:19:35 UTC (rev 3669) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporFrameSaisieHoraires.java 2008-07-08 14:47:31 UTC (rev 3670) @@ -104,7 +104,6 @@ .setToolTipText("Saisissez le nombre correspondant l'horaire de fermeture. Par exemple, si vous voulez rentrer 8h46, tapez 8.46"); if (horaire_.semaineCreneau1HeureArrivee != -1 && horaire_.semaineCreneau2HeureArrivee != -1 - //FIXME Fred & remplace par && && horaire_.semaineCreneau1HeureDep != -1 && horaire_.semaineCreneau2HeureDep != -1) { // valeur recuperee de la structure horaire this.creneau1debut_.setText("" + (float) horaire_.semaineCreneau1HeureDep); Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporModeleDureeParcoursCercles.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporModeleDureeParcoursCercles.java 2008-07-08 14:19:35 UTC (rev 3669) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporModeleDureeParcoursCercles.java 2008-07-08 14:47:31 UTC (rev 3670) @@ -154,15 +154,7 @@ return null; } String s = o.toString(); - //FIXME fred + court et + efficace if(CtuluLibString.isEmpty(s)) return null; - /* if (s == null) { - return null; - } - s = s.trim(); - if (s.length() == 0) { - return null; - }*/ try { return new Number(_colXls, _rowXls, Double.parseDouble(s)); } catch (final NumberFormatException e) {} Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporModeleDureeParcoursChenaux.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporModeleDureeParcoursChenaux.java 2008-07-08 14:19:35 UTC (rev 3669) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporModeleDureeParcoursChenaux.java 2008-07-08 14:47:31 UTC (rev 3670) @@ -157,15 +157,7 @@ return null; } String s = o.toString(); - //FIXME fred + court et + efficace if(CtuluLibString.isEmpty(s)) return null; - /* if (s == null) { - return null; - } - s = s.trim(); - if (s.length() == 0) { - return null; - }*/ try { return new Number(_colXls, _rowXls, Double.parseDouble(s)); } catch (final NumberFormatException e) {} Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporModeleExcel.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporModeleExcel.java 2008-07-08 14:19:35 UTC (rev 3669) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporModeleExcel.java 2008-07-08 14:47:31 UTC (rev 3670) @@ -171,15 +171,7 @@ return null; } String s = o.toString(); - //FIXME fred + court et + efficace if(CtuluLibString.isEmpty(s)) return null; -/* if (s == null) { - return null; - } - s = s.trim(); - if (s.length() == 0) { - return null; - }*/ try { return new Number(_colXls, _rowXls, Double.parseDouble(s)); } catch (final NumberFormatException e) {} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-07-08 14:21:22
|
Revision: 3669 http://fudaa.svn.sourceforge.net/fudaa/?rev=3669&view=rev Author: bmarchan Date: 2008-07-08 07:19:35 -0700 (Tue, 08 Jul 2008) Log Message: ----------- Suppression de FIXME corrig?\195?\169s. Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3FrameSaisieHorairesComplet.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3FrameSaisieHorairesCompletSemaine.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporFrameSaisieHorairesComplet.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporFrameSaisieHorairesCompletSemaine.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3FrameSaisieHorairesComplet.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3FrameSaisieHorairesComplet.java 2008-07-04 08:59:20 UTC (rev 3668) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3FrameSaisieHorairesComplet.java 2008-07-08 14:19:35 UTC (rev 3669) @@ -105,7 +105,6 @@ if (horaire_.samediCreneau1HeureArrivee != -1 && horaire_.samediCreneau2HeureArrivee != -1 && horaire_.samediCreneau3HeureArrivee != -1 && horaire_.samediCreneau1HeureDep != -1 - //FIXME pourquoi un seul & && horaire_.samediCreneau2HeureDep != -1 && horaire_.samediCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.screneau1debut_.setText("" + (float) horaire_.samediCreneau1HeureDep); @@ -419,7 +418,6 @@ if (horaire_.dimancheCreneau1HeureArrivee != -1 && horaire_.dimancheCreneau2HeureArrivee != -1 && horaire_.dimancheCreneau3HeureArrivee != -1 && horaire_.dimancheCreneau1HeureDep != -1 -// FIXME pourquoi un seul & && horaire_.dimancheCreneau2HeureDep != -1 && horaire_.dimancheCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.dcreneau1debut_.setText("" + (float) horaire_.dimancheCreneau1HeureDep); @@ -731,7 +729,6 @@ if (horaire_.ferieCreneau1HeureArrivee != -1 && horaire_.ferieCreneau2HeureArrivee != -1 && horaire_.ferieCreneau3HeureArrivee != -1 && horaire_.ferieCreneau1HeureDep != -1 -// FIXME pourquoi un seul & && horaire_.ferieCreneau2HeureDep != -1 && horaire_.ferieCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.fcreneau1debut_.setText("" + (float) horaire_.ferieCreneau1HeureDep); Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3FrameSaisieHorairesCompletSemaine.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3FrameSaisieHorairesCompletSemaine.java 2008-07-04 08:59:20 UTC (rev 3668) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sinavi3/Sinavi3FrameSaisieHorairesCompletSemaine.java 2008-07-08 14:19:35 UTC (rev 3669) @@ -201,7 +201,6 @@ if (horaire_.lundiCreneau1HeureArrivee != -1 && horaire_.lundiCreneau2HeureArrivee != -1 && horaire_.lundiCreneau3HeureArrivee != -1 && horaire_.lundiCreneau1HeureDep != -1 -// FIXME pourquoi un seul & && horaire_.lundiCreneau2HeureDep != -1 && horaire_.lundiCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.lundicreneau1debut_.setText("" + (float) horaire_.lundiCreneau1HeureDep); @@ -510,7 +509,6 @@ if (horaire_.mardiCreneau1HeureArrivee != -1 && horaire_.mardiCreneau2HeureArrivee != -1 && horaire_.mardiCreneau3HeureArrivee != -1 && horaire_.mardiCreneau1HeureDep != -1 -// FIXME pourquoi un seul & && horaire_.mardiCreneau2HeureDep != -1 && horaire_.mardiCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.mardicreneau1debut_.setText("" + (float) horaire_.mardiCreneau1HeureDep); @@ -823,7 +821,6 @@ if (horaire_.mercrediCreneau1HeureArrivee != -1 && horaire_.mercrediCreneau2HeureArrivee != -1 && horaire_.mercrediCreneau3HeureArrivee != -1 && horaire_.mercrediCreneau1HeureDep != -1 -// FIXME pourquoi un seul & && horaire_.mercrediCreneau2HeureDep != -1 && horaire_.mercrediCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.mercredicreneau1debut_.setText("" + (float) horaire_.mercrediCreneau1HeureDep); @@ -1135,7 +1132,6 @@ if (horaire_.jeudiCreneau1HeureArrivee != -1 && horaire_.jeudiCreneau2HeureArrivee != -1 && horaire_.jeudiCreneau3HeureArrivee != -1 && horaire_.jeudiCreneau1HeureDep != -1 -// FIXME pourquoi un seul & && horaire_.jeudiCreneau2HeureDep != -1 && horaire_.jeudiCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.jeudicreneau1debut_.setText("" + (float) horaire_.jeudiCreneau1HeureDep); @@ -1448,7 +1444,6 @@ if (horaire_.vendrediCreneau1HeureArrivee != -1 && horaire_.vendrediCreneau2HeureArrivee != -1 && horaire_.vendrediCreneau3HeureArrivee != -1 && horaire_.vendrediCreneau1HeureDep != -1 -// FIXME pourquoi un seul & && horaire_.vendrediCreneau2HeureDep != -1 && horaire_.vendrediCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.vendredicreneau1debut_.setText("" + (float) horaire_.vendrediCreneau1HeureDep); @@ -1759,7 +1754,6 @@ if (horaire_.samediCreneau1HeureArrivee != -1 && horaire_.samediCreneau2HeureArrivee != -1 && horaire_.samediCreneau3HeureArrivee != -1 && horaire_.samediCreneau1HeureDep != -1 -// FIXME pourquoi un seul & && horaire_.samediCreneau2HeureDep != -1 && horaire_.samediCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.screneau1debut_.setText("" + (float) horaire_.samediCreneau1HeureDep); @@ -2069,7 +2063,6 @@ if (horaire_.dimancheCreneau1HeureArrivee != -1 && horaire_.dimancheCreneau2HeureArrivee != -1 && horaire_.dimancheCreneau3HeureArrivee != -1 && horaire_.dimancheCreneau1HeureDep != -1 -// FIXME pourquoi un seul & && horaire_.dimancheCreneau2HeureDep != -1 && horaire_.dimancheCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.dcreneau1debut_.setText("" + (float) horaire_.dimancheCreneau1HeureDep); @@ -2377,7 +2370,6 @@ if (horaire_.ferieCreneau1HeureArrivee != -1 && horaire_.ferieCreneau2HeureArrivee != -1 && horaire_.ferieCreneau3HeureArrivee != -1 && horaire_.ferieCreneau1HeureDep != -1 -// FIXME pourquoi un seul & && horaire_.ferieCreneau2HeureDep != -1 && horaire_.ferieCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.fcreneau1debut_.setText("" + (float) horaire_.ferieCreneau1HeureDep); Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporFrameSaisieHorairesComplet.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporFrameSaisieHorairesComplet.java 2008-07-04 08:59:20 UTC (rev 3668) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporFrameSaisieHorairesComplet.java 2008-07-08 14:19:35 UTC (rev 3669) @@ -105,7 +105,6 @@ if (horaire_.samediCreneau1HeureArrivee != -1 && horaire_.samediCreneau2HeureArrivee != -1 && horaire_.samediCreneau3HeureArrivee != -1 && horaire_.samediCreneau1HeureDep != -1 - //FIXME pourquoi un seul & && horaire_.samediCreneau2HeureDep != -1 && horaire_.samediCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.screneau1debut_.setText("" + (float) horaire_.samediCreneau1HeureDep); @@ -419,7 +418,6 @@ if (horaire_.dimancheCreneau1HeureArrivee != -1 && horaire_.dimancheCreneau2HeureArrivee != -1 && horaire_.dimancheCreneau3HeureArrivee != -1 && horaire_.dimancheCreneau1HeureDep != -1 -// FIXME pourquoi un seul & && horaire_.dimancheCreneau2HeureDep != -1 && horaire_.dimancheCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.dcreneau1debut_.setText("" + (float) horaire_.dimancheCreneau1HeureDep); @@ -731,7 +729,6 @@ if (horaire_.ferieCreneau1HeureArrivee != -1 && horaire_.ferieCreneau2HeureArrivee != -1 && horaire_.ferieCreneau3HeureArrivee != -1 && horaire_.ferieCreneau1HeureDep != -1 -// FIXME pourquoi un seul & && horaire_.ferieCreneau2HeureDep != -1 && horaire_.ferieCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.fcreneau1debut_.setText("" + (float) horaire_.ferieCreneau1HeureDep); Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporFrameSaisieHorairesCompletSemaine.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporFrameSaisieHorairesCompletSemaine.java 2008-07-04 08:59:20 UTC (rev 3668) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sipor/SiporFrameSaisieHorairesCompletSemaine.java 2008-07-08 14:19:35 UTC (rev 3669) @@ -201,7 +201,6 @@ if (horaire_.lundiCreneau1HeureArrivee != -1 && horaire_.lundiCreneau2HeureArrivee != -1 && horaire_.lundiCreneau3HeureArrivee != -1 && horaire_.lundiCreneau1HeureDep != -1 -// FIXME pourquoi un seul & && horaire_.lundiCreneau2HeureDep != -1 && horaire_.lundiCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.lundicreneau1debut_.setText("" + (float) horaire_.lundiCreneau1HeureDep); @@ -510,7 +509,6 @@ if (horaire_.mardiCreneau1HeureArrivee != -1 && horaire_.mardiCreneau2HeureArrivee != -1 && horaire_.mardiCreneau3HeureArrivee != -1 && horaire_.mardiCreneau1HeureDep != -1 -// FIXME pourquoi un seul & && horaire_.mardiCreneau2HeureDep != -1 && horaire_.mardiCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.mardicreneau1debut_.setText("" + (float) horaire_.mardiCreneau1HeureDep); @@ -823,7 +821,6 @@ if (horaire_.mercrediCreneau1HeureArrivee != -1 && horaire_.mercrediCreneau2HeureArrivee != -1 && horaire_.mercrediCreneau3HeureArrivee != -1 && horaire_.mercrediCreneau1HeureDep != -1 -// FIXME pourquoi un seul & && horaire_.mercrediCreneau2HeureDep != -1 && horaire_.mercrediCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.mercredicreneau1debut_.setText("" + (float) horaire_.mercrediCreneau1HeureDep); @@ -1135,7 +1132,6 @@ if (horaire_.jeudiCreneau1HeureArrivee != -1 && horaire_.jeudiCreneau2HeureArrivee != -1 && horaire_.jeudiCreneau3HeureArrivee != -1 && horaire_.jeudiCreneau1HeureDep != -1 -// FIXME pourquoi un seul & && horaire_.jeudiCreneau2HeureDep != -1 && horaire_.jeudiCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.jeudicreneau1debut_.setText("" + (float) horaire_.jeudiCreneau1HeureDep); @@ -1448,7 +1444,6 @@ if (horaire_.vendrediCreneau1HeureArrivee != -1 && horaire_.vendrediCreneau2HeureArrivee != -1 && horaire_.vendrediCreneau3HeureArrivee != -1 && horaire_.vendrediCreneau1HeureDep != -1 -// FIXME pourquoi un seul & && horaire_.vendrediCreneau2HeureDep != -1 && horaire_.vendrediCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.vendredicreneau1debut_.setText("" + (float) horaire_.vendrediCreneau1HeureDep); @@ -1759,7 +1754,6 @@ if (horaire_.samediCreneau1HeureArrivee != -1 && horaire_.samediCreneau2HeureArrivee != -1 && horaire_.samediCreneau3HeureArrivee != -1 && horaire_.samediCreneau1HeureDep != -1 -// FIXME pourquoi un seul & && horaire_.samediCreneau2HeureDep != -1 && horaire_.samediCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.screneau1debut_.setText("" + (float) horaire_.samediCreneau1HeureDep); @@ -2069,7 +2063,6 @@ if (horaire_.dimancheCreneau1HeureArrivee != -1 && horaire_.dimancheCreneau2HeureArrivee != -1 && horaire_.dimancheCreneau3HeureArrivee != -1 && horaire_.dimancheCreneau1HeureDep != -1 -// FIXME pourquoi un seul & && horaire_.dimancheCreneau2HeureDep != -1 && horaire_.dimancheCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.dcreneau1debut_.setText("" + (float) horaire_.dimancheCreneau1HeureDep); @@ -2377,7 +2370,6 @@ if (horaire_.ferieCreneau1HeureArrivee != -1 && horaire_.ferieCreneau2HeureArrivee != -1 && horaire_.ferieCreneau3HeureArrivee != -1 && horaire_.ferieCreneau1HeureDep != -1 -// FIXME pourquoi un seul & && horaire_.ferieCreneau2HeureDep != -1 && horaire_.ferieCreneau3HeureDep != -1) { // valeur recuperee de la structure horaire this.fcreneau1debut_.setText("" + (float) horaire_.ferieCreneau1HeureDep); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-07-04 08:59:15
|
Revision: 3668 http://fudaa.svn.sourceforge.net/fudaa/?rev=3668&view=rev Author: bmarchan Date: 2008-07-04 01:59:20 -0700 (Fri, 04 Jul 2008) Log Message: ----------- Am?\195?\169lioration sur les noms d'objets cr?\195?\169?\195?\169s Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-07-03 13:19:32 UTC (rev 3667) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-07-04 08:59:20 UTC (rev 3668) @@ -93,12 +93,13 @@ } /** - * Un attribut nom, non atomique. + * Un attribut nom, global. */ public final static GISAttributeString TITRE = new GISAttributeString(CtuluLib.getS("Nom")) { + /** Numero d'identifiant, incr\xE9ment\xE9 \xE0 chaque nouvelle cr\xE9ation de nom. */ + private int numid_=0; + String def_ = CtuluLib.getS("<Defaut>"); - String def_ = CtuluLib.getS("_Nouveau"); - protected Object readResolve() { return TITRE; } @@ -106,7 +107,18 @@ public String getID() { return "ATTRIBUTE_TITLE"; } + + protected Object createGlobalValues(final Object _initValues) { + Object r = _initValues; + // Si la valeur en entr\xE9e est la valeur par d\xE9faut, alors une nouvelle valeur en sortie est cr\xE9\xE9e. + // Ceci permet d'affecter automatiquement un nom nouveau \xE0 une g\xE9om\xE9trie cr\xE9\xE9e. + if (r == null || def_.equals(r)) { + r="Geom_"+(++numid_); + } + return r; + } + public Object getDefaultValue() { return def_; } Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java 2008-07-03 13:19:32 UTC (rev 3667) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java 2008-07-04 08:59:20 UTC (rev 3668) @@ -112,7 +112,7 @@ * * @param _init Les valeurs d'initialisation, dans l'ordre et au nombre des mod\xE8les d'attributs. * Si null, les valeurs par d\xE9faut sont affect\xE9es (voir {@link GISAttributeInterface#getDefaultValue()}) - * @param _dest La g\xE9ometrie polyligne ou polygone. + * @param _dest La g\xE9ometrie. * @param _isClosed Param\xE8tre inutilis\xE9. * @return */ Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-07-03 13:19:32 UTC (rev 3667) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-07-04 08:59:20 UTC (rev 3668) @@ -765,6 +765,7 @@ Object[] vals=new Object[geometries_.getNbAttributes()]; for (int iatt=0; iatt<geometries_.getNbAttributes(); iatt++) { Object val=geometries_.getValue(iatt,idx); + if (geometries_.getAttribute(iatt).equals(GISAttributeConstants.TITRE)) val=CtuluLib.getS("Copie de")+" "+val; int nbpt=geom.getNumPoints(); vals[iatt]=geometries_.getAttribute(iatt).createDataForGeom(val, nbpt); } Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-07-03 13:19:32 UTC (rev 3667) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-07-04 08:59:20 UTC (rev 3668) @@ -823,6 +823,7 @@ Object[] vals=new Object[geometries_.getNbAttributes()]; for (int iatt=0; iatt<geometries_.getNbAttributes(); iatt++) { Object val=geometries_.getValue(iatt,idx); + if (geometries_.getAttribute(iatt).equals(GISAttributeConstants.TITRE)) val=CtuluLib.getS("Copie de")+" "+val; int nbpt=geom.getNumPoints(); vals[iatt]=geometries_.getAttribute(iatt).createDataForGeom(val, nbpt); } Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java 2008-07-03 13:19:32 UTC (rev 3667) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java 2008-07-04 08:59:20 UTC (rev 3668) @@ -25,7 +25,7 @@ import org.fudaa.ctulu.CtuluLibGeometrie; import org.fudaa.ctulu.CtuluLibString; import org.fudaa.ctulu.CtuluListSelectionInterface; -import org.fudaa.ctulu.gis.GISMultiPoint; +import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISPoint; import org.fudaa.ctulu.gis.GISZoneCollection; import org.fudaa.ctulu.gis.GISZoneCollectionPoint; @@ -247,6 +247,7 @@ Object[] vals=new Object[pts_.getNbAttributes()]; for (int iatt=0; iatt<pts_.getNbAttributes(); iatt++) { Object val=pts_.getValue(iatt,idx); + if (pts_.getAttribute(iatt).equals(GISAttributeConstants.TITRE)) val=CtuluLib.getS("Copie de")+" "+val; int nbpt=geom.getNumPoints(); vals[iatt]=pts_.getAttribute(iatt).createDataForGeom(val, nbpt); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-07-03 13:19:24
|
Revision: 3667 http://fudaa.svn.sourceforge.net/fudaa/?rev=3667&view=rev Author: bmarchan Date: 2008-07-03 06:19:32 -0700 (Thu, 03 Jul 2008) Log Message: ----------- Ticket#22 : Action Split applicable aussi aux multipoints. Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditable.java branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java Added Paths: ----------- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneSplitAction.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java 2008-07-01 14:44:38 UTC (rev 3666) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java 2008-07-03 13:19:32 UTC (rev 3667) @@ -58,6 +58,18 @@ } /** + * @return La liste de selection des atomiques pour la g\xE9om\xE9trie unique s\xE9lectionn\xE9e. <code>null</code> si plusieurs g\xE9om\xE9tries + * ou pas en mode atomique. + */ + public CtuluListSelectionInterface getUniqueAtomicSelection() { + if (!ZScene.this.isAtomicMode()) return null; + int idGeom=getUniqueSelectedIdx(); + if (idGeom==-1) return null; + + return ZScene.this.getLayerSelectionMulti().getSelection(idGeom); + } + + /** * @return Le nombre d'atomiques s\xE9lectionn\xE9s, ou 0 si mode global. */ public int getNbAtomicSelected() { Added: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneSplitAction.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneSplitAction.java (rev 0) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneSplitAction.java 2008-07-03 13:19:32 UTC (rev 3667) @@ -0,0 +1,72 @@ +/* + * @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.ebli.calque.action; + +import java.awt.event.ActionEvent; + +import javax.swing.Action; + +import org.fudaa.ctulu.CtuluLib; +import org.fudaa.ctulu.gis.GISMultiPoint; +import org.fudaa.ctulu.gis.GISPolyligne; +import org.fudaa.ebli.calque.ZScene; +import org.fudaa.ebli.calque.ZScene.SceneSelectionHelper; +import org.fudaa.ebli.calque.edition.ZCalqueEditable; +import org.fudaa.ebli.calque.edition.ZSceneEditor; +import org.fudaa.ebli.commun.EbliActionSimple; + +import com.memoire.bu.BuResource; + +/** + * Une action pour scinder une g\xE9om\xE9trie sur le sommet d\xE9sign\xE9. Valable uniquement sur des calques + * {@link ZCalqueEditable}. Ne fonctionne pas sur des polygones. + * @author Bertrand Marchand + */ +public class SceneSplitAction extends EbliActionSimple { + ZSceneEditor editor_; + + public SceneSplitAction(ZSceneEditor _editor) { + super(BuResource.BU.getString("Scinder"), BuResource.BU.getIcon("couperligne"), "GIS_SPLIT"); + editor_=_editor; + setDefaultToolTip(CtuluLib.getS("Scinder la g\xE9om\xE9trie")); + } + + public void actionPerformed(final ActionEvent _e) { + editor_.splitSelectedObject(); + } + + public void updateStateBeforeShow() { + ZScene scn=editor_.getScene(); + SceneSelectionHelper hlp=editor_.getScene().getSelectionHelper(); + int idGeom=-1; + + boolean b=true; + // Si la selection n'est pas null et atomique + b=b && !scn.isSelectionEmpty() && scn.isAtomicMode(); + // Si la selection est sur le m\xEAme objet. + b=b && (idGeom=hlp.getUniqueSelectedIdx())!=-1; + // Si le nombre d'atomiques est de 2 cons\xE9cutifs sur une g\xE9om\xE9trie de type polyligne. + if (b && scn.getObject(idGeom) instanceof GISPolyligne) { + b=b && hlp.getNbAtomicSelected()==2; + b=b && Math.abs(hlp.getUniqueAtomicSelection().getMinIndex()-hlp.getUniqueAtomicSelection().getMaxIndex())==1; + if (b) putValue(Action.NAME, BuResource.BU.getString("Scinder la polyligne")); + } + // Si ou est sur un multipoint + else { + b=b && (scn.getObject(idGeom) instanceof GISMultiPoint); + if (b) putValue(Action.NAME, BuResource.BU.getString("Scinder le multipoint")); + } + if (!b) putValue(Action.NAME, BuResource.BU.getString("Scinder")); + + setEnabled(b); + } + + public String getEnableCondition() { + return CtuluLib.getS("S\xE9lectionner 2 sommets consecutifs d'une polyligne<br>ou les sommets d'un multipoint"); + } +} Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneSplitAction.java ___________________________________________________________________ Name: svn:eol-style + native Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditable.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditable.java 2008-07-01 14:44:38 UTC (rev 3666) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditable.java 2008-07-03 13:19:32 UTC (rev 3667) @@ -68,6 +68,14 @@ public boolean copySelectedObjects(CtuluCommandContainer _cmd, CtuluUI _ui); /** + * Scinde une geometrie. + * @param _cmd le receveur de commande + * @param _ui l'interface utilisateur + * @return true is commande reussie + */ + public boolean splitSelectedObject(CtuluCommandContainer _cmd, CtuluUI _ui); + + /** * Retourne si la forme d'un certain type peut \xEAtre ajout\xE9e. * @param _typeForme Le type de forme * @return true si ce type de forme peut \xEAtre ajout\xE9. Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-07-01 14:44:38 UTC (rev 3666) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-07-03 13:19:32 UTC (rev 3667) @@ -63,7 +63,7 @@ * @param _cmd La pile de commandes. * @return true si le la polyligne a \xE9t\xE9 scind\xE9e. */ - public boolean splitGeometry(final CtuluCommandContainer _cmd) { + public boolean splitSelectedObject(CtuluCommandContainer _cmd, CtuluUI _ui) { if (isSelectionEmpty() || !isAtomicMode()) return false; int idxLine=selectionMulti_.getIdxSelected()[0]; Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java 2008-07-01 14:44:38 UTC (rev 3666) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java 2008-07-03 13:19:32 UTC (rev 3667) @@ -203,6 +203,22 @@ } /** + * Scinde en 2 une multipoint dont plusieurs sommets sont s\xE9lectionn\xE9s. Les attributs sont copi\xE9s. + * @param _cmd La pile de commandes. + * @return true si le multipoint a \xE9t\xE9 scind\xE9e. + */ + public boolean splitSelectedObject(CtuluCommandContainer _cmd, CtuluUI _ui) { + if (isSelectionEmpty() || !isAtomicMode()) return false; + + int idxGeom=selectionMulti_.getIdxSelected()[0]; + int[] idxSels=selectionMulti_.get(idxGeom).getSelectedIndex(); + + // On vide la selection, le multipoint est supprim\xE9es par le split. + clearSelection(); + return getMultiPointModel().splitGeometry(idxGeom, idxSels, _cmd)!=null; + } + + /** * Dessine le deplacement pour les sommets selectionn\xE9s. * @param _g2d Le contexte graphique. * @param _dx Le delta suivant X Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java 2008-07-01 14:44:38 UTC (rev 3666) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java 2008-07-03 13:19:32 UTC (rev 3667) @@ -288,4 +288,9 @@ public final void setEditor(final ZEditorInterface _editor) { editor_ = _editor; } + + /* Sans objet */ + public boolean splitSelectedObject(CtuluCommandContainer _cmd, CtuluUI _ui) { + return false; + } } Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java 2008-07-01 14:44:38 UTC (rev 3666) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java 2008-07-03 13:19:32 UTC (rev 3667) @@ -102,7 +102,7 @@ CtuluCommandManager mng_; - ZSceneEditor sceneEditor_=null; + protected ZSceneEditor sceneEditor_=null; ZCalqueDeplacement move_; @@ -168,17 +168,28 @@ return target_; } + public ZEditorDefault(final ZEbliCalquesPanel _panel) { + this(_panel,new ZSceneEditor(_panel.getScene())); + } + /** * @param _panel le panneau des calques */ - public ZEditorDefault(final ZEbliCalquesPanel _panel) { + public ZEditorDefault(final ZEbliCalquesPanel _panel, final ZSceneEditor _editor) { super(); panel_ = _panel; - sceneEditor_=new ZSceneEditor(panel_.getScene()); + sceneEditor_=_editor; // panel_.addKeyListener(this); buildDeletesAction(); EbliLib.updateMapKeyStroke(_panel, getDeleteActions()); + installSceneActions(); } + + /** + * Installation des actions de scene. En particulier, rend visible les actions de scene + * dans le menu contextuel de la fenetre 2D. + */ + protected void installSceneActions() {} private void activeCurrentState() { boolean updateDessinLayer = false; Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-07-01 14:44:38 UTC (rev 3666) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-07-03 13:19:32 UTC (rev 3667) @@ -18,7 +18,6 @@ import com.vividsolutions.jts.geom.CoordinateSequence; import com.vividsolutions.jts.geom.Envelope; import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.LineString; import com.memoire.bu.BuTable; import com.memoire.fu.FuLog; @@ -28,9 +27,11 @@ import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluLibString; +import org.fudaa.ctulu.CtuluListSelection; import org.fudaa.ctulu.CtuluListSelectionInterface; import org.fudaa.ctulu.CtuluUI; import org.fudaa.ctulu.collection.CtuluCollection; +import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISAttributeInterface; import org.fudaa.ctulu.gis.GISAttributeModel; import org.fudaa.ctulu.gis.GISAttributeModelDoubleArray; @@ -531,6 +532,86 @@ } /** + * Scinde en 2 un multipoint. Les attributs globaux sont recopi\xE9es dans chacune des 2 + * polylignes, les attributs atomiques sont dispatch\xE9s.<br> + * Si tous les points du multipoint sont selectionn\xE9s, alors aucun split n'est r\xE9alis\xE9. + * + * @param _geomIdx L'index de geometrie. + * @param _idx Les indices des sommets de multipoints. + * @param _cmd Le conteneur de commandes. + * @return Les indices des 2 nouvelles g\xE9om\xE9tries cr\xE9\xE9es si tout s'est bien pass\xE9, null sinon. + */ + public int[] splitGeometry(final int _geomIdx, final int[] _idx, final CtuluCommandContainer _cmd){ + if (geometries_ == null) { + return null; + } + GISMultiPoint geom=(GISMultiPoint)geometries_.getGeometry(_geomIdx); // Old g\xE9ometrie + if (geom==null) return null; + CoordinateSequence cgeom=geom.getCoordinateSequence(); + if (_idx.length<0 || _idx.length>=cgeom.size()) return null; + + final CtuluCommandComposite cmp = new CtuluCommandComposite(); + CtuluListSelection sel=new CtuluListSelection(_idx); + + // Les coordonn\xE9es + Coordinate[] cgeom1=new Coordinate[_idx.length]; + Coordinate[] cgeom2=new Coordinate[cgeom.size()-cgeom1.length]; + int idgeom1=0; + int idgeom2=0; + for (int i=0; i<cgeom.size(); i++) { + if (sel.isSelected(i)) + cgeom1[idgeom1++]=cgeom.getCoordinateCopy(i); + else + cgeom2[idgeom2++]=cgeom.getCoordinateCopy(i); + } + + // Les datas + Object[] datageom1=new Object[getAttributeNb()]; + Object[] datageom2=new Object[getAttributeNb()]; + for (int i=0; i<getAttributeNb(); i++) { + GISAttributeModel attmodel=geometries_.getModel(i); + if (attmodel.getAttribute().isAtomicValue()) { + GISAttributeModel atomModel1=attmodel.getAttribute().createAtomicModel(null,cgeom1.length); + GISAttributeModel atomModel2=attmodel.getAttribute().createAtomicModel(null,cgeom2.length); + + idgeom1=0; + idgeom2=0; + for (int j=0; j<cgeom.size(); j++) { + Object data=((GISAttributeModel)attmodel.getObjectValueAt(_geomIdx)).getObjectValueAt(j); + if (sel.isSelected(j)) + atomModel1.setObject(idgeom1++,data,null); + else + atomModel2.setObject(idgeom2++,data,null); + } + datageom1[i]=atomModel1; + datageom2[i]=atomModel2; + } + else { + // Cas particulier de l'attribut TITRE => <TITRE_GEOM>_1 et <TITRE_GEOM>_2 + if (attmodel.getAttribute()==GISAttributeConstants.TITRE) { + String name=(String)attmodel.getObjectValueAt(_geomIdx); + datageom1[i]=name+"_1"; + datageom2[i]=name+"_2"; + } + else { + datageom1[i]=attmodel.getAttribute().createDataForGeom(attmodel.getObjectValueAt(_geomIdx),1); + datageom2[i]=attmodel.getAttribute().createDataForGeom(attmodel.getObjectValueAt(_geomIdx),1); + } + } + } + + // Remplacement dans la collection. + geometries_.removeGeometries(new int[]{_geomIdx}, cmp); + geometries_.addGeometry(GISGeometryFactory.INSTANCE.createMultiPoint(cgeom1), datageom1, cmp); + geometries_.addGeometry(GISGeometryFactory.INSTANCE.createMultiPoint(cgeom2), datageom2, cmp); + + if (_cmd != null) { + _cmd.addCmd(cmp.getSimplify()); + } + return new int[]{geometries_.getNbGeometries()-2,geometries_.getNbGeometries()-1}; + } + + /** * @param _selection la selection * @param _dx dx reel * @param _dy dy reel Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java 2008-07-01 14:44:38 UTC (rev 3666) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java 2008-07-03 13:19:32 UTC (rev 3667) @@ -7,8 +7,6 @@ */ package org.fudaa.ebli.calque.edition; -import java.lang.reflect.Method; - import org.fudaa.ctulu.CtuluCommandComposite; import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.CtuluCommandManager; @@ -99,6 +97,18 @@ } } + /** + * Scinde une g\xE9om\xE9trie en 2 distinctes.<p> + * Principe : <br> + * Pour un multipoint, selection de plusieurs sommets d'un multipoint, et s\xE9paration.<br> + * Pour une polyligne, selection de 2 sommets cons\xE9cutifs, et s\xE9paration. + */ + public void splitSelectedObject() { + int idx=getScene().getLayerSelectionMulti().isSelectionInOneBloc(); + ZCalqueEditable cq=(ZCalqueEditable)getScene().getLayerForId(idx); + cq.splitSelectedObject(mng_,ui_); + } + protected void methodNotImplemented() { StackTraceElement stel=new Throwable().getStackTrace()[1]; String name=stel.getClassName()+"."+stel.getMethodName(); Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java 2008-07-01 14:44:38 UTC (rev 3666) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java 2008-07-03 13:19:32 UTC (rev 3667) @@ -57,7 +57,6 @@ FSigEditor editor=(FSigEditor)getEditor(); ArrayList vacts=new ArrayList(); vacts.addAll(Arrays.asList(editor.getEditAction())); - vacts.add(editor.getSplitAction()); vacts.add(editor.getJoinAction()); vacts.add(null); vacts.add(editor.getImportAction()); Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java 2008-07-01 14:44:38 UTC (rev 3666) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java 2008-07-03 13:19:32 UTC (rev 3667) @@ -21,9 +21,6 @@ import com.memoire.bu.BuWizardDialog; import com.memoire.fu.Fu; import com.memoire.fu.FuLog; -import com.vividsolutions.jts.geom.LineString; - -import org.apache.tools.ant.taskdefs.condition.IsSet; import org.fudaa.ctulu.CtuluCommandManager; import org.fudaa.ctulu.CtuluIOOperationSynthese; import org.fudaa.ctulu.CtuluRunnable; @@ -47,15 +44,14 @@ import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; -import org.fudaa.ebli.calque.ZCalqueLigneBrisee; import org.fudaa.ebli.calque.ZEbliCalquesPanel; import org.fudaa.ebli.calque.ZModeleGeom; import org.fudaa.ebli.calque.edition.ZCalqueEditable; import org.fudaa.ebli.calque.edition.ZCalqueEditionGroup; import org.fudaa.ebli.calque.edition.ZCalqueLigneBriseeEditable; import org.fudaa.ebli.calque.edition.ZEditorDefault; +import org.fudaa.ebli.calque.edition.ZSceneEditor; import org.fudaa.ebli.commun.EbliActionSimple; -import org.fudaa.ebli.commun.EbliListeSelectionMultiInterface; import org.fudaa.ebli.geometrie.GrBoite; import org.fudaa.fudaa.commun.FudaaLib; @@ -71,6 +67,14 @@ /** * @param _panel */ + public FSigEditor(final ZEbliCalquesPanel _panel, final ZSceneEditor _editor, final CtuluCommandManager _cmd) { + super(_panel,_editor); + setMng(_cmd); + } + + /** + * @param _panel + */ public FSigEditor(final ZEbliCalquesPanel _panel, final CtuluCommandManager _cmd) { super(_panel); setMng(_cmd); @@ -136,7 +140,7 @@ dialog.pack(); dialog.setModal(true); dialog.setLocationRelativeTo(getPanel()); - dialog.show(); + dialog.setVisible(true); } @@ -160,7 +164,7 @@ final Map filterExporter = new HashMap(5);// pour l'instant ..... filterExporter.put(sx, new FSigLayerExporter.ToSinusX()); - filterExporter.put(st, new FSigLayerExporter.ToSt()); + filterExporter.put(st, new FSigLayerExporter.ToRubar()); final Map dataStores = GISExportDataStoreFactory.buildFileFilterMap(false); if (dataStores.size() == 0) { if (FuLog.isTrace()) { @@ -205,8 +209,6 @@ EbliActionSimple importAction_; - EbliActionSimple splitAction_; - EbliActionSimple joinAction_; /** @@ -241,17 +243,6 @@ } /** - * Une action pour scinder une polyligne. N'est pas dans les actions par defaut. - * @return L'action - */ - public EbliActionSimple getSplitAction() { - if (splitAction_ == null) { - splitAction_ = new SplitAction(); - } - return splitAction_; - } - - /** * Une action pour joindre 2 polylignes. N'est pas dans les actions par defaut. * @return L'action */ @@ -350,45 +341,6 @@ } /** - * Une action pour scinder une polyligne sur le sommet d\xE9sign\xE9. Valable uniquement sur des calques - * {@link ZCalqueLigneBriseeEditable}. Ne fonctionne pas sur des polygones. - * @author Bertrand Marchand - */ - private class SplitAction extends EbliActionSimple { - - protected SplitAction() { - super(BuResource.BU.getString("Scinder"), BuResource.BU.getIcon("couperligne"), "GIS_SPLIT"); - setDefaultToolTip(FudaaLib.getS("Scinder la polyligne")); - } - - public void actionPerformed(final ActionEvent _e) { - splitSelectedLayer(); - } - - public void updateStateBeforeShow() { - if (Fu.DEBUG && FuLog.isDebug()) { - FuLog.debug("FTR gis target= " + FSigEditor.this.getTarget()); - } - - ZCalqueLigneBriseeEditable cq=null; - if (getSupport().getCalqueActif() instanceof ZCalqueLigneBriseeEditable) cq=(ZCalqueLigneBriseeEditable)getSupport().getCalqueActif(); - EbliListeSelectionMultiInterface multiSelect_=null; - super.setEnabled(cq!=null && - FSigEditor.this.isEditable(cq) && - cq.isAtomicMode() && - (multiSelect_=cq.getLayerSelectionMulti())!=null && - multiSelect_.getNbSelectedItem()==2 && - Math.abs(multiSelect_.getSelection(multiSelect_.getIdxSelected()[0]).getMinIndex()-multiSelect_.getSelection(multiSelect_.getIdxSelected()[0]).getMaxIndex())==1 && - // Uniquement les polylignes. - (((GISZoneCollectionLigneBrisee)cq.getModele().getGeomData()).getGeometry(multiSelect_.isSelectionInOneBloc()) instanceof GISPolyligne)); - } - - public String getEnableCondition() { - return FudaaLib.getS("S\xE9lectionner 2 sommets consecutifs d'une polyligne"); - } - } - - /** * Une action pour joindre 2 polylignes \xE0 partir de leurs extremit\xE9s. Valable uniquement sur des calques * {@link ZCalqueLigneBriseeEditable}. Ne fonctionne pas sur des polygones. * @author Bertrand Marchand @@ -446,17 +398,7 @@ ZCalqueLigneBriseeEditable cq=(ZCalqueLigneBriseeEditable)getSupport().getCalqueActif(); cq.joinGeometries(getMng()); } - - /** - * Scinde une polyligne en 2 polylignes distinctes. - */ - protected void splitSelectedLayer() { - if (!(getSupport().getCalqueActif() instanceof ZCalqueLigneBriseeEditable)) return; - ZCalqueLigneBriseeEditable cq=(ZCalqueLigneBriseeEditable)getSupport().getCalqueActif(); - cq.splitGeometry(getMng()); - } - protected boolean canExportSelectedLayer() { final BCalque[] parent = super.getPanel().getArbreCalqueModel().getSelection(); if (parent == null) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-07-01 14:45:05
|
Revision: 3666 http://fudaa.svn.sourceforge.net/fudaa/?rev=3666&view=rev Author: bmarchan Date: 2008-07-01 07:44:38 -0700 (Tue, 01 Jul 2008) Log Message: ----------- Bug#30 : Cr?\195?\169ation/modification semis de points puis sauvegarde : le Z est a pr?\195?\169sent restitu?\195?\169. Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java Added Paths: ----------- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISSequencesCoordinateSequence.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java 2008-06-27 15:25:48 UTC (rev 3665) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java 2008-07-01 14:44:38 UTC (rev 3666) @@ -15,22 +15,20 @@ /** * Un multipoint est un ensemble de points, qui peut \xEAtre r\xE9duit \xE0 1 point seulement. - * @author Fred Deniger + * @author Bertrand Marchand * @version $Id: GISMultiPoint.java,v 1.8.6.2 2008-04-01 17:09:56 bmarchan Exp $ */ public class GISMultiPoint extends MultiPoint implements GISGeometry { - CoordinateSequence seq_; + CoordinateSequence seq_=null; protected long id_=GISGeometryFactory.INSTANCE.getNewId(); public GISMultiPoint() { super(null, GISGeometryFactory.INSTANCE); - seq_=GISGeometryFactory.INSTANCE.getCoordinateSequenceFactory().create(this.getCoordinates()); } public GISMultiPoint(final Point[] _points) { super(_points, GISGeometryFactory.INSTANCE); - seq_=GISGeometryFactory.INSTANCE.getCoordinateSequenceFactory().create(this.getCoordinates()); } public long getId() { @@ -43,9 +41,18 @@ /** * Cette methode est ajout\xE9e pour des questions de performance lors du rafraichissement de multipoints - * avec beaucoup de points. + * avec beaucoup de points. La sequence agit directement sur les implementations internes des Point. */ public CoordinateSequence getCoordinateSequence() { + if (seq_==null) { + // Doit g\xE9rer des CoordinateSequence[]. Sinon, un getCoordinateSequence().setOrdinate(i,2) n'affecte pas le Z du multipoint, + // mais le Z d'une copie des coordonn\xE9es du multipoint. +// seq_=GISGeometryFactory.INSTANCE.getCoordinateSequenceFactory().create(this.getCoordinates()); + Point[] pts=new Point[getNumGeometries()]; + for (int i=0; i<getNumGeometries(); i++) + pts[i]=(Point)getGeometryN(i); + seq_=new GISSequencesCoordinateSequence(pts); + } return seq_; } @@ -55,7 +62,6 @@ */ public GISMultiPoint(final Point[] _points, final GeometryFactory _factory) { super(_points, _factory); - seq_=GISGeometryFactory.INSTANCE.getCoordinateSequenceFactory().create(this.getCoordinates()); } public boolean fillListWithPoint(final GISCollectionPointInteface _listToFill) { Added: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISSequencesCoordinateSequence.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISSequencesCoordinateSequence.java (rev 0) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISSequencesCoordinateSequence.java 2008-07-01 14:44:38 UTC (rev 3666) @@ -0,0 +1,119 @@ +/* + * @creation 18 mars 2005 + * @modification $Date: 2006-09-19 14:36:53 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.ctulu.gis; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.CoordinateSequence; +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Point; + +/** + * Une sequence de coordonn\xE9es bas\xE9e sur des sequences unique.<p> + * + * Ceci permet notamment de modifier les coordonn\xE9es d'un {@link GISMultiPoint} qui s'appuie sur les <code>Point</code>. + * La modification des coordonn\xE9es d'un {@link Point} ne ne peut se faire qu'au travers de sa {@link CoordinateSequence}, + * la Coordinate n'\xE9tant qu'une copie de son impl\xE9mentation interne. + * + * @author Bertrand Marchand + * @version $Id: GISCoordinateSequenceUnique.java,v 1.9 2006-09-19 14:36:53 deniger Exp $ + */ +public class GISSequencesCoordinateSequence implements CoordinateSequence { + + CoordinateSequence[] seqs_; + + /** + * Construction a partir de sequences. Les sequences doivent \xEAtre des {@link GISCoordinateSequenceUnique} (non control\xE9). + * @param _seqs Les s\xE9quences. + */ + public GISSequencesCoordinateSequence(CoordinateSequence[] _seqs) { + seqs_=_seqs; + } + + /** + * Construction a partir de points. + * @param _pts Les points. + */ + public GISSequencesCoordinateSequence(Point[] _pts) { + seqs_=new CoordinateSequence[_pts.length]; + for (int i=0; i<_pts.length; i++) { + seqs_[i]=_pts[i].getCoordinateSequence(); + } + } + + public int getDimension() { + return 3; + } + + public Object clone() { + return new GISSequencesCoordinateSequence(seqs_); + } + + public Envelope expandEnvelope(final Envelope _env) { + for (int i=0; i<seqs_.length; i++) { + _env.expandToInclude(seqs_[i].getX(0),seqs_[i].getY(0)); + } + return _env; + } + + public void getCoordinate(final int _index, final Coordinate _coord) { + _coord.x = seqs_[_index].getOrdinate(0,0); + _coord.y = seqs_[_index].getOrdinate(0,1); + _coord.z = seqs_[_index].getOrdinate(0,2); + } + + public Coordinate getCoordinate(final int _index) { + return seqs_[_index].getCoordinate(0); + } + + public Coordinate getCoordinateCopy(final int _index) { + return (Coordinate)getCoordinate(_index).clone(); + } + + public double getOrdinate(final int _index, final int _ordinateIndex) { + switch (_ordinateIndex) { + case CoordinateSequence.X: + case CoordinateSequence.Y: + case CoordinateSequence.Z: + return seqs_[_index].getOrdinate(0, _ordinateIndex); + default: + throw new IllegalArgumentException("bad ordinate"); + } + } + + public double getX(final int _index) { + return seqs_[_index].getOrdinate(0,0); + } + + public double getY(final int _index) { + return seqs_[_index].getOrdinate(0,1); + } + + public void setOrdinate(final int _index, final int _ordinateIndex, final double _value) { + switch (_ordinateIndex) { + case CoordinateSequence.X: + case CoordinateSequence.Y: + case CoordinateSequence.Z: + seqs_[_index].setOrdinate(0,_ordinateIndex,_value); + break; + default: + throw new IllegalArgumentException("bad ordinate"); + } + } + + public int size() { + return seqs_.length; + } + + public Coordinate[] toCoordinateArray() { + Coordinate[] coords=new Coordinate[seqs_.length]; + for (int i=0; i<coords.length; i++) { + coords[i]=seqs_[i].getCoordinate(0); + } + return coords; + } +} \ No newline at end of file Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISSequencesCoordinateSequence.java ___________________________________________________________________ Name: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-06-27 15:25:45
|
Revision: 3665 http://fudaa.svn.sourceforge.net/fudaa/?rev=3665&view=rev Author: bmarchan Date: 2008-06-27 08:25:48 -0700 (Fri, 27 Jun 2008) Log Message: ----------- Track#32, Track#33 : Lecture des lignes directrices + des noms de geometries Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSt.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java 2008-06-27 15:22:32 UTC (rev 3664) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java 2008-06-27 15:25:48 UTC (rev 3665) @@ -11,21 +11,27 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.LineString; +import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluLibString; import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISAttributeInterface; +import org.fudaa.ctulu.gis.GISAttributeModel; +import org.fudaa.ctulu.gis.GISGeometry; import org.fudaa.ctulu.gis.GISLib; import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; import org.fudaa.dodico.fortran.FileOpReadCharSimpleAbstract; /** - * @author fred deniger + * Un reader pour un fichier Rubar (ST, ou CN). + * @author fred deniger, Bertrand Marchand * @version $Id: RubarStReader.java,v 1.5 2007-06-11 13:07:05 deniger Exp $ */ public class RubarStReader extends FileOpReadCharSimpleAbstract { @@ -48,7 +54,14 @@ return _s.equals(sep_) || _s.equals(sep1_); } + /** + * Lit les profils et les lignes directrices. + * @return Un tableau GISZoneCollectionLigneBrisee[2]. [0] : la collection des profils, [1] : la collection de lignes directrices. + */ protected Object internalRead() { + // Remarque : Cette impl\xE9mentation empeche des noms semblables (les noms sont stock\xE9s comme cl\xE9 de Map) sur les lignes + // directrices (ce qui peut \xEAtre normal puisque c'est le m\xEAme nom en un point de chaque profil qui permet de constituer + // la ligne. if (in_ == null) { return null; } @@ -58,15 +71,21 @@ in_.setJumpCommentLine(true); final List lignes = new ArrayList(200); + final List names=new ArrayList(200); final List coordinatesEnCours = new ArrayList(); + // Contient les listes de coordonn\xE9es pour les lignes directrices (Map<String,ArrayList<Coordinate>> en Java 1.5) + final Map mdirs=new HashMap(20); - final int[] fmt = new int[] { 13, 13, 13, 3 }; + final int[] fmt = new int[] { 13, 13, 13, 1, 3 }; + final int[] fmt1Line=new int[]{6,6,6,6,13,1,42}; Coordinate last = null; + String name=""; try { while (true) { if (isSt_) { - in_.readLine(); + in_.readFields(fmt1Line); + name=in_.stringField(6).trim(); } String first = CtuluLibString.EMPTY_STRING; String sec = CtuluLibString.EMPTY_STRING; @@ -78,6 +97,18 @@ coordinatesEnCours.add(coordinate); } last = coordinate; + + // Ligne directrice eventuelle. Pas de controle que la ligne directrice est bien sur tous les profils. + String namedir=in_.stringField(4).trim(); + if (!"".equals(namedir)) { + List coordldir=(List)mdirs.get(namedir); + if (coordldir==null) { + coordldir=new ArrayList(200); + mdirs.put(namedir,coordldir); + } + coordldir.add(coordinate.clone()); + } + in_.readFields(fmt); first = in_.stringField(0); sec = in_.stringField(1); @@ -85,6 +116,12 @@ final LineString str = GISLib.createLineOrLinearFromList(coordinatesEnCours); if (str != null) { lignes.add(str); + if ("".equals(name)) { + names.add(CtuluLib.getS("_P")+((GISGeometry)str).getId()); + } + else { + names.add(name); + } } coordinatesEnCours.clear(); } @@ -96,14 +133,51 @@ final LineString str = GISLib.createLineOrLinearFromList(coordinatesEnCours); if (str != null) { lignes.add(str); + if ("".equals(name)) { + names.add(CtuluLib.getS("_P")+((GISGeometry)str).getId()); + } + else { + names.add(name); + } } + + GISZoneCollectionLigneBrisee[] ret=new GISZoneCollectionLigneBrisee[2]; + // Profils if (lignes.size() > 0) { - final GISZoneCollectionLigneBrisee res = new GISZoneCollectionLigneBrisee(null); - res.setAttributes(new GISAttributeInterface[] { GISAttributeConstants.BATHY }, null); - res.addAllLineStringClosedOrNode((LineString[]) lignes.toArray(new LineString[lignes.size()]), null); - res.postImport(0); - return res; + final GISZoneCollectionLigneBrisee zligs = new GISZoneCollectionLigneBrisee(null); + zligs.addAllLineStringClosedOrNode((LineString[]) lignes.toArray(new LineString[lignes.size()]), null); + zligs.setAttributes(new GISAttributeInterface[] { GISAttributeConstants.BATHY, GISAttributeConstants.TITRE}, null); + zligs.postImport(0); + + // Affectation de l'attribut titre. + GISAttributeModel attmod=zligs.getModel(GISAttributeConstants.TITRE); + for (int i=0; i<names.size(); i++) { + attmod.setObject(i,attmod.getAttribute().createDataForGeom(names.get(i),1),null); + } + ret[0]=zligs; } - return null; + + // Lignes directrices + if (mdirs.size()>0) { + final GISZoneCollectionLigneBrisee zdirs = new GISZoneCollectionLigneBrisee(null); + // Pour \xEAtre sur de la correspondance nom/coordonn\xE9es + String[] namedirs=(String[])mdirs.keySet().toArray(new String[0]); + LineString[] ldirs=new LineString[namedirs.length]; + for (int i=0; i<namedirs.length; i++) { + ldirs[i]=GISLib.createLineOrLinearFromList((List)(mdirs.get(namedirs[i]))); + } + + zdirs.addAllLineStringClosedOrNode(ldirs, null); + zdirs.setAttributes(new GISAttributeInterface[] { GISAttributeConstants.BATHY, GISAttributeConstants.TITRE}, null); + zdirs.postImport(0); + + // Affectation de l'attribut titre. + GISAttributeModel attmod=zdirs.getModel(GISAttributeConstants.TITRE); + for (int i=0; i<namedirs.length; i++) { + attmod.setObject(i,attmod.getAttribute().createDataForGeom(namedirs[i],1),null); + } + ret[1]=zdirs; + } + return ret; } } Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSt.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSt.java 2008-06-27 15:22:32 UTC (rev 3664) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSt.java 2008-06-27 15:25:48 UTC (rev 3665) @@ -52,17 +52,21 @@ _analyze.merge(op.getAnalyze()); return; } - final GISZoneCollectionLigneBrisee res = (GISZoneCollectionLigneBrisee) op.getSource(); - if (res==null || res.getNumGeometries() == 0) { - return; + final GISZoneCollectionLigneBrisee[] res = (GISZoneCollectionLigneBrisee[]) op.getSource(); + + boolean blines=false; + final GISVisitorCount counter=new GISVisitorCount(); + for (int i=0; i<res.length; i++) { + if (res[i]==null||res[i].getNumGeometries()==0) continue; + blines=true; + res[i].accept(counter); + _r.nbPoint_+=counter.nbPt_; + _r.nbPointTotal_+=counter.nbPt_; + _r.nbPolygones_+=counter.nbPolygone_; + _r.nbPolylignes_+=counter.nbPolyligne_; + _r.ligneModel_.add(res[i]); } - _r.addUsedAttributes(new GISAttributeInterface[] { GISAttributeConstants.BATHY }); - final GISVisitorCount counter = new GISVisitorCount(); - res.accept(counter); - _r.nbPoint_ += counter.nbPt_; - _r.nbPointTotal_ += counter.nbPt_; - _r.nbPolygones_ += counter.nbPolygone_; - _r.nbPolylignes_ += counter.nbPolyligne_; - _r.ligneModel_.add(res); + if (blines) + _r.addUsedAttributes(new GISAttributeInterface[]{GISAttributeConstants.BATHY, GISAttributeConstants.TITRE}); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-06-27 15:22:25
|
Revision: 3664 http://fudaa.svn.sourceforge.net/fudaa/?rev=3664&view=rev Author: bmarchan Date: 2008-06-27 08:22:32 -0700 (Fri, 27 Jun 2008) Log Message: ----------- Les attributs sont r?\195?\169cup?\195?\169r?\195?\169s sur les imports. Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java 2008-06-27 15:21:44 UTC (rev 3663) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java 2008-06-27 15:22:32 UTC (rev 3664) @@ -81,7 +81,7 @@ @Override protected void importData(ProgressionInterface _prog) { - final GISAttributeInterface[] attChosen = new GISAttributeInterface[]{GISAttributeConstants.BATHY}; + final GISAttributeInterface[] attChosen = new GISAttributeInterface[]{GISAttributeConstants.BATHY, GISAttributeConstants.TITRE}; data_.preload(attChosen, _prog); final CtuluCommandComposite cmp = new CtuluCommandComposite(); @@ -92,10 +92,7 @@ final int nb = pts.length; for (int i = 0; i < nb; i++) { final GISDataModel model = new GISDataModelPointMultiPointAdapter(pts[i]); - for (int j=0; j<model.getNumGeometries(); j++) - col.addGeometry(model.getGeometry(j),null, cmp); -// col.addAll(model, cmp, true); - col.postImport(0); + col.addAll(model, cmp, true); } } @@ -106,10 +103,7 @@ final int nb=lines.length; for (int i=0; i<nb; i++) { final GISDataModel model=GISDataModelFilterAdapter.buildLigneAdapter(lines[i], attChosen); - for (int j=0; j<model.getNumGeometries(); j++) - col.addGeometry(model.getGeometry(j),null, cmp); -// col.addAll(model, cmp, true); - col.postImport(0); + col.addAll(model, cmp, true); } } if (mng_!=null) mng_.addCmd(cmp.getSimplify()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-06-27 15:21:40
|
Revision: 3663 http://fudaa.svn.sourceforge.net/fudaa/?rev=3663&view=rev Author: bmarchan Date: 2008-06-27 08:21:44 -0700 (Fri, 27 Jun 2008) Log Message: ----------- Ajout d'une m?\195?\169thode getId() pour retourner identifiant unique sur g?\195?\169om?\195?\169trie. Ceci pour constituer un nom par d?\195?\169faut unique. Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometry.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryCollection.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryFactory.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPolygoneWithHole.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPolyligne.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPoint.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolygone.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolygoneWithHole.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolyligne.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISRien.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZone.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometry.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometry.java 2008-06-27 15:21:09 UTC (rev 3662) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometry.java 2008-06-27 15:21:44 UTC (rev 3663) @@ -13,6 +13,14 @@ * @version $Id: GISGeometry.java,v 1.2 2006-02-09 08:59:28 deniger Exp $ */ public interface GISGeometry { + + /** + * L'identifiant, unique pour une g\xE9om\xE9trie. Cet identifiant peut \xEAtre utilis\xE9 pour donner + * un nom par d\xE9faut \xE0 une g\xE9om\xE9trie. + * @see GISGeometryFactory + * @return L'identifiant de la g\xE9om\xE9trie. + */ + long getId(); boolean accept(GISVisitor _v); Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryCollection.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryCollection.java 2008-06-27 15:21:09 UTC (rev 3662) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryCollection.java 2008-06-27 15:21:44 UTC (rev 3663) @@ -24,5 +24,7 @@ public boolean accept(final GISVisitor _v) { return _v.visitGeometryCollection(this); } + + public long getId() { return -1; } } Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryFactory.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryFactory.java 2008-06-27 15:21:09 UTC (rev 3662) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryFactory.java 2008-06-27 15:21:44 UTC (rev 3663) @@ -16,15 +16,21 @@ */ public final class GISGeometryFactory extends GeometryFactory { - /** - * Singletion. - */ + /** Numero d'identifiant, incr\xE9ment\xE9 \xE0 chaque nouvelle cr\xE9ation de g\xE9om\xE9trie. + En cas de suppression de g\xE9om\xE9trie, ce num\xE9ro n'est pas d\xE9cr\xE9ment\xE9. */ + protected long numid_=0; + /** Singletion */ public static final GISGeometryFactory INSTANCE = new GISGeometryFactory(); private GISGeometryFactory() { super(new PrecisionModel(10E6), 0, new GISCoordinateSequenceFactory()); } + + /** Retourne un nouvel identifiant a affecter a la g\xE9om\xE9trie */ + protected long getNewId() { + return ++numid_; + } public Point createPoint(final Coordinate _coordinate){ return new GISPoint(_coordinate); Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java 2008-06-27 15:21:09 UTC (rev 3662) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java 2008-06-27 15:21:44 UTC (rev 3663) @@ -21,6 +21,7 @@ public class GISMultiPoint extends MultiPoint implements GISGeometry { CoordinateSequence seq_; + protected long id_=GISGeometryFactory.INSTANCE.getNewId(); public GISMultiPoint() { super(null, GISGeometryFactory.INSTANCE); @@ -31,6 +32,10 @@ super(_points, GISGeometryFactory.INSTANCE); seq_=GISGeometryFactory.INSTANCE.getCoordinateSequenceFactory().create(this.getCoordinates()); } + + public long getId() { + return id_; + } public boolean accept(final GISVisitor _v) { return _v.visitMultiPoint(this); Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPolygoneWithHole.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPolygoneWithHole.java 2008-06-27 15:21:09 UTC (rev 3662) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPolygoneWithHole.java 2008-06-27 15:21:44 UTC (rev 3663) @@ -17,6 +17,11 @@ * @version $Id: GISMultiPolygoneWithHole.java,v 1.8 2007-01-17 10:45:25 deniger Exp $ */ public class GISMultiPolygoneWithHole extends MultiPolygon implements GISGeometry { + protected long id_=GISGeometryFactory.INSTANCE.getNewId(); + + public long getId() { + return id_; + } public GISMultiPolygoneWithHole() { super(null, GISGeometryFactory.INSTANCE); Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPolyligne.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPolyligne.java 2008-06-27 15:21:09 UTC (rev 3662) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPolyligne.java 2008-06-27 15:21:44 UTC (rev 3663) @@ -17,6 +17,11 @@ * @version $Id: GISMultiPolyligne.java,v 1.8 2007-01-17 10:45:25 deniger Exp $ */ public class GISMultiPolyligne extends MultiLineString implements GISPointContainerInterface, GISGeometry { + protected long id_=GISGeometryFactory.INSTANCE.getNewId(); + + public long getId() { + return id_; + } public GISMultiPolyligne() { this(null); Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPoint.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPoint.java 2008-06-27 15:21:09 UTC (rev 3662) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPoint.java 2008-06-27 15:21:44 UTC (rev 3663) @@ -18,6 +18,12 @@ * @version $Id: GISPoint.java,v 1.5 2006-07-13 13:34:35 deniger Exp $ */ public class GISPoint extends Point implements GISGeometry { + protected long id_=GISGeometryFactory.INSTANCE.getNewId(); + + public long getId() { + return id_; + } + /** * @param _p1 le point 1 * @param _p2 le point 2 Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolygone.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolygone.java 2008-06-27 15:21:09 UTC (rev 3662) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolygone.java 2008-06-27 15:21:44 UTC (rev 3663) @@ -19,6 +19,11 @@ * @version $Id: GISPolygone.java,v 1.10 2007-01-17 10:45:25 deniger Exp $ */ public class GISPolygone extends LinearRing implements GISPointContainerInterface, GISLigneBrisee { + protected long id_=GISGeometryFactory.INSTANCE.getNewId(); + + public long getId() { + return id_; + } GISPolygone() { super(GISGeometryFactory.INSTANCE.getCoordinateSequenceFactory().create( Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolygoneWithHole.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolygoneWithHole.java 2008-06-27 15:21:09 UTC (rev 3662) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolygoneWithHole.java 2008-06-27 15:21:44 UTC (rev 3663) @@ -18,6 +18,11 @@ * @version $Id: GISPolygoneWithHole.java,v 1.6 2007-01-17 10:45:25 deniger Exp $ */ public class GISPolygoneWithHole extends Polygon implements GISGeometry{ + protected long id_=GISGeometryFactory.INSTANCE.getNewId(); + + public long getId() { + return id_; + } public GISPolygoneWithHole() { super(new GISPolygone(), null, GISGeometryFactory.INSTANCE); Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolyligne.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolyligne.java 2008-06-27 15:21:09 UTC (rev 3662) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolyligne.java 2008-06-27 15:21:44 UTC (rev 3663) @@ -18,6 +18,11 @@ * @version $Id: GISPolyligne.java,v 1.7 2007-01-17 10:45:25 deniger Exp $ */ public class GISPolyligne extends LineString implements GISPointContainerInterface, GISLigneBrisee { + protected long id_=GISGeometryFactory.INSTANCE.getNewId(); + + public long getId() { + return id_; + } /** * @param _points Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISRien.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISRien.java 2008-06-27 15:21:09 UTC (rev 3662) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISRien.java 2008-06-27 15:21:44 UTC (rev 3663) @@ -21,6 +21,7 @@ * @version $Id: GISRien.java,v 1.5 2007-01-17 10:45:25 deniger Exp $ */ public final class GISRien extends Geometry implements GISGeometry { + public long getId() { return -1; } public final static GISRien INSTANCE = new GISRien(); Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZone.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZone.java 2008-06-27 15:21:09 UTC (rev 3662) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZone.java 2008-06-27 15:21:44 UTC (rev 3663) @@ -20,6 +20,7 @@ * @version $Id: GISZone.java,v 1.6.8.1 2008-02-01 14:42:44 bmarchan Exp $ */ public class GISZone extends GISCollection{ + public long getId() { return -1; } String nom_; Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-06-27 15:21:09 UTC (rev 3662) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-06-27 15:21:44 UTC (rev 3663) @@ -64,6 +64,8 @@ public GISZoneCollection(final int _nbObject) { super(_nbObject); } + + public long getId() { return -1; } protected void fireAttributesChanged(final GISAttributeInterface _att) { if (listener_ != null) { @@ -175,6 +177,8 @@ /** * Ne fait pas de verif quant a l'origine des donnees. + * Remarque : Le modele a ajouter doit avoir le m\xEAme nombre d'attributs que le mod\xE8le courant. Si ce n'est pas + * le cas, une erreur est d\xE9clench\xE9e. * * @param _model le model a ajouter * @param _cmd le receveur de commande This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-06-27 15:21:12
|
Revision: 3662 http://fudaa.svn.sourceforge.net/fudaa/?rev=3662&view=rev Author: bmarchan Date: 2008-06-27 08:21:09 -0700 (Fri, 27 Jun 2008) Log Message: ----------- Un peu de doc... Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAbstract.java branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAbstract.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAbstract.java 2008-06-27 15:16:05 UTC (rev 3661) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAbstract.java 2008-06-27 15:21:09 UTC (rev 3662) @@ -12,6 +12,10 @@ import org.fudaa.ctulu.ProgressionInterface; /** + * Un adapteur permettant d'exposer certains attributs seulement d'un mod\xE8le de donn\xE9es. Seuls des attributs existants dans + * le modele original peuvent \xEAtre filtr\xE9s. Les indices des attributs expos\xE9s sont donn\xE9s sous forme d'un tableau, + * pas n\xE9cessairement dans un ordre croissant. + * * @author fred deniger * @version $Id: GISDataModelAbstract.java,v 1.1 2007-01-10 08:58:47 deniger Exp $ */ @@ -20,6 +24,10 @@ final int[] attShown_; protected final GISDataModel model_; + /** + * @param _attShown Les indices des seuls attributs a exposer. + * @param _model Le mod\xE8le d'origine. + */ public GISDataModelAbstract(final int[] _attShown, final GISDataModel _model) { super(); attShown_ = _attShown; Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java 2008-06-27 15:16:05 UTC (rev 3661) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java 2008-06-27 15:21:09 UTC (rev 3662) @@ -14,19 +14,28 @@ import org.fudaa.ctulu.CtuluLibArray; /** + * Un filtre permettant d'exposer certains attributs d'un mod\xE8le de donn\xE9es + * et/ou certaines g\xE9om\xE9tries.<p> + * <b>Important</b> : Le filtre autorise des attributs qui ne sont pas dans le modele d'origine. + * Pour ces attributs, les valeurs retourn\xE9es pour chaque g\xE9om\xE9trie sont nulles. * @author Fred Deniger * @version $Id: GISDataModelFilterAdapter.java,v 1.1 2007-01-10 08:58:47 deniger Exp $ */ public class GISDataModelFilterAdapter extends GISDataModelAbstract { + /** + * Cr\xE9ation d'un filtre conservant toutes les g\xE9om\xE9tries et seulement les attributs donn\xE9s. + */ public static GISDataModelFilterAdapter buildAdapter(final GISDataModel _collection, final GISAttributeInterface[] _att) { return buildAdapter(_collection, _att, null); } /** + * Cr\xE9ation d'un filtre ne conservant que les g\xE9om\xE9tries d'indices donn\xE9s et les attributs donn\xE9s. * @param _collection la zone a adapter * @param _att les attributs dans l'ordre voulu. + * @param _idxGeom Les indices des seules g\xE9om\xE9tries \xE0 exposer. * @return l'adapteur */ public static GISDataModelFilterAdapter buildAdapter(final GISDataModel _collection, @@ -42,6 +51,9 @@ } + /** + * Cr\xE9ation d'un filtre ne conservant que les lignes et les d'attributs donn\xE9s. + */ public static GISDataModelFilterAdapter buildLigneAdapter(final GISDataModel _collection, final GISAttributeInterface[] _att) { boolean allLigneBrisee = true; @@ -62,6 +74,9 @@ return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set)); } + /** + * Cr\xE9ation d'un filtre ne conservant que les lignes ferm\xE9es et les d'attributs donn\xE9s. + */ public static GISDataModelFilterAdapter buildLigneFermeeAdapter(final GISDataModel _collection, final GISAttributeInterface[] _att) { boolean allLigneFermee = true; @@ -82,6 +97,9 @@ return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set)); } + /** + * Cr\xE9ation d'un filtre ne conservant que les lignes ferm\xE9es et les d'attributs donn\xE9s. + */ public static GISDataModelFilterAdapter buildLigneOuverteAdapter(final GISDataModel _collection, final GISAttributeInterface[] _att) { boolean allLigneBrisee = true; @@ -102,6 +120,9 @@ return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set)); } + /** + * Cr\xE9ation d'un filtre ne conservant que les points et les d'attributs donn\xE9s. + */ public static GISDataModelFilterAdapter buildPointAdapter(final GISDataModel _collection, final GISAttributeInterface[] _att) { boolean allPoint = true; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-06-27 15:16:15
|
Revision: 3661 http://fudaa.svn.sourceforge.net/fudaa/?rev=3661&view=rev Author: bmarchan Date: 2008-06-27 08:16:05 -0700 (Fri, 27 Jun 2008) Log Message: ----------- Chgt nom par defaut. Modified Paths: -------------- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java =================================================================== --- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-06-27 14:41:22 UTC (rev 3660) +++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-06-27 15:16:05 UTC (rev 3661) @@ -1,130 +1,130 @@ -/* - * @creation 7 avr. 2005 - * @modification $Date: 2008-03-28 14:58:56 $ - * @license GNU General Public License 2 - * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne - * @mail de...@fu... - */ -package org.fudaa.ctulu.gis; - -import java.util.ArrayList; -import java.util.List; - -import com.memoire.fu.FuLib; - -import org.fudaa.ctulu.CtuluLib; -import org.fudaa.ctulu.CtuluLibString; - -/** - * Des constantes pour les attributs associables \xE0 des objets GIS. Les attributs constants sont en - * principe des attributs programme (non construits par l'utilisateur). Dans ce cas, leur ID est - * ind\xE9pendant de la langue pour \xEAtre correctement sauv\xE9 dans les fichiers GML. - * - * @author Fred Deniger - * @version $Id: GISAttributeConstants.java,v 1.14.8.3 2008-03-28 14:58:56 bmarchan Exp $ - */ -public final class GISAttributeConstants { - - private GISAttributeConstants() { - - } - - public static String toString(final GISAttributeInterface _att) { - if (_att == TITRE || _att == BATHY) { - return _att.getID(); - } - final String attributeSep = getAttributeSep(); - return _att.getDataClass().getName() + attributeSep + FuLib.replace(_att.getName(), attributeSep, "_") - + attributeSep + CtuluLibString.toString(_att.isAtomicValue()); - } - - private static String getAttributeSep() { - return "|"; - } - - public static GISAttributeInterface getConstantAttribute(final String _saveName) { - if (TITRE.getID().equals(_saveName)) { - return TITRE; - } - if (BATHY.getID().equals(_saveName)) { - return BATHY; - } - return null; - } - - public static GISAttributeInterface restoreFrom(final String _s) { - GISAttributeInterface res = getConstantAttribute(_s); - if (res != null) { - return res; - } - final String[] s = CtuluLibString.parseString(_s, getAttributeSep()); - if (s == null || s.length != 3) { - return null; - } - final String clazz = s[0]; - final String name = s[1]; - final boolean atomic = CtuluLibString.toBoolean(s[2]); - if (clazz.equals(Double.class.getName())) { - res = new GISAttributeDouble(name, atomic); - if (BATHY.isSameContent(res)) { - res = BATHY; - } - } else if (clazz.equals(Integer.class.getName())) { - res = new GISAttributeInteger(name, atomic); - } else { - res = new GISAttributeString(name, atomic); - if (TITRE.isSameContent(res)) { - res = TITRE; - } - } - - return res; - } - - public static List getDefaults() { - final ArrayList l = new ArrayList(2); - l.add(BATHY); - l.add(TITRE); - return l; - } - - public static boolean isConstant(final GISAttributeInterface _att) { - return _att == TITRE || _att == BATHY; - } - - /** - * Un attribut nom, non atomique. - */ - public final static GISAttributeString TITRE = new GISAttributeString(CtuluLib.getS("Nom")) { - - String def_ = CtuluLib.getS("Nouveau"); - - protected Object readResolve() { - return TITRE; - } - - public String getID() { - return "ATTRIBUTE_TITLE"; - } - - public Object getDefaultValue() { - return def_; - } - }; - - /** - * Un attribut bathy, atomique. - */ - public final static GISAttributeDouble BATHY = new GISAttributeDouble(CtuluLib.getS("z"), true) { - - protected Object readResolve() { - return BATHY; - } - - public String getID() { - return "ATTRIBUTE_Z"; - } - - }; - -} +/* + * @creation 7 avr. 2005 + * @modification $Date: 2008-03-28 14:58:56 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.ctulu.gis; + +import java.util.ArrayList; +import java.util.List; + +import com.memoire.fu.FuLib; + +import org.fudaa.ctulu.CtuluLib; +import org.fudaa.ctulu.CtuluLibString; + +/** + * Des constantes pour les attributs associables \xE0 des objets GIS. Les attributs constants sont en + * principe des attributs programme (non construits par l'utilisateur). Dans ce cas, leur ID est + * ind\xE9pendant de la langue pour \xEAtre correctement sauv\xE9 dans les fichiers GML. + * + * @author Fred Deniger + * @version $Id: GISAttributeConstants.java,v 1.14.8.3 2008-03-28 14:58:56 bmarchan Exp $ + */ +public final class GISAttributeConstants { + + private GISAttributeConstants() { + + } + + public static String toString(final GISAttributeInterface _att) { + if (_att == TITRE || _att == BATHY) { + return _att.getID(); + } + final String attributeSep = getAttributeSep(); + return _att.getDataClass().getName() + attributeSep + FuLib.replace(_att.getName(), attributeSep, "_") + + attributeSep + CtuluLibString.toString(_att.isAtomicValue()); + } + + private static String getAttributeSep() { + return "|"; + } + + public static GISAttributeInterface getConstantAttribute(final String _saveName) { + if (TITRE.getID().equals(_saveName)) { + return TITRE; + } + if (BATHY.getID().equals(_saveName)) { + return BATHY; + } + return null; + } + + public static GISAttributeInterface restoreFrom(final String _s) { + GISAttributeInterface res = getConstantAttribute(_s); + if (res != null) { + return res; + } + final String[] s = CtuluLibString.parseString(_s, getAttributeSep()); + if (s == null || s.length != 3) { + return null; + } + final String clazz = s[0]; + final String name = s[1]; + final boolean atomic = CtuluLibString.toBoolean(s[2]); + if (clazz.equals(Double.class.getName())) { + res = new GISAttributeDouble(name, atomic); + if (BATHY.isSameContent(res)) { + res = BATHY; + } + } else if (clazz.equals(Integer.class.getName())) { + res = new GISAttributeInteger(name, atomic); + } else { + res = new GISAttributeString(name, atomic); + if (TITRE.isSameContent(res)) { + res = TITRE; + } + } + + return res; + } + + public static List getDefaults() { + final ArrayList l = new ArrayList(2); + l.add(BATHY); + l.add(TITRE); + return l; + } + + public static boolean isConstant(final GISAttributeInterface _att) { + return _att == TITRE || _att == BATHY; + } + + /** + * Un attribut nom, non atomique. + */ + public final static GISAttributeString TITRE = new GISAttributeString(CtuluLib.getS("Nom")) { + + String def_ = CtuluLib.getS("_Nouveau"); + + protected Object readResolve() { + return TITRE; + } + + public String getID() { + return "ATTRIBUTE_TITLE"; + } + + public Object getDefaultValue() { + return def_; + } + }; + + /** + * Un attribut bathy, atomique. + */ + public final static GISAttributeDouble BATHY = new GISAttributeDouble(CtuluLib.getS("z"), true) { + + protected Object readResolve() { + return BATHY; + } + + public String getID() { + return "ATTRIBUTE_Z"; + } + + }; + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |