| 
      
      
      From: <bma...@us...> - 2008-06-18 09:11:36
      
     | 
| Revision: 3643
          http://fudaa.svn.sourceforge.net/fudaa/?rev=3643&view=rev
Author:   bmarchan
Date:     2008-06-18 02:09:38 -0700 (Wed, 18 Jun 2008)
Log Message:
-----------
Impl?\195?\169mentation fonction dupliquer geometrie.
Modified Paths:
--------------
    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/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
    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/commun/impl/FudaaCommonImplementation.java
    branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlFille2d.java
    branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java
    branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigVisuPanel.java
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-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditable.java	2008-06-18 09:09:38 UTC (rev 3643)
@@ -60,6 +60,14 @@
   boolean rotateSelectedObjects(double _angRad, double _xreel0, double _yreel0, CtuluCommandContainer _cmd, CtuluUI _ui);
   
   /**
+   * Duplique les objets s\xE9lectionn\xE9s avec un d\xE9calage suivant X et Y.
+   * @param _cmd le receveur de commande
+   * @param _ui l'interface utilisateur
+   * @return true is commande reussie
+   */
+  public boolean copySelectedObjects(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-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java	2008-06-18 09:09:38 UTC (rev 3643)
@@ -248,9 +248,9 @@
   public boolean moveSelectedObjects(final double _reelDx, final double _reelDy, final double _reelDz, final CtuluCommandContainer _cmd, final CtuluUI _ui) {
     if (!isSelectionEmpty()) {
       if (isAtomicMode()) {
-        getModelePoly().moveAtomic(selectionMulti_, _reelDx, _reelDy, _reelDz, _cmd, _ui);
+        return getModelePoly().moveAtomic(selectionMulti_, _reelDx, _reelDy, _reelDz, _cmd, _ui);
       } else {
-        getModelePoly().moveGlobal(selection_, _reelDx, _reelDy, _reelDz, _cmd);
+        return getModelePoly().moveGlobal(selection_, _reelDx, _reelDy, _reelDz, _cmd);
       }
     }
 
@@ -262,14 +262,34 @@
   public boolean rotateSelectedObjects(double _angRad, double _xreel0, double _yreel0, CtuluCommandContainer _cmd, CtuluUI _ui) {
     if (!isSelectionEmpty()) {
       if (isAtomicMode()) {
-        getModelePoly().rotateAtomic(selectionMulti_, _angRad, _xreel0, _yreel0, _cmd, _ui);
+        return getModelePoly().rotateAtomic(selectionMulti_, _angRad, _xreel0, _yreel0, _cmd, _ui);
       } else {
-        getModelePoly().rotateGlobal(selection_, _angRad, _xreel0, _yreel0, _cmd);
+        return getModelePoly().rotateGlobal(selection_, _angRad, _xreel0, _yreel0, _cmd);
       }
     }
     return false;
   }
 
+  /*
+   * @see org.fudaa.ebli.calque.edition.ZCalqueEditable#copySelectedObjects(org.fudaa.ctulu.CtuluCommandContainer, org.fudaa.ctulu.CtuluUI)
+   */
+  public boolean copySelectedObjects(CtuluCommandContainer _cmd, CtuluUI _ui) {
+    if (isSelectionEmpty() || isAtomicMode()) return false;
+    int nb=getModelePoly().getNombre();
+
+    GrSegment pdec=new GrSegment(new GrPoint(0,5,0),new GrPoint(5,0,0));
+    pdec.autoApplique(getVersReel());
+    if (!getModelePoly().copyGlobal(selection_, pdec.getVx(), pdec.getVy(), _cmd)) return false;
+    
+    // Changement de selection.
+    int[] isels=new int[selection_.getNbSelectedIndex()];
+    for (int i=0; i<isels.length; i++) {
+      isels[i]=nb+i;
+    }
+    setSelection(isels);
+    return true;
+  }
+  
   public void paintDeplacement(final Graphics2D _g2d, final int _dxEcran, final int _dyEcran, final TraceIcon _trace) {
     if (!isSelectionEmpty()) {
       if (isAtomicMode()) {
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-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java	2008-06-18 09:09:38 UTC (rev 3643)
@@ -26,6 +26,7 @@
 import org.fudaa.ebli.geometrie.GrObjet;
 import org.fudaa.ebli.geometrie.GrPoint;
 import org.fudaa.ebli.geometrie.GrPolyligne;
+import org.fudaa.ebli.geometrie.GrSegment;
 import org.fudaa.ebli.trace.TraceIcon;
 import org.fudaa.ebli.trace.TraceLigne;
 
@@ -181,6 +182,26 @@
     }
   }
 
+  /*
+   * @see org.fudaa.ebli.calque.edition.ZCalqueEditable#copySelectedObjects(org.fudaa.ctulu.CtuluCommandContainer, org.fudaa.ctulu.CtuluUI)
+   */
+  public boolean copySelectedObjects(CtuluCommandContainer _cmd, CtuluUI _ui) {
+    if (isSelectionEmpty() || isAtomicMode()) return false;
+    int nb=getMultiPointModel().getNombre();
+
+    GrSegment pdec=new GrSegment(new GrPoint(0,5,0),new GrPoint(5,0,0));
+    pdec.autoApplique(getVersReel());
+    if (!getMultiPointModel().copyGlobal(selection_, pdec.getVx(), pdec.getVy(), _cmd)) return false;
+    
+    // Changement de selection.
+    int[] isels=new int[selection_.getNbSelectedIndex()];
+    for (int i=0; i<isels.length; i++) {
+      isels[i]=nb+i;
+    }
+    setSelection(isels);
+    return true;
+  }
+
   /**
    * Dessine le deplacement pour les sommets selectionn\xE9s.
    * @param _g2d Le contexte graphique.
@@ -318,5 +339,4 @@
   public final void setEditor(final ZEditorInterface _editor) {
     editor_ = _editor;
   }
-
 }
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-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java	2008-06-18 09:09:38 UTC (rev 3643)
@@ -33,6 +33,7 @@
 import org.fudaa.ebli.geometrie.GrMorphisme;
 import org.fudaa.ebli.geometrie.GrObjet;
 import org.fudaa.ebli.geometrie.GrPoint;
+import org.fudaa.ebli.geometrie.GrSegment;
 import org.fudaa.ebli.trace.TraceIcon;
 
 import com.memoire.fu.FuLog;
@@ -264,6 +265,26 @@
     return false;
   }
 
+  /*
+   * @see org.fudaa.ebli.calque.edition.ZCalqueEditable#copySelectedObjects(org.fudaa.ctulu.CtuluCommandContainer, org.fudaa.ctulu.CtuluUI)
+   */
+  public boolean copySelectedObjects(CtuluCommandContainer _cmd, CtuluUI _ui) {
+    if (isSelectionEmpty() || isAtomicMode()) return false;
+    int nb=modele_.getNombre();
+
+    GrSegment pdec=new GrSegment(new GrPoint(0,5,0),new GrPoint(5,0,0));
+    pdec.autoApplique(getVersReel());
+    if (!((ZModelePointEditable)modele_).copyGlobal(selection_, pdec.getVx(), pdec.getVy(), _cmd)) return false;
+    
+    // Changement de selection.
+    int[] isels=new int[selection_.getNbSelectedIndex()];
+    for (int i=0; i<isels.length; i++) {
+      isels[i]=nb+i;
+    }
+    setSelection(isels);
+    return true;
+  }
+
   public final void setEditor(final ZEditorInterface _editor) {
     editor_ = _editor;
   }
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-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java	2008-06-18 09:09:38 UTC (rev 3643)
@@ -744,4 +744,35 @@
     geometries_.removeLignes(_idx, _cmd);
     return true;
   }
+  
+  /**
+   * Copie d'une geom\xE9trie, avec d\xE9calage.
+   */
+  public boolean copyGlobal(CtuluListSelectionInterface _selection, double _dx, double _dy, final CtuluCommandContainer _cmd) {
+    if (geometries_ == null) return false;
+    
+    final CtuluCommandComposite cmp = new CtuluCommandComposite();
+    for (int idx = _selection.getMinIndex(); idx<=_selection.getMaxIndex(); idx++) {
+      if (_selection.isSelected(idx)) {
+        // La g\xE9ometrie, d\xE9cal\xE9e.
+        LineString geom=(LineString)geometries_.getGeometry(idx).clone();
+        CoordinateSequence seq=geom.getCoordinateSequence();
+        for (int i=0; i<seq.size(); i++) {
+          seq.setOrdinate(i,0,seq.getX(i)+_dx);
+          seq.setOrdinate(i,1,seq.getY(i)+_dy);
+        }
+        // Les valeurs d'attribut.
+        Object[] vals=new Object[geometries_.getNbAttributes()];
+        for (int iatt=0; iatt<geometries_.getNbAttributes(); iatt++) {
+          Object val=geometries_.getValue(iatt,idx);
+          int nbpt=geom.getNumPoints();
+          vals[iatt]=geometries_.getAttribute(iatt).createDataForGeom(val, nbpt);
+        }
+        geometries_.addGeometry(geom,vals,cmp);
+      }
+    }
+    
+    if (_cmd!=null) _cmd.addCmd(cmp.getSimplify());
+    return true;
+  }
 }
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-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java	2008-06-18 09:09:38 UTC (rev 3643)
@@ -18,6 +18,7 @@
 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;
@@ -720,4 +721,35 @@
     }
     return r;
   }
+  
+  /**
+   * Copie d'une geom\xE9trie, avec d\xE9calage.
+   */
+  public boolean copyGlobal(CtuluListSelectionInterface _selection, double _dx, double _dy, final CtuluCommandContainer _cmd) {
+    if (geometries_ == null) return false;
+    
+    final CtuluCommandComposite cmp = new CtuluCommandComposite();
+    for (int idx = _selection.getMinIndex(); idx<=_selection.getMaxIndex(); idx++) {
+      if (_selection.isSelected(idx)) {
+        // La g\xE9ometrie, d\xE9cal\xE9e.
+        CoordinateSequence seq=(CoordinateSequence)((GISMultiPoint)geometries_.getGeometry(idx)).getCoordinateSequence().clone();
+        for (int i=0; i<seq.size(); i++) {
+          seq.setOrdinate(i,0,seq.getX(i)+_dx);
+          seq.setOrdinate(i,1,seq.getY(i)+_dy);
+        }
+        GISMultiPoint geom=(GISMultiPoint)GISGeometryFactory.INSTANCE.createMultiPoint(seq);
+        // Les valeurs d'attribut.
+        Object[] vals=new Object[geometries_.getNbAttributes()];
+        for (int iatt=0; iatt<geometries_.getNbAttributes(); iatt++) {
+          Object val=geometries_.getValue(iatt,idx);
+          int nbpt=geom.getNumPoints();
+          vals[iatt]=geometries_.getAttribute(iatt).createDataForGeom(val, nbpt);
+        }
+        geometries_.addGeometry(geom,vals,cmp);
+      }
+    }
+    
+    if (_cmd!=null) _cmd.addCmd(cmp.getSimplify());
+    return true;
+  }
 }
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-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java	2008-06-18 09:09:38 UTC (rev 3643)
@@ -14,14 +14,18 @@
 
 import com.vividsolutions.jts.geom.CoordinateSequence;
 import com.vividsolutions.jts.geom.Envelope;
+import com.vividsolutions.jts.geom.Point;
 
 import com.memoire.bu.BuTable;
 
 import org.fudaa.ctulu.CtuluAnalyze;
+import org.fudaa.ctulu.CtuluCommandComposite;
 import org.fudaa.ctulu.CtuluCommandContainer;
 import org.fudaa.ctulu.CtuluLib;
 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.GISPoint;
 import org.fudaa.ctulu.gis.GISZoneCollection;
 import org.fudaa.ctulu.gis.GISZoneCollectionPoint;
@@ -222,6 +226,37 @@
       }
     }
   }
+  
+  /**
+   * Copie d'une geom\xE9trie, avec d\xE9calage.
+   */
+  public boolean copyGlobal(CtuluListSelectionInterface _selection, double _dx, double _dy, final CtuluCommandContainer _cmd) {
+    if (pts_ == null) return false;
+    
+    final CtuluCommandComposite cmp = new CtuluCommandComposite();
+    for (int idx = _selection.getMinIndex(); idx<=_selection.getMaxIndex(); idx++) {
+      if (_selection.isSelected(idx)) {
+        // La g\xE9ometrie, d\xE9cal\xE9e.
+        Point geom=(Point)pts_.getGeometry(idx).clone();
+        CoordinateSequence seq=geom.getCoordinateSequence();
+        for (int i=0; i<seq.size(); i++) {
+          seq.setOrdinate(i,0,seq.getX(i)+_dx);
+          seq.setOrdinate(i,1,seq.getY(i)+_dy);
+        }
+        // Les valeurs d'attribut.
+        Object[] vals=new Object[pts_.getNbAttributes()];
+        for (int iatt=0; iatt<pts_.getNbAttributes(); iatt++) {
+          Object val=pts_.getValue(iatt,idx);
+          int nbpt=geom.getNumPoints();
+          vals[iatt]=pts_.getAttribute(iatt).createDataForGeom(val, nbpt);
+        }
+        pts_.addGeometry(geom,vals,cmp);
+      }
+    }
+    
+    if (_cmd!=null) _cmd.addCmd(cmp.getSimplify());
+    return true;
+  }
 
   public int getNombre() {
     return pts_.getNumGeometries();
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-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java	2008-06-18 09:09:38 UTC (rev 3643)
@@ -85,6 +85,20 @@
     }
   }
   
+  /**
+   * Copie les objets s\xE9lectionn\xE9s.
+   */
+  public void copySelectedObjects() {
+    ZCalqueEditable[] cqs=scene_.getEditableLayers();
+    final CtuluCommandComposite cmp = new CtuluCommandComposite();
+    for (int i=0; i<cqs.length; i++) {
+      cqs[i].copySelectedObjects(cmp, ui_);
+    }
+    if (mng_ != null) {
+      mng_.addCmd(cmp.getSimplify());
+    }
+  }
+  
   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/commun/impl/FudaaCommonImplementation.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/commun/impl/FudaaCommonImplementation.java	2008-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/commun/impl/FudaaCommonImplementation.java	2008-06-18 09:09:38 UTC (rev 3643)
@@ -32,6 +32,7 @@
 import java.util.List;
 import java.util.Locale;
 
+import javax.swing.AbstractAction;
 import javax.swing.AbstractButton;
 import javax.swing.Action;
 import javax.swing.JButton;
@@ -156,24 +157,6 @@
     return idx;
   }
 
-  /**
-   * Retourne l'index d'une commande dans le menu.
-   * @param _mn Le menu
-   * @param _cmd La chaine repr\xE9sentant la commande
-   * @return L'index, ou -1 si non trouv\xE9.
-   */
-  private int indexOfActionInMenu(final BuMenu _mn, String _cmd) {
-    int idx = -1;
-    for (int i = _mn.getItemCount() - 1; i >= 0; i--) {
-      if (_mn.getItem(i) instanceof JMenuItem
-          && _cmd.equals(_mn.getItem(i).getActionCommand())) {
-        idx = i;
-        break;
-      }
-    }
-    return idx;
-  }
-
   private void gestionnaireImpression(final String _commande) {
     final JInternalFrame frame = getCurrentInternalFrame();
     final EbliPageable target;
@@ -275,14 +258,18 @@
     return false;
   }
 
-  
   /**
-   * Cr\xE9ation d'une action ebli a partir d'un item menu.
-   * @return L'action cr\xE9\xE9e, ou null si aucune commande ne correspond.
+   * Remplace un item menu en provenance de Bu par une action, plus g\xE9n\xE9raliste.
+   * @param _command La commande.
+   * @return L'action de remplacement, ou null si la commande n'existait pas.
    */
-  private EbliActionAbstract createActionFromItem(String _command) {
+  protected EbliActionAbstract replaceItemByAction(String _command) {
     JMenuItem it=((JMenuItem)getMainMenuBar().getMenuItem(_command));
     if (it==null) return null;
+    BuMenu mn=(BuMenu)getMainMenuBar().getMenuForAction(_command);
+    if (mn==null) return null;
+    int idx=mn.indexOf(_command);
+    if (idx==-1) return null;
 
     EbliActionAbstract act=new EbliActionSimple(it.getText(),it.getIcon(),it.getActionCommand()) {
       public void actionPerformed(ActionEvent _evt) {
@@ -291,18 +278,23 @@
     };
     act.setDefaultToolTip(it.getToolTipText());
     act.setKey(it.getAccelerator());
+    mn.remove(idx);
+    mn.insert(act,idx)
+    // Pour rester compatible avec Bu.
+      .setName("mi"+_command);
+    
     return act;
   }
-  
+    
   /**
    * Cr\xE9ation des actions sp\xE9cifiques a Fudaa.
    */
   private void buildActions() {
     EbliActionAbstract act;
 
-    act=createActionFromItem("TOUTSELECTIONNER");
+    act=replaceItemByAction("TOUTSELECTIONNER");
     if (act!=null) EbliActionMap.getInstance().addAction(act);
-    act=createActionFromItem("RECHERCHER");
+    act=replaceItemByAction("RECHERCHER");
     if (act!=null) EbliActionMap.getInstance().addAction(act);
 
     act=new EbliActionSimple(CtuluLib.getS("Inverser la s\xE9lection"),BuResource.BU.getIcon("aucun"),"INVERSESELECTION") {
@@ -321,6 +313,9 @@
     act.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK));
     EbliActionMap.getInstance().addAction(act);
     
+    act=replaceItemByAction("DUPLIQUER");
+    act.setEnabled(false);
+    if (act!=null) EbliActionMap.getInstance().addAction(act);
   }
   
   /**
@@ -495,14 +490,10 @@
   }
   
   protected void rebuildEditionMenu(final BuMenu _dest) {
-    int indSelect=indexOfActionInMenu(_dest, "TOUTSELECTIONNER");
-    _dest.remove(indSelect);
-    _dest.remove(indSelect);
-    _dest.remove(indSelect);
-    _dest.insert(EbliActionMap.getInstance().getAction("TOUTSELECTIONNER"),indSelect);
+    int indSelect=_dest.indexOf("TOUTSELECTIONNER");
+    _dest.remove(indSelect+2);
     _dest.insert(EbliActionMap.getInstance().getAction("INVERSESELECTION"),indSelect+1);
     _dest.insert(EbliActionMap.getInstance().getAction("CLEARSELECTION"),indSelect+2);
-    _dest.insert(EbliActionMap.getInstance().getAction("RECHERCHER"),indSelect+3);
     addConsoleMenu(_dest);
   }
 
@@ -805,8 +796,8 @@
    */
   public void init() {
     super.init();
+    
     buildActions();
-//    addConsoleMenu((BuMenu) getMainMenuBar().getMenu("MENU_EDITION"));
     rebuildEditionMenu((BuMenu) getMainMenuBar().getMenu("MENU_EDITION"));
     
     final BuToolBar tb = getMainToolBar();
@@ -844,7 +835,7 @@
       }
 
     }
-    final BuMenu mn = (BuMenu) getMainMenuBar().getMenu("MENU_FENETRES");
+    BuMenu mn = (BuMenu) getMainMenuBar().getMenu("MENU_FENETRES");
 
     if (mn != null) {
       mn.remove(0);
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlFille2d.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlFille2d.java	2008-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlFille2d.java	2008-06-18 09:09:38 UTC (rev 3643)
@@ -11,6 +11,7 @@
 
 import com.db4o.ObjectContainer;
 
+import com.memoire.bu.BuCutCopyPasteInterface;
 import com.memoire.bu.BuUndoRedoInterface;
 
 import org.fudaa.ctulu.CtuluCommandManager;
@@ -39,7 +40,7 @@
  * @version $Id: MdlFille2d.java,v 1.1.2.1 2008/02/01 14:40:03 bmarchan Exp $
  */
 public class MdlFille2d extends ZEbliFilleCalques implements BuUndoRedoInterface, CtuluExportDataInterface,
-    CtuluImageImporter, CtuluUndoRedoInterface, FudaaSavable {
+    CtuluImageImporter, CtuluUndoRedoInterface, FudaaSavable, BuCutCopyPasteInterface {
 
   public MdlFille2d(FudaaCommonImplementation _ui) {
     super(new MdlVisuPanel(_ui), _ui, null);
@@ -80,7 +81,6 @@
 
   public void undo() {
     getMdlVisuPanel().undo();
-
   }
 
   public void clearCmd(final CtuluCommandManager _source) {
@@ -96,4 +96,19 @@
 
   }
 
+  public void copy() {
+    getMdlVisuPanel().copy();
+  }
+
+  public void cut() {
+    getMdlVisuPanel().cut();
+  }
+
+  public void duplicate() {
+    getMdlVisuPanel().duplicate();
+  }
+
+  public void paste() {
+    getMdlVisuPanel().paste();
+  }
 }
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java	2008-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java	2008-06-18 09:09:38 UTC (rev 3643)
@@ -10,7 +10,10 @@
 import javax.swing.Action;
 
 import org.fudaa.ebli.calque.BGroupeCalque;
+import org.fudaa.ebli.calque.ZSelectionEvent;
+import org.fudaa.ebli.calque.ZSelectionListener;
 import org.fudaa.ebli.commun.EbliActionInterface;
+import org.fudaa.ebli.commun.EbliActionMap;
 import org.fudaa.ebli.ressource.EbliResource;
 import org.fudaa.fudaa.commun.FudaaLib;
 import org.fudaa.fudaa.commun.impl.FudaaCommonImplementation;
@@ -35,7 +38,7 @@
  * @author fred deniger
  * @version $Id: MdlVisuPanel.java,v 1.1.2.6 2008/05/13 12:10:21 bmarchan Exp $
  */
-public class MdlVisuPanel extends FSigVisuPanel {
+public class MdlVisuPanel extends FSigVisuPanel implements ZSelectionListener {
 
 //  final FSigLayerGroup parent_;
   BGroupeCalque cqImg_;
@@ -50,8 +53,9 @@
   public MdlVisuPanel(FudaaCommonImplementation _impl/*, boolean _createDefault*/) {
     super(_impl);
     initCalques(true);
-    installActions();
+    installLayerActions();
     getScene().setRestrictedToCalqueActif(false);
+    getScene().addSelectionListener(this);
   }
 
   protected FSigEditor createGisEditor() {
@@ -78,10 +82,10 @@
     buildModel1dLayerGroup(_build);
     buildImageGroup();
     
-    installActions();
+    installLayerActions();
   }
   
-  protected void installActions() {
+  protected void installLayerActions() {
     EbliActionInterface actNewCloud=new CalqueNewCalqueAction(FudaaLib.getS("Nouveau calque semis"),FudaaResource.FUDAA.getIcon("ajouter"),"NEW_LAYER2D_CLOUD",cqAlti_,getGisEditor());
     EbliActionInterface actNewLevel=new CalqueNewCalqueAction(FudaaLib.getS("Nouveau calque courbes de niveaux"),FudaaResource.FUDAA.getIcon("ajouter"),"NEW_LAYER2D_LEVEL",cqAlti_,getGisEditor());
     EbliActionInterface actNewProfile=new CalqueNewCalqueAction(FudaaLib.getS("Nouveau calque profils"),FudaaResource.FUDAA.getIcon("ajouter"),"NEW_LAYER2D_PROFILE",cqAlti_,getGisEditor());
@@ -146,4 +150,12 @@
     cqTrace.setName(BGroupeCalque.findUniqueChildName(cqMdl1d_, cqTrace.getExtName()));
     cqMdl1d_.add(cqTrace);
   }
+
+  /*
+   * @see org.fudaa.ebli.calque.ZSelectionListener#selectionChanged(org.fudaa.ebli.calque.ZSelectionEvent)
+   */
+  public void selectionChanged(ZSelectionEvent _evt) {
+    EbliActionInterface act=EbliActionMap.getInstance().getAction("DUPLIQUER");
+    act.setEnabled(!getScene().isSelectionEmpty());
+  }
 }
\ No newline at end of file
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigVisuPanel.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigVisuPanel.java	2008-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigVisuPanel.java	2008-06-18 09:09:38 UTC (rev 3643)
@@ -220,6 +220,10 @@
     mng_.undo();
   }
 
+  public void duplicate() {
+    gisEditor_.getSceneEditor().copySelectedObjects();
+  }
+
   /**
    * @return le groupe contenant les donn\xE9es geographiques.
    */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 |