|
From: <bma...@us...> - 2011-09-27 16:05:27
|
Revision: 6454
http://fudaa.svn.sourceforge.net/fudaa/?rev=6454&view=rev
Author: bmarchan
Date: 2011-09-27 16:05:20 +0000 (Tue, 27 Sep 2011)
Log Message:
-----------
Add : Saisie interactive d'un transect
Modified Paths:
--------------
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeGridDefinitionAction.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEditAction.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivCntGridModel.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectModel.java
Added Paths:
-----------
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivNewTransectAction.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivEditableModel.java
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-27 15:53:27 UTC (rev 6453)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivImplementation.java 2011-09-27 16:05:20 UTC (rev 6454)
@@ -36,6 +36,7 @@
import org.fudaa.fudaa.piv.action.PivComputeAverageAction;
import org.fudaa.fudaa.piv.action.PivComputeLaunchAction;
import org.fudaa.fudaa.piv.action.PivComputeParamAction;
+import org.fudaa.fudaa.piv.action.PivNewTransectAction;
import org.fudaa.fudaa.piv.action.PivImportGRPAction;
import org.fudaa.fudaa.piv.action.PivImportGridAction;
import org.fudaa.fudaa.piv.action.PivImportTransectAction;
@@ -215,6 +216,7 @@
setEnabledForAction("PIV_GRID", bprjOpen && bprjHasTransfImg);
setEnabledForAction("IMPORT_GRID", bprjOpen && bprjHasTransfImg);
setEnabledForAction("IMPORT_TRANSECT", bprjOpen && bprjHasTransfImg);
+ setEnabledForAction("CREATE_TRANSECT", bprjOpen && bprjHasTransfImg);
setEnabledForAction("PIV_COMPUTE", bprjOpen);
setEnabledForAction("COMPUTE_AVERAGE", bprjOpen);
setEnabledForAction("RESULTS_SHOW_VELOCITIES", bprjOpen && project.getVelResults()!=null);
@@ -673,6 +675,8 @@
mn.addSeparator(PivResource.getS("R\xE9sultats"));
mn.add(new PivComputeAverageAction(this));
mn.add(get2dFrame().getVisuPanel().getShowVelocitiesAction().buildMenuItem(EbliComponentFactory.INSTANCE));
+ mn.addSeparator(PivResource.getS("Post-traitement"));
+ mn.add(get2dFrame().getVisuPanel().getNewTransectAction());
mn.addSeparator(PivResource.getS("Vue"));
ButtonGroup bg=new ButtonGroup();
AbstractButton itOriginalView=get2dFrame().getVisuPanel().getOriginalViewAction().buildMenuItem(EbliComponentFactory.INSTANCE);
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-09-27 15:53:27 UTC (rev 6453)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivVisuPanel.java 2011-09-27 16:05:20 UTC (rev 6454)
@@ -39,6 +39,7 @@
import org.fudaa.ebli.trace.TraceLigne;
import org.fudaa.ebli.trace.TraceLigneModel;
import org.fudaa.fudaa.piv.action.PivComputeGridDefinitionAction;
+import org.fudaa.fudaa.piv.action.PivNewTransectAction;
import org.fudaa.fudaa.piv.action.PivEditAction;
import org.fudaa.fudaa.piv.action.PivOriginalViewAction;
import org.fudaa.fudaa.piv.action.PivOrthoGRPAction;
@@ -117,15 +118,13 @@
ZCalqueMultiPointEditable cqRealOrthoPoints_;
ZCalqueMultiPointEditable cqRealControlPoints_;
ZCalqueImageRaster cqRealImg_;
+ /** L'affichage d'un transect */
+ ZCalqueLigneBriseeEditable cqTransect_;
PivIASALayer cqIASA_;
- /** Le calque d'\xE9dition du contour de grille. */
- ZCalqueEditionInteraction cqCntGrilleEdition_;
- /** Le calque d'edition des points de r\xE9f\xE9rence. */
- ZCalqueEditionInteraction cqGRPEdition_;
+ /** Le calque d'\xE9dition. */
+ ZCalqueEditionInteraction cqEdition_;
/** L'affichage des r\xE9sultats moyenn\xE9s */
ZCalqueFleche cqVelResults;
- /** L'affichage d'un transect */
- ZCalqueLigneBriseeEditable cqTransect_;
PivIASAModel mdlIASA;
PivCntGridModel mdlCntGrid;
@@ -150,6 +149,7 @@
private PivOrthoGRPAction actOrthoGRP_;
private PivShowVelocityAction actShowVelocities_;
private PivEditAction actEdit_;
+ private PivNewTransectAction actNewTransect_;
/**
* Construction des calques. Une partie est d\xE9j\xE0 construite par d\xE9faut dans
@@ -230,6 +230,7 @@
removeAllCalqueDonnees();
addCqInfos();
+ buildEditionLayer();
buildTransfLayers();
buildRealLayers();
buildOriginalLayers();
@@ -244,10 +245,10 @@
actTransfView_=new PivTransfViewAction((PivImplementation)getCtuluUI());
actRealView_=new PivRealViewAction((PivImplementation)getCtuluUI());
actOrthoGRP_=new PivOrthoGRPAction(this);
- actOrthoGRP_.setCalqueInteraction(cqGRPEdition_);
actOrthoGRP_.setCalqueOrthoPoints(cqOrthoPoints_);
actComputeGrid_=new PivComputeGridDefinitionAction(this);
- actComputeGrid_.setCalqueInteraction(cqCntGrilleEdition_);
+ actNewTransect_=new PivNewTransectAction(this);
+ actNewTransect_.setTransectLayer(cqTransect_);
actShowVelocities_=new PivShowVelocityAction((PivImplementation)getCtuluUI());
actEdit_=new PivEditAction(this);
getScene().addSelectionListener(actEdit_);
@@ -297,6 +298,14 @@
}
/**
+ * Retourne l'action pour la saisie d'un transect.
+ * @return L'action.
+ */
+ public EbliActionAbstract getNewTransectAction() {
+ return actNewTransect_;
+ }
+
+ /**
* Retourne l'action pour voir les vitesses.
* @return L'action.
*/
@@ -311,6 +320,13 @@
public EbliActionAbstract getEditAction() {
return actEdit_;
}
+
+ /**
+ * @return Le calque d'edition de formes.
+ */
+ public ZCalqueEditionInteraction getEditionLayer() {
+ return cqEdition_;
+ }
/**
* Switch les calques de la vue suivant le type de vue attendu.
@@ -423,6 +439,20 @@
}
/**
+ * Construction du calque de saisie de formes.
+ */
+ protected void buildEditionLayer() {
+ cqEdition_=new ZCalqueEditionInteraction();
+ cqEdition_.setName("cqEdition");
+ cqEdition_.setGele(true);
+ cqEdition_.setLineModel(new TraceLigneModel(TraceLigne.LISSE, 1, Color.RED));
+ cqEdition_.setIconModel(new TraceIconModel(TraceIcon.PLUS, 5, Color.RED));
+
+ // Ce calque peut \xEAtre ajout\xE9 d\xE9s le d\xE9but, il n'apparait pas dans l'arbre de calques
+ getController().addCalqueInteraction(cqEdition_);
+ }
+
+ /**
* Construction des calques pour l'image originale.
*/
protected void buildOriginalLayers() {
@@ -439,17 +469,6 @@
cqOriginalImg_ = new ZCalqueImageRaster();
cqOriginalImg_.setTitle(PivResource.getS("Image d'origine"));
cqOriginalImg_.setName("cqImg");
-
- // Un calque de cr\xE9ation de formes interactif.
- cqGRPEdition_=new ZCalqueEditionInteraction();
- cqGRPEdition_.setName("cqGRPEdition");
- cqGRPEdition_.setTypeForme(DeForme.MULTI_POINT);
- cqGRPEdition_.setGele(true);
- cqGRPEdition_.setIconModel(new TraceIconModel(TraceIcon.PLUS, 5, Color.RED));
- cqGRPEdition_.setFormEndedByDoubleClic(false);
-
- // Ce calque peut \xEAtre ajout\xE9 d\xE9s le d\xE9but, il n'apparait pas dans l'arbre de calques
- getController().addCalqueInteraction(cqGRPEdition_);
}
/**
@@ -508,6 +527,7 @@
}
});
+ // Layer des transect
cqTransect_= new ZCalqueLigneBriseeEditable();
cqTransect_.setTitle(PivResource.getS("Transect"));
cqTransect_.setName("cqTransect");
@@ -515,6 +535,7 @@
cqTransect_.setLineModel(1, new TraceLigneModel(TraceLigne.POINTILLE, 1, Color.YELLOW.darker()));
cqTransect_.setIconModel(1, new TraceIconModel(TraceIcon.LOSANGE_PLEIN, 3, Color.YELLOW.darker()));
cqTransect_.setDestructible(false);
+ cqTransect_.setEditor(editGeom_);
}
/**
@@ -551,16 +572,6 @@
cqTransfImage_ = new ZCalqueImageRaster();
cqTransfImage_.setTitle(PivResource.getS("Image ortho"));
cqTransfImage_.setName("cqTransfImg");
-
- // Un calque de saisie du contour de grille.
- cqCntGrilleEdition_=new ZCalqueEditionInteraction();
- cqCntGrilleEdition_.setName("cqCntGrilleEdition");
- cqCntGrilleEdition_.setTypeForme(DeForme.POLYGONE);
- cqCntGrilleEdition_.setGele(true);
- cqCntGrilleEdition_.setLineModel(new TraceLigneModel(TraceLigne.LISSE, 1, Color.RED));
-
- // Ce calque peut \xEAtre ajout\xE9 d\xE9s le d\xE9but, il n'apparait pas dans l'arbre de calques
- getController().addCalqueInteraction(cqCntGrilleEdition_);
}
/**
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeGridDefinitionAction.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeGridDefinitionAction.java 2011-09-27 15:53:27 UTC (rev 6453)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeGridDefinitionAction.java 2011-09-27 16:05:20 UTC (rev 6454)
@@ -14,6 +14,7 @@
import javax.swing.SwingUtilities;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
+import org.fudaa.ebli.calque.dessin.DeForme;
import org.fudaa.ebli.calque.edition.ZCalqueEditionInteraction;
import org.fudaa.ebli.calque.edition.ZCalqueEditionInteractionTargetI;
import org.fudaa.ebli.calque.edition.ZEditionAttributesDataI;
@@ -41,6 +42,8 @@
private ZCalqueEditionInteraction cqEdition_;
/** La palette pour la reprise. */
private PivPaletteEditPolygon palette_;
+ /** Le controller d'edition */
+ private EditionController controller_;
/**
* Un editeur qui r\xE9agit \xE0 la saisie d'une forme pour la grille.
@@ -138,6 +141,8 @@
public PivComputeGridDefinitionAction(PivVisuPanel _pn) {
super(PivResource.getS("D\xE9finition de la grille..."), null, "PIV_GRID");
pnCalques_=_pn;
+ controller_=new EditionController();
+ setCalqueInteraction(_pn.getEditionLayer());
setEnabled(false);
}
@@ -145,10 +150,8 @@
* Definit le calque d'interaction associ\xE9 \xE0 l'action.
* @param _cq Le calque. Peut \xEAtre <tt>null</tt>.
*/
- public void setCalqueInteraction(ZCalqueEditionInteraction _cq) {
+ private void setCalqueInteraction(ZCalqueEditionInteraction _cq) {
cqEdition_=_cq;
- if (cqEdition_!=null)
- cqEdition_.setListener(new EditionController());
}
/**
@@ -175,6 +178,7 @@
}
+ @Override
public String getEnableCondition() {
return PivResource.getS("Il doit exister au moins une image transform\xE9e");
}
@@ -195,6 +199,9 @@
*/
@Override
public void doAfterDisplay() {
+ cqEdition_.setListener(controller_);
+ cqEdition_.setTypeForme(DeForme.POLYGONE);
+ cqEdition_.setFormEndedByDoubleClic(true);
pnCalques_.setCalqueInteractionActif(cqEdition_);
palette_.currentFormeChanged(null);
}
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEditAction.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEditAction.java 2011-09-27 15:53:27 UTC (rev 6453)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivEditAction.java 2011-09-27 16:05:20 UTC (rev 6454)
@@ -1,14 +1,13 @@
package org.fudaa.fudaa.piv.action;
import java.awt.event.ActionEvent;
-import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface;
import org.fudaa.ebli.calque.ZSelectionEvent;
import org.fudaa.ebli.calque.ZSelectionListener;
+import org.fudaa.ebli.calque.edition.ZCalqueEditable;
import org.fudaa.ebli.commun.EbliActionSimple;
import org.fudaa.fudaa.piv.PivResource;
import org.fudaa.fudaa.piv.PivVisuPanel;
-import org.fudaa.fudaa.piv.layer.PivCntGridModel;
-import org.fudaa.fudaa.piv.layer.PivOrthoPointsModel;
+import org.fudaa.fudaa.piv.layer.PivEditableModel;
/**
* Une action pour \xE9diter la g\xE9om\xE9trie. Le projet est mis a jour suite
@@ -35,22 +34,21 @@
* Affiche la fenetre d'\xE9dition pour les g\xE9om\xE9tries autoris\xE9es.
* @param _e L'evenement pour l'action.
*/
+ @Override
public void actionPerformed(final ActionEvent _e) {
- if (pnCalques_.getScene().getCalqueActif() instanceof ZCalqueAffichageDonneesInterface) {
- ZCalqueAffichageDonneesInterface cq=(ZCalqueAffichageDonneesInterface) pnCalques_.getScene().getCalqueActif();
- if (cq.getLayerSelection()!=null && cq.getLayerSelection().isOnlyOnIndexSelected()) {
+ if (pnCalques_.getScene().getCalqueActif() instanceof ZCalqueEditable) {
+ ZCalqueEditable cq=(ZCalqueEditable) pnCalques_.getScene().getCalqueActif();
+ if (cq.getLayerSelection()!=null && !cq.getLayerSelection().isEmpty()) {
cq.editSelected();
- if (cq.modeleDonnees() instanceof PivOrthoPointsModel) {
- ((PivOrthoPointsModel)cq.modeleDonnees()).geometryChanged();
+ if (cq.modeleDonnees() instanceof PivEditableModel) {
+ ((PivEditableModel)cq.modeleDonnees()).geometryChanged();
}
- else if(cq.modeleDonnees() instanceof PivCntGridModel) {
- ((PivCntGridModel)cq.modeleDonnees()).geometryChanged();
- }
}
}
}
+ @Override
public String getEnableCondition() {
return PivResource.getS("S\xE9lectionner une g\xE9om\xE9trie");
}
@@ -60,11 +58,13 @@
* @param _evt L'evenement de selection.
*/
public void selectionChanged(ZSelectionEvent _evt) {
- if (pnCalques_.getScene().getCalqueActif() instanceof ZCalqueAffichageDonneesInterface) {
- ZCalqueAffichageDonneesInterface cq=(ZCalqueAffichageDonneesInterface) pnCalques_.getScene().getCalqueActif();
- boolean b=cq.getLayerSelection()!=null && cq.getLayerSelection().isOnlyOnIndexSelected();
- b&=cq.modeleDonnees() instanceof PivOrthoPointsModel || cq.modeleDonnees() instanceof PivCntGridModel;
- super.setEnabled(b);
+ boolean b=false;
+ if (pnCalques_.getScene().getCalqueActif() instanceof ZCalqueEditable) {
+ ZCalqueEditable cq=(ZCalqueEditable) pnCalques_.getScene().getCalqueActif();
+
+ b=cq.getLayerSelection()!=null && !cq.getLayerSelection().isEmpty();
+ b&=cq.getEditor()!=null && (cq.getModelEditable() instanceof PivEditableModel);
}
+ super.setEnabled(b);
}
}
Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivNewTransectAction.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivNewTransectAction.java (rev 0)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivNewTransectAction.java 2011-09-27 16:05:20 UTC (rev 6454)
@@ -0,0 +1,308 @@
+/*
+ * @creation 3 juil. 2008
+ * @modification $Date:$
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail fud...@li...
+ */
+package org.fudaa.fudaa.piv.action;
+
+import com.memoire.bu.BuButton;
+import com.memoire.bu.BuDesktop;
+import com.memoire.fu.FuLog;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import javax.swing.AbstractButton;
+import javax.swing.JComponent;
+import javax.swing.JDialog;
+import javax.swing.JInternalFrame;
+import javax.swing.SwingUtilities;
+import javax.swing.event.InternalFrameAdapter;
+import javax.swing.event.InternalFrameEvent;
+import org.fudaa.ebli.calque.dessin.DeForme;
+import org.fudaa.ebli.calque.edition.BPaletteEdition;
+import org.fudaa.ebli.calque.edition.BPaletteEditionClientInterface;
+import org.fudaa.ebli.calque.edition.ZCalqueEditionInteraction;
+import org.fudaa.ebli.calque.edition.ZCalqueEditionInteractionTargetI;
+import org.fudaa.ebli.calque.edition.ZCalqueLigneBriseeEditable;
+import org.fudaa.ebli.calque.edition.ZEditionAttributesDataI;
+import org.fudaa.ebli.calque.edition.ZEditorLigneBriseePanel;
+import org.fudaa.ebli.commun.EbliActionPaletteAbstract;
+import org.fudaa.ebli.geometrie.GrPoint;
+import org.fudaa.ebli.geometrie.GrPolygone;
+import org.fudaa.ebli.geometrie.GrPolyligne;
+import org.fudaa.fudaa.piv.PivResource;
+import org.fudaa.fudaa.piv.PivVisuPanel;
+import org.fudaa.fudaa.piv.metier.PivTransect;
+
+/**
+ * Une action pour cr\xE9er un transect. Cette action est
+ * utilis\xE9e comme controlleur \xE0 la palette et au calque d'\xE9dition d\xE9di\xE9.
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ * @version $Id$
+ */
+public class PivNewTransectAction extends EbliActionPaletteAbstract {
+
+ private PivVisuPanel pnCalques_;
+ /** Le calque d'\xE9dition. */
+ private ZCalqueEditionInteraction cqEdition_;
+ /** Le calsue des ortho points */
+ private ZCalqueLigneBriseeEditable cqTransect_;
+ /** La palette */
+ private BPaletteEdition palette_;
+ /** Le panneau d'edition des param\xE8tres du multipoint */
+ private ZEditorLigneBriseePanel pnParams;
+ /** Le controller d'edition */
+ private EditionController controller_;
+ /** Le listener de propri\xE9t\xE9 du calque d'interaction */
+ private EditionLayerPropertyListener propListener_;
+
+ /**
+ * Le controlleur pour l'\xE9dition.
+ */
+ class EditionController implements ZCalqueEditionInteractionTargetI {
+
+ public void atomicChanged() {
+ // On notifie la palette que la forme a chang\xE9, pour activer ou non le bouton fin d'edition.
+ FuLog.debug("atomicChanged");
+ pnParams.atomicChanged();
+ }
+
+ /** Non utilis\xE9 */
+ public boolean addNewMultiPoint(GrPolyligne _pg, ZEditionAttributesDataI _data) {
+ return true;
+ }
+
+ /** Non utilis\xE9 */
+ public void setMessage(String _s) {
+ }
+
+ /** Non utilis\xE9 */
+ public void unsetMessage() {
+ }
+
+ /** Non utilis\xE9 */
+ public boolean addNewPolygone(GrPolygone _pg, ZEditionAttributesDataI _data) {
+ return true;
+ }
+
+ /** Non utilis\xE9 */
+ public boolean addNewPoint(GrPoint _point, ZEditionAttributesDataI _data) {
+ return true;
+ }
+
+ /** Non utilis\xE9 */
+ public boolean addNewRectangle(GrPoint _pt, GrPoint _pt2, ZEditionAttributesDataI _data) {
+ return true;
+ }
+
+ /**
+ * Ajoute la forme en cours au calque.
+ * @param _pl La polyligne
+ * @param _data Les valeurs associ\xE9es a chaque point.
+ * @return Si false, la saisie n'est pas stopp\xE9e.
+ */
+ public boolean addNewPolyligne(GrPolyligne _pl, ZEditionAttributesDataI _data) {
+ if (_pl.sommets_.nombre() < 2) {
+ pnCalques_.getCtuluUI().error(PivResource.getS("Le nombre de points doit \xEAtre sup\xE9rieur \xE0 1."));
+ return false;
+ }
+
+ // Initialisation du Z polyligne
+ for (int i=0; i<_pl.sommets_.nombre(); i++) {
+ _pl.sommet(i).z_=(Double) _data.getValue(PivVisuPanel.ATT_IND_ZR, i);
+ }
+
+ PivTransect transect=new PivTransect();
+ transect.setStraight(_pl);
+ pnCalques_.getProject().setTransect(transect);
+ hideWindow();
+
+ return true;
+ }
+
+ /** Non utilis\xE9 */
+ public void pointMove(double _x, double _y) {
+ }
+ }
+
+ /**
+ * Le listener qui r\xE9agit en fonction du gel du calque d'interaction.
+ */
+ class EditionLayerPropertyListener implements PropertyChangeListener {
+
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (evt.getPropertyName().equals("gele")) {
+ if (pnParams!=null)
+ pnParams.calqueInteractionChanged();
+ }
+ }
+ }
+
+ /**
+ * Classe g\xE9rant la disparition et la r\xE9apparition du panel quand la fen\xEAtre
+ * principale est r\xE9duite.
+ */
+ class Piv2dFrameListener extends InternalFrameAdapter {
+ public void internalFrameActivated(final InternalFrameEvent _e) {
+ if(window_!=null)
+ window_.setVisible(true);
+ }
+ public void internalFrameDeactivated(final InternalFrameEvent _e) {
+ if(window_!=null)
+ window_.setVisible(false);
+ }
+ }
+
+ /**
+ * Constructeur de l'action, avec le panneau des calques.
+ * @param _pn Le panneau des calques.
+ */
+ public PivNewTransectAction(PivVisuPanel _pn) {
+ super(PivResource.getS("D\xE9finition d'un transect..."), null, "CREATE_TRANSECT");
+ pnCalques_=_pn;
+ controller_=new EditionController();
+ propListener_=new EditionLayerPropertyListener();
+ setCalqueInteraction(_pn.getEditionLayer());
+
+ setEnabled(false);
+ }
+
+ /**
+ * Definit le calque d'interaction associ\xE9 \xE0 l'action.
+ * @param _cq Le calque. Peut \xEAtre <tt>null</tt>.
+ */
+ private void setCalqueInteraction(ZCalqueEditionInteraction _cq) {
+ if (cqEdition_!=null) {
+ cqEdition_.removePropertyChangeListener("gele", propListener_);
+ }
+
+ cqEdition_=_cq;
+
+ if (cqEdition_!=null) {
+ cqEdition_.addPropertyChangeListener("gele", propListener_);
+ }
+ }
+
+ /**
+ * Definit le calque contenant le transect.
+ * @param _cq Le calque du transect.
+ */
+ public void setTransectLayer(ZCalqueLigneBriseeEditable _cq) {
+ cqTransect_=_cq;
+ }
+
+ /**
+ * Surcharg\xE9 pour demander \xE0 l'utilisateur s'il souhaite modifier le contour.
+ */
+ @Override
+ public void changeAction() {
+ if (isSelected())
+ pnCalques_.setViewMode(PivVisuPanel.MODE_REAL_VIEW);
+
+ // Si pas de points ou ok pour les supprimer, on lance l'action.
+ if (pnCalques_.getProject().getTransect()==null ||
+ pnCalques_.getCtuluUI().question(
+ PivResource.getS("Modification du transect"),
+ PivResource.getS("Un transect existe d\xE9j\xE0. Voulez vous le remplacer ?"))) {
+ pnCalques_.getProject().setTransect(null);
+ super.changeAction();
+ }
+ // Pas de modification.
+ else {
+ setSelected(false);
+ }
+ }
+
+ @Override
+ public String getEnableCondition() {
+ return PivResource.getS("Il doit exister au moins une image transform\xE9e");
+ }
+
+ /**
+ * Surchag\xE9 pour d\xE9finir le desktop au moment de l'affichage.
+ */
+ @Override
+ public void showWindow() {
+ // Necessaire, sinon la palette est visualis\xE9e en externe. Ne peut \xEAtre fait avant, car le desktop n'est pas
+ // encore existant.
+ setDesktop((BuDesktop)SwingUtilities.getAncestorOfClass(BuDesktop.class,pnCalques_));
+ super.showWindow();
+ }
+
+ /**
+ * Surcharg\xE9 pour activer le calque d'\xE9dition apr\xE8s affichage.
+ */
+ @Override
+ public void doAfterDisplay() {
+ cqEdition_.setListener(controller_);
+ cqEdition_.setTypeForme(DeForme.LIGNE_BRISEE);
+ cqEdition_.setFormEndedByDoubleClic(true);
+ pnCalques_.setCalqueInteractionActif(cqEdition_);
+ }
+
+ /**
+ * Surcharg\xE9 pour rendre inactif le calque d'\xE9dition apr\xE8s que la palette a
+ * \xE9t\xE9 ferm\xE9e.
+ */
+ @Override
+ public void hideWindow() {
+ // Le calque d'interaction est rendu inactif.
+ pnCalques_.unsetCalqueInteractionActif(cqEdition_);
+ if (cqEdition_!=null)
+ cqEdition_.cancelEdition();
+ setSelected(false);
+ super.hideWindow();
+ }
+
+ @Override
+ public JComponent buildContentPane() {
+ if (palette_==null){
+ palette_=new BPaletteEdition(pnCalques_.getScene());
+ palette_.setTargetClient(new BPaletteEditionClientInterface() {
+ public void doAction(String _com, BPaletteEdition _emitter) {
+ if (BPaletteEdition.ADD_POLYLINE_ACTION.equals(_com)) {
+ AbstractButton bt=_emitter.getSelectedButton();
+ if (bt==null) {
+ palette_.setEditorPanel(null);
+ }
+ else {
+ BuButton btValider=new BuButton(PivResource.PIV.getIcon("valider"),PivResource.getS("Fin de saisie"));
+ btValider.setToolTipText(PivResource.getS("Terminer la saisie des points et valider"));
+
+ cqEdition_.setTypeForme(DeForme.LIGNE_BRISEE);
+ pnParams=new ZEditorLigneBriseePanel(palette_,cqEdition_);
+ pnParams.replaceAddButton(btValider);
+ pnParams.setCoordinateDefinitions(pnCalques_.getCoordinateDefinitions());
+ pnParams.targetChanged(cqTransect_);
+ pnParams.setPreferredSize(new Dimension(300,300));
+ palette_.setEditorPanel(pnParams.getComponent());
+ cqEdition_.setFeatures(pnParams.getAttributeContainer());
+ }
+ Object o = SwingUtilities.getAncestorOfClass(JInternalFrame.class, palette_);
+ if (o == null) {
+ o = SwingUtilities.getAncestorOfClass(JDialog.class, palette_);
+ if (o != null) {
+ ((JDialog) o).pack();
+ }
+ }
+ else {
+ ((JInternalFrame) o).pack();
+ }
+ }
+ }
+ });
+ palette_.setButtonVisible(null, false);
+ palette_.setButtonSelected(BPaletteEdition.ADD_POLYLINE_ACTION);
+
+ // Ecoute de la fen\xEAtre principale pour pouvoir se r\xE9duire avec elle
+ final Container c = SwingUtilities.getAncestorOfClass(JInternalFrame.class, pnCalques_);
+ if (c instanceof JInternalFrame)
+ ((JInternalFrame) c).addInternalFrameListener(new Piv2dFrameListener());
+ }
+ return palette_.getComponent();
+ }
+}
Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivNewTransectAction.java
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java 2011-09-27 15:53:27 UTC (rev 6453)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java 2011-09-27 16:05:20 UTC (rev 6454)
@@ -21,6 +21,7 @@
import javax.swing.SwingUtilities;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
+import org.fudaa.ebli.calque.dessin.DeForme;
import org.fudaa.ebli.calque.edition.BPaletteEdition;
import org.fudaa.ebli.calque.edition.BPaletteEditionClientInterface;
import org.fudaa.ebli.calque.edition.ZCalqueEditionInteraction;
@@ -55,6 +56,10 @@
private BPaletteEdition palette_;
/** Le panneau d'edition des param\xE8tres du multipoint */
private ZEditorLigneBriseePanel pnParams;
+ /** Le controller d'edition */
+ private EditionController controller_;
+ /** Le listener de propri\xE9t\xE9 du calque d'interaction */
+ private EditionLayerPropertyListener propListener_;
/**
* Le controlleur pour l'\xE9dition.
@@ -143,7 +148,20 @@
public void pointMove(double _x, double _y) {
}
}
+
+ /**
+ * Le listener qui r\xE9agit en fonction du gel du calque d'interaction.
+ */
+ class EditionLayerPropertyListener implements PropertyChangeListener {
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (evt.getPropertyName().equals("gele")) {
+ if (pnParams!=null)
+ pnParams.calqueInteractionChanged();
+ }
+ }
+ }
+
/**
* Classe g\xE9rant la disparition et la r\xE9apparition du panel quand la fen\xEAtre
* principale est r\xE9duite.
@@ -166,6 +184,11 @@
public PivOrthoGRPAction(PivVisuPanel _pn) {
super(PivResource.getS("Points de r\xE9f\xE9rence..."), null, "ORTHO_GRP");
pnCalques_=_pn;
+
+ controller_=new EditionController();
+ propListener_=new EditionLayerPropertyListener();
+ setCalqueInteraction(_pn.getEditionLayer());
+
setEnabled(false);
}
@@ -173,24 +196,15 @@
* Definit le calque d'interaction associ\xE9 \xE0 l'action.
* @param _cq Le calque. Peut \xEAtre <tt>null</tt>.
*/
- public void setCalqueInteraction(ZCalqueEditionInteraction _cq) {
+ private void setCalqueInteraction(ZCalqueEditionInteraction _cq) {
+ if (cqEdition_!=null) {
+ cqEdition_.removePropertyChangeListener("gele", propListener_);
+ }
+
cqEdition_=_cq;
- if (cqEdition_!=null)
- cqEdition_.setListener(new EditionController());
-
- cqEdition_.addPropertyChangeListener("gele", new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- cqEditionPropertyChange(evt);
- }
- });
-// if (palette_!=null)
-// palette_.setCalqueInteraction(_cq);
- }
-
- private void cqEditionPropertyChange(PropertyChangeEvent evt) {
- if (evt.getPropertyName().equals("gele")) {
- pnParams.calqueInteractionChanged();
+ if (cqEdition_!=null) {
+ cqEdition_.addPropertyChangeListener("gele", propListener_);
}
}
@@ -245,6 +259,9 @@
*/
@Override
public void doAfterDisplay() {
+ cqEdition_.setListener(controller_);
+ cqEdition_.setTypeForme(DeForme.MULTI_POINT);
+ cqEdition_.setFormEndedByDoubleClic(false);
pnCalques_.setCalqueInteractionActif(cqEdition_);
}
@@ -277,6 +294,7 @@
BuButton btValider=new BuButton(PivResource.PIV.getIcon("valider"),PivResource.getS("Fin de saisie"));
btValider.setToolTipText(PivResource.getS("Terminer la saisie des points et valider"));
+ cqEdition_.setTypeForme(DeForme.MULTI_POINT);
pnParams=new ZEditorLigneBriseePanel(palette_,cqEdition_);
pnParams.replaceAddButton(btValider);
pnParams.setCoordinateDefinitions(pnCalques_.getCoordinateDefinitions());
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivCntGridModel.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivCntGridModel.java 2011-09-27 15:53:27 UTC (rev 6453)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivCntGridModel.java 2011-09-27 16:05:20 UTC (rev 6454)
@@ -14,9 +14,9 @@
* Un modele pour le contour de grille
*
* @author Bertrand Marchand (mar...@de...)
- * @version $Id:$
+ * @version $Id$
*/
-public class PivCntGridModel extends ZModeleLigneBriseeEditable {
+public class PivCntGridModel extends ZModeleLigneBriseeEditable implements PivEditableModel {
// L'attribut utilis\xE9 pour l'affichage des lignes suivant une palette de couleurs.
// public static final GISAttributeInteger ATT_IND_COL=new GISAttributeInteger("color",false);
// Le projet.
Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivEditableModel.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivEditableModel.java (rev 0)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivEditableModel.java 2011-09-27 16:05:20 UTC (rev 6454)
@@ -0,0 +1,18 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.fudaa.fudaa.piv.layer;
+
+/**
+ * Un modele de calque editable au sens PIV. Ce type de modele r\xE9agit \xE0 la commande
+ * d'\xE9dition.
+ * @author Bertrand Marchand (mar...@de...)
+ */
+public interface PivEditableModel {
+
+ /**
+ * Appel\xE9 en cas d'\xE9dition de la g\xE9om\xE9trie => On remet a jour le projet
+ */
+ void geometryChanged();
+}
Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivEditableModel.java
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java 2011-09-27 15:53:27 UTC (rev 6453)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java 2011-09-27 16:05:20 UTC (rev 6454)
@@ -23,7 +23,7 @@
* @author Bertrand Marchand (mar...@de...)
* @version $Id$
*/
-public class PivOrthoPointsModel extends ZModeleMultiPointEditable {
+public class PivOrthoPointsModel extends ZModeleMultiPointEditable implements PivEditableModel {
/** L'attribut utilis\xE9 pour la saisie de X r\xE9el. */
public static final GISAttributeDouble ATT_IND_XR=new GISAttributeDouble(PivResource.getS("X r\xE9el"),true) {
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectModel.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectModel.java 2011-09-27 15:53:27 UTC (rev 6453)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivTransectModel.java 2011-09-27 16:05:20 UTC (rev 6454)
@@ -4,11 +4,10 @@
import org.fudaa.ctulu.gis.GISAttribute;
import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee;
import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeEditable;
-import org.fudaa.ebli.geometrie.GrPolygone;
import org.fudaa.ebli.geometrie.GrPolyligne;
import org.fudaa.fudaa.piv.PivVisuPanel;
-import org.fudaa.fudaa.piv.metier.PivCntGrid;
import org.fudaa.fudaa.piv.metier.PivProject;
+import org.fudaa.fudaa.piv.metier.PivTransect;
/**
* Un modele pour la visualisation d'un transect
@@ -16,7 +15,7 @@
* @author Bertrand Marchand (mar...@de...)
* @version $Id$
*/
-public class PivTransectModel extends ZModeleLigneBriseeEditable {
+public class PivTransectModel extends ZModeleLigneBriseeEditable implements PivEditableModel {
// L'attribut utilis\xE9 pour l'affichage des lignes suivant une palette de couleurs.
// public static final GISAttributeInteger ATT_IND_COL=new GISAttributeInteger("color",false);
// Le projet.
@@ -63,26 +62,32 @@
// zl.getModel(PivVisuPanel.ATT_LABEL) .setObject(0, lbData, null);
}
}
-
+
/**
* Appel\xE9 en cas d'\xE9dition de la g\xE9om\xE9trie => On remet a jour le projet
*/
+ @Override
public void geometryChanged() {
+
+ PivTransect trans=null;
GISZoneCollectionLigneBrisee zp=(GISZoneCollectionLigneBrisee)getGeomData();
+
+ if (zp.getNbGeometries() != 0) {
+ zp.initZCoordinate(0);
+ CoordinateSequence seq=zp.getCoordinateSequence(0);
+ int nbPts=seq.size();
- CoordinateSequence seq=zp.getCoordinateSequence(0);
-
- int nbPts=seq.size();
- if (isGeometryFermee(0)) {
- nbPts--;
+ GrPolyligne pl=new GrPolyligne();
+ for (int i=0; i < nbPts; i++) {
+ pl.sommets_.ajoute(seq.getOrdinate(i, 0), seq.getOrdinate(i, 1), seq.getOrdinate(i, 2));
+ }
+ trans=prj_.getTransect();
+ if (trans == null) {
+ trans=new PivTransect();
+ }
+ trans.setStraight(pl);
}
- GrPolygone pl=new GrPolygone();
- for (int i=0; i<nbPts; i++) {
- pl.sommets_.ajoute(seq.getX(i),seq.getY(i),0);
- }
- PivCntGrid cnt=prj_.getComputeCntGrid();
- cnt.setContour(pl);
- prj_.setComputeCntGrid(cnt);
+ prj_.setTransect(trans);
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|