From: <bma...@us...> - 2008-12-03 13:56:44
|
Revision: 4262 http://fudaa.svn.sourceforge.net/fudaa/?rev=4262&view=rev Author: bmarchan Date: 2008-12-03 13:56:39 +0000 (Wed, 03 Dec 2008) Log Message: ----------- Tache #104 : Les actions ?\195?\169diter et joindre sont mises dans menu "G?\195?\169ometrie" Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneSplitAction.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dMultiPoint.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java Added Paths: ----------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneJoinAction.java Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneJoinAction.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneJoinAction.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneJoinAction.java 2008-12-03 13:56:39 UTC (rev 4262) @@ -0,0 +1,105 @@ +/* + * @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.ctulu.gis.GISZoneCollectionLigneBrisee; +import org.fudaa.ebli.calque.ZModeleGeometry; +import org.fudaa.ebli.calque.ZScene; +import org.fudaa.ebli.calque.ZSelectionEvent; +import org.fudaa.ebli.calque.ZSelectionListener; +import org.fudaa.ebli.calque.ZScene.SceneSelectionHelper; +import org.fudaa.ebli.calque.edition.ZCalqueEditable; +import org.fudaa.ebli.calque.edition.ZCalqueLigneBriseeEditable; +import org.fudaa.ebli.calque.edition.ZCalqueMultiPointEditable; +import org.fudaa.ebli.calque.edition.ZSceneEditor; +import org.fudaa.ebli.commun.EbliActionSimple; + +import com.memoire.bu.BuResource; +import com.memoire.fu.Fu; +import com.memoire.fu.FuLog; + + +/** + * 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 + */ +public class SceneJoinAction extends EbliActionSimple implements ZSelectionListener { + ZSceneEditor editor_; + + public SceneJoinAction(ZSceneEditor _editor) { + super(BuResource.BU.getString("Joindre"), null, "GIS_JOIN"); + editor_=_editor; + editor_.getScene().addSelectionListener(this); + setDefaultToolTip(CtuluLib.getS("Joindre 2 polylignes ou 2 multipoints d'un m\xEAme calque")); + } + + public void actionPerformed(final ActionEvent _e) { + editor_.joinSelectedObjects(); + } + + public void updateStateBeforeShow() { + super.setEnabled(isActivable()); + } + + /** + * Definit si l'action peut \xEAtre activ\xE9e. + * @return true si c'est possible. + */ + private boolean isActivable() { + putValue(Action.NAME, BuResource.BU.getString("Joindre")); + + ZScene scn=editor_.getScene(); + SceneSelectionHelper hlp=editor_.getScene().getSelectionHelper(); + + // On autorise la jonction que sur 2 g\xE9om\xE9tries d'un m\xEAme calque. + + // La selection est vide + if (scn.isSelectionEmpty()) return false; + // Le nombre de geometries n'est pas egal \xE0 2 + int[] idxgeom=hlp.getSelectedIndexes(); + if (idxgeom.length!=2) return false; + // Les g\xE9om\xE9tries n'appartiennent pas au m\xEAme calque. + if (scn.getLayerForId(idxgeom[0])!=scn.getLayerForId(idxgeom[1])) return false; + + // Les g\xE9om\xE9tries sont 2 multipoints, ok quelque soit le mode. + if (scn.getObject(idxgeom[0]) instanceof GISMultiPoint && + scn.getObject(idxgeom[1]) instanceof GISMultiPoint) { + + putValue(Action.NAME, BuResource.BU.getString("Joindre les multipoints")); + return true; + } + + // Les g\xE9om\xE9tries ne sont pas 2 polylignes + if (!(scn.getObject(idxgeom[0]) instanceof GISPolyligne) || + !(scn.getObject(idxgeom[1]) instanceof GISPolyligne)) return false; + + // Le mode n'est pas sommet pour des polylignes + if (!scn.isAtomicMode()) return false; + // Le nombre de sommets selectionn\xE9 n'est pas \xE9gal \xE0 2 + if (hlp.getNbAtomicSelected()!=2) return false; + + putValue(Action.NAME, BuResource.BU.getString("Joindre les polylignes")); + return true; + } + + public String getEnableCondition() { + return CtuluLib.getS("S\xE9lectionner les sommets extremit\xE9s de 2 polylignes ou deux semis de points"); + } + + public void selectionChanged(ZSelectionEvent _evt) { + updateStateBeforeShow(); + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneJoinAction.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneSplitAction.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneSplitAction.java 2008-12-03 11:49:10 UTC (rev 4261) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneSplitAction.java 2008-12-03 13:56:39 UTC (rev 4262) @@ -15,6 +15,8 @@ import org.fudaa.ctulu.gis.GISMultiPoint; import org.fudaa.ctulu.gis.GISPolyligne; import org.fudaa.ebli.calque.ZScene; +import org.fudaa.ebli.calque.ZSelectionEvent; +import org.fudaa.ebli.calque.ZSelectionListener; import org.fudaa.ebli.calque.ZScene.SceneSelectionHelper; import org.fudaa.ebli.calque.edition.ZCalqueEditable; import org.fudaa.ebli.calque.edition.ZSceneEditor; @@ -27,12 +29,13 @@ * {@link ZCalqueEditable}. Ne fonctionne pas sur des polygones. * @author Bertrand Marchand */ -public class SceneSplitAction extends EbliActionSimple { +public class SceneSplitAction extends EbliActionSimple implements ZSelectionListener { ZSceneEditor editor_; public SceneSplitAction(ZSceneEditor _editor) { super(BuResource.BU.getString("Scinder"), BuResource.BU.getIcon("couperligne"), "GIS_SPLIT"); editor_=_editor; + editor_.getScene().addSelectionListener(this); setDefaultToolTip(CtuluLib.getS("Scinder la g\xE9om\xE9trie")); } @@ -69,4 +72,8 @@ public String getEnableCondition() { return CtuluLib.getS("S\xE9lectionner 2 sommets consecutifs d'une polyligne<br>ou les sommets d'un multipoint"); } + + public void selectionChanged(ZSelectionEvent _evt) { + updateStateBeforeShow(); + } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditable.java 2008-12-03 11:49:10 UTC (rev 4261) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditable.java 2008-12-03 13:56:39 UTC (rev 4262) @@ -76,6 +76,13 @@ public boolean splitSelectedObject(CtuluCommandContainer _cmd, CtuluUI _ui); /** + * Joint 2 g\xE9ometries. + * @param _cmd La pile de commandes. + * @return true si les objets ont \xE9t\xE9 joints. + */ + public boolean joinSelectedObjects(final CtuluCommandContainer _cmd); + + /** * 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/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-12-03 11:49:10 UTC (rev 4261) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-12-03 13:56:39 UTC (rev 4262) @@ -79,7 +79,7 @@ * @param _cmd La pile de commandes. * @return true si les polylignes ont \xE9t\xE9 jointes. */ - public boolean joinGeometries(final CtuluCommandContainer _cmd) { + public boolean joinSelectedObjects(final CtuluCommandContainer _cmd) { if (isSelectionEmpty() || !isAtomicMode()) return false; int[] idxLines=new int[2]; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java 2008-12-03 11:49:10 UTC (rev 4261) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java 2008-12-03 13:56:39 UTC (rev 4262) @@ -362,7 +362,7 @@ * @param _cmd La pile de commandes. * @return true si les semis de points ont \xE9t\xE9 jointes. */ - public boolean joinGeometries(final CtuluCommandContainer _cmd) { + public boolean joinSelectedObjects(final CtuluCommandContainer _cmd) { if (isSelectionEmpty()) return false; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java 2008-12-03 11:49:10 UTC (rev 4261) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java 2008-12-03 13:56:39 UTC (rev 4262) @@ -293,4 +293,9 @@ public boolean splitSelectedObject(CtuluCommandContainer _cmd, CtuluUI _ui) { return false; } + + /* Sans objet */ + public boolean joinSelectedObjects(final CtuluCommandContainer _cmd) { + return false; + } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java 2008-12-03 11:49:10 UTC (rev 4261) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java 2008-12-03 13:56:39 UTC (rev 4262) @@ -131,6 +131,18 @@ cq.splitSelectedObject(mng_,ui_); } + /** + * Joint 2 g\xE9om\xE9tries d'un m\xEAme calque en 1<p> + * Principe : <br> + * Pour 2 multipoints, selection des 2 multipoints, ou d'un ou plusieurs sommets de 2 multipoints.<br> + * Pour 2 polylignes, selection de 2 sommets extremit\xE9. + */ + public void joinSelectedObjects() { + int[] idxs=getScene().getLayerSelectionMulti().getIdxSelected(); + ZCalqueEditable cq=(ZCalqueEditable)getScene().getLayerForId(idxs[0]); + cq.joinSelectedObjects(mng_); + } + protected void methodNotImplemented() { StackTraceElement stel=new Throwable().getStackTrace()[1]; String name=stel.getClassName()+"."+stel.getMethodName(); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java 2008-12-03 11:49:10 UTC (rev 4261) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java 2008-12-03 13:56:39 UTC (rev 4262) @@ -20,6 +20,7 @@ import org.fudaa.ctulu.gui.CtuluLibSwing; import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.BGroupeCalque; +import org.fudaa.ebli.calque.action.SceneJoinAction; import org.fudaa.ebli.calque.action.SceneSplitAction; import org.fudaa.ebli.calque.dessin.DeForme; import org.fudaa.ebli.calque.edition.BPaletteEdition; @@ -69,11 +70,16 @@ EbliActionInterface[] actSuper=sceneEditor_.getActions(); if (actSuper!=null) acts.addAll(Arrays.asList(actSuper)); + acts.addAll(Arrays.asList(getEditAction())); + acts.add(null); + acts.add(new SceneJoinAction(sceneEditor_)); acts.add(new SceneSplitAction(sceneEditor_)); + acts.add(null); + acts.add(new SceneDecimationAction((MdlSceneEditor)sceneEditor_)); + acts.add(new SceneRefinementAction((MdlSceneEditor)sceneEditor_)); + acts.add(null); acts.add(new SceneInterpolationAction((MdlSceneEditor)sceneEditor_)); acts.add(new SceneMoveInLayerAction((MdlSceneEditor)sceneEditor_, getPanel().getArbreCalqueModel())); - acts.add(new SceneDecimationAction((MdlSceneEditor)sceneEditor_)); - acts.add(new SceneRefinementAction((MdlSceneEditor)sceneEditor_)); acts.add(new SceneInvertAction((MdlSceneEditor)sceneEditor_)); acts.add(new SceneProjectionAction((MdlSceneEditor)sceneEditor_)); acts.add(new SceneProfilInterpolation((MdlSceneEditor)sceneEditor_)); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java 2008-12-03 11:49:10 UTC (rev 4261) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java 2008-12-03 13:56:39 UTC (rev 4262) @@ -10,6 +10,7 @@ import javax.swing.Action; import org.fudaa.ebli.calque.BArbreCalque; +import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.BGroupeCalque; import org.fudaa.ebli.calque.ZSelectionEvent; import org.fudaa.ebli.calque.ZSelectionListener; @@ -45,6 +46,7 @@ import org.fudaa.fudaa.tr.common.TrResource; import com.memoire.bu.BuMenu; +import com.memoire.bu.BuPopupMenu; /** * Le panneau de visu 2D des donn\xE9es du modeleur au travers des calques. Contient le composant vue @@ -237,6 +239,17 @@ cqMdl1d_.add(cqAxe); } + protected void fillCmdContextuelles(final BuPopupMenu _menu) { + if (getScene() != null) { + fillMenuWithSceneActions(_menu); + } + _menu.add(getMenuSelectionPath()); + if (contextTools_ == null) { + buildTools(); + } + _menu.add(contextTools_); + } + /** * Mise a jour des actions. * @see org.fudaa.ebli.calque.ZSelectionListener#selectionChanged(org.fudaa.ebli.calque.ZSelectionEvent) Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java 2008-12-03 11:49:10 UTC (rev 4261) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java 2008-12-03 13:56:39 UTC (rev 4262) @@ -49,9 +49,6 @@ private void installActions() { FSigEditor editor=(FSigEditor)getEditor(); ArrayList vacts=new ArrayList(); - vacts.addAll(Arrays.asList(editor.getEditAction())); - vacts.add(editor.getJoinAction()); - vacts.add(null); vacts.add(editor.getImportAction()); EbliActionInterface[] acts=(EbliActionInterface[])vacts.toArray(new EbliActionInterface[0]); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dMultiPoint.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dMultiPoint.java 2008-12-03 11:49:10 UTC (rev 4261) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dMultiPoint.java 2008-12-03 13:56:39 UTC (rev 4262) @@ -48,11 +48,6 @@ private void installActions() { FSigEditor editor=(FSigEditor)getEditor(); ArrayList vacts=new ArrayList(); - vacts.addAll(Arrays.asList(editor.getEditAction())); - vacts.add(editor.getJoinAction()); -// vacts.add(editor.getSplitAction()); -// vacts.add(editor.getJoinAction()); - vacts.add(null); vacts.add(editor.getImportAction()); EbliActionInterface[] acts=(EbliActionInterface[])vacts.toArray(new EbliActionInterface[0]); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java 2008-12-03 11:49:10 UTC (rev 4261) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java 2008-12-03 13:56:39 UTC (rev 4262) @@ -20,10 +20,7 @@ import org.fudaa.ctulu.ProgressionInterface; import org.fudaa.ctulu.gis.GISAttributeInterface; import org.fudaa.ctulu.gis.GISGeometryFactory; -import org.fudaa.ctulu.gis.GISMultiPoint; import org.fudaa.ctulu.gis.GISPolygone; -import org.fudaa.ctulu.gis.GISPolyligne; -import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; import org.fudaa.ctulu.gis.GISZoneListener; import org.fudaa.ctulu.gis.factory.GISExportDataStoreFactory; import org.fudaa.ctulu.gui.CtuluFileChooser; @@ -34,14 +31,11 @@ import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; -import org.fudaa.ebli.calque.ZCalqueAffichageDonneesMulti; import org.fudaa.ebli.calque.ZEbliCalquesPanel; import org.fudaa.ebli.calque.ZModelGeometryListener; import org.fudaa.ebli.calque.ZModeleGeometry; 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.ZCalqueMultiPointEditable; import org.fudaa.ebli.calque.edition.ZEditorDefault; import org.fudaa.ebli.calque.edition.ZSceneEditor; import org.fudaa.ebli.commun.EbliActionSimple; @@ -225,17 +219,6 @@ } return importAction_; } - - /** - * Une action pour joindre 2 polylignes ou deux multipoint. N'est pas dans les actions par defaut. - * @return L'action - */ - public EbliActionSimple getJoinAction() { - if (joinAction_ == null) { - joinAction_ = new JoinAction(); - } - return joinAction_; - } private class VisuAction extends EbliActionSimple { @@ -328,79 +311,6 @@ } } - /** - * 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 - */ - private class JoinAction extends EbliActionSimple { - - protected JoinAction() { - super(BuResource.BU.getString("Joindre"), /*BuResource.BU.getIcon("joindreligne")*/null, "GIS_JOIN"); - setDefaultToolTip(FudaaLib.getS("Joindre 2 polylignes ou 2 multipoint")); - } - - public void actionPerformed(final ActionEvent _e) { - joinSelectedGeometries(); - } - - public void updateStateBeforeShow() { - if (Fu.DEBUG && FuLog.isDebug()) { - FuLog.debug("FTR gis target= " + FSigEditor.this.getTarget()); - } - boolean b=false; - if (getSupport().getCalqueActif() instanceof ZCalqueLigneBriseeEditable) { - ZCalqueLigneBriseeEditable cq=(ZCalqueLigneBriseeEditable)getSupport().getCalqueActif(); - // Si le calque est editable, en mode atomique, et si le nombre de - // sommets est 2. - b=cq!=null&&FSigEditor.this.isEditable(cq)&&!cq.isSelectionEmpty()&&cq.isAtomicMode() - &&cq.getLayerSelectionMulti().getNbSelectedItem()==2; - // Si les sommets sont sur 2 des objets distincts, que ces objets sont - // des polylignes - if (b) { - int[] idxLignes=cq.getLayerSelectionMulti().getIdxSelected(); - b&=idxLignes.length==2; - if (b) { - for (int i=0; i<idxLignes.length; i++) - b&=(((GISZoneCollectionLigneBrisee)((ZModeleGeometry)cq.modeleDonnees()).getGeomData()).getGeometry(idxLignes[i]) instanceof GISPolyligne); - } - } - } - // Ou si c'est deux semis de points qui sont selectionn\xE9s - else if (getSupport().getCalqueActif() instanceof ZCalqueMultiPointEditable) { - ZCalqueMultiPointEditable cq=(ZCalqueMultiPointEditable)getSupport().getCalqueActif(); - // Deux selections en mode sommet ou global - // Ces deux s\xE9lections doivent \xEAtre des semis de points - if (cq!=null&&FSigEditor.this.isEditable(cq)&&!cq.isSelectionEmpty() - &&(cq.getLayerSelectionMulti()!=null&&cq.getLayerSelectionMulti().getNbSelectedItem()==2||cq.getLayerSelection()!=null&&cq.getLayerSelection().getNbSelectedIndex()==2)) { - int[] idxGeom; - if (cq.getLayerSelectionMulti()!=null&&cq.getLayerSelectionMulti().getNbSelectedItem()!=0) - idxGeom=cq.getLayerSelectionMulti().getIdxSelected(); - else - idxGeom=cq.getLayerSelection().getSelectedIndex(); - b=true; - for (int i=0; i<idxGeom.length; i++) - b=b&&(cq.modeleDonnees().getObject(idxGeom[i]) instanceof GISMultiPoint); - } - } - super.setEnabled(b); - } - - public String getEnableCondition() { - return FudaaLib.getS("S\xE9lectionner les sommets extremit\xE9s de 2 polylignes ou deux semis de points"); - } - } - - /** - * Joint 2 polylignes distinctes ou deux semis de points. - */ - protected void joinSelectedGeometries() { - if (getSupport().getCalqueActif() instanceof ZCalqueLigneBriseeEditable) - ((ZCalqueLigneBriseeEditable)getSupport().getCalqueActif()).joinGeometries(getMng()); - else if (getSupport().getCalqueActif() instanceof ZCalqueMultiPointEditable) - ((ZCalqueMultiPointEditable)getSupport().getCalqueActif()).joinGeometries(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. |