From: <emm...@us...> - 2008-12-02 09:24:51
|
Revision: 4258 http://fudaa.svn.sourceforge.net/fudaa/?rev=4258&view=rev Author: emmanuel_martin Date: 2008-12-02 09:24:47 +0000 (Tue, 02 Dec 2008) Log Message: ----------- Tache #111 : "G?\195?\169rer correctement quand un fond de carte est manquant." Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonnees.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueImageRaster.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalquePoint.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEditVisibility.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/MdlSceneEditor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneMoveInLayerAction.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigImageWizardTask.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonnees.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonnees.java 2008-12-01 16:09:55 UTC (rev 4257) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonnees.java 2008-12-02 09:24:47 UTC (rev 4258) @@ -58,7 +58,10 @@ */ public void initSelection() { if (selection_ == null) { - selection_ = new CtuluListSelection(modeleDonnees().getNombre() / 2 + 1); + if(modeleDonnees()!=null) + selection_ = new CtuluListSelection(modeleDonnees().getNombre() / 2 + 1); + else + selection_ = new CtuluListSelection(0); // selection_.addListeSelectionListener(this); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueImageRaster.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueImageRaster.java 2008-12-01 16:09:55 UTC (rev 4257) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueImageRaster.java 2008-12-02 09:24:47 UTC (rev 4258) @@ -9,6 +9,7 @@ package org.fudaa.ebli.calque; import java.awt.AlphaComposite; +import java.awt.Color; import java.awt.Component; import java.awt.Graphics; import java.awt.Graphics2D; @@ -156,20 +157,26 @@ * @param _y lieu cible de l'icone (y) */ public void paintIcon(final Component _c, final Graphics _g, final int _x, final int _y) { - // boolean attenue = isAttenue(); - if (getModelImage() == null) { - return; + final int w=getIconWidth()-1; + final int h=getIconHeight()-1; + if (getModelImage()==null) { + // Dessine une croix rouge indiquant une erreur. + Color c=_g.getColor(); + _g.setColor(Color.red); + _g.drawLine(0, 0, w, h); + _g.drawLine(0, h, w, 0); + _g.setColor(c); } - final int w = getIconWidth() - 1; - final int h = getIconHeight() - 1; - final Image im = getModelImage().getImage(); - if (im != null) { - final int wi = im.getWidth(this); - final int hi = im.getHeight(this); - final int r = Math.max(wi / w, hi / h); - final int wImage = wi / r - 1; - final int hImage = hi / r - 1; - _g.drawImage(im, (w - wImage) / 2 + 1, (h - hImage) / 2 + 1, wImage, hImage, _c); + else { + final Image im=getModelImage().getImage(); + if (im!=null) { + final int wi=im.getWidth(this); + final int hi=im.getHeight(this); + final int r=Math.max(wi/w, hi/h); + final int wImage=wi/r-1; + final int hImage=hi/r-1; + _g.drawImage(im, (w-wImage)/2+1, (h-hImage)/2+1, wImage, hImage, _c); + } } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalquePoint.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalquePoint.java 2008-12-01 16:09:55 UTC (rev 4257) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalquePoint.java 2008-12-02 09:24:47 UTC (rev 4258) @@ -350,7 +350,7 @@ } public CtuluListSelection selectionBasic(final LinearRing _poly, final int _mode) { - if (modele_.getNombre() == 0 || !isVisible()) { + if (modele_==null||modele_.getNombre() == 0 || !isVisible()) { return null; } final Envelope polyEnv = _poly.getEnvelopeInternal(); @@ -402,7 +402,7 @@ } protected CtuluListSelection selectionBasic(final GrPoint _pt, final int _tolerance) { - if (modele().getNombre() == 0 || (!isVisible())) { + if (modele()==null||modele().getNombre() == 0 || (!isVisible())) { return null; } final int i = getSelectedPoint(modele_, _pt, _tolerance, getVersReel(), getClipReel(getGraphics())); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java 2008-12-01 16:09:55 UTC (rev 4257) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java 2008-12-02 09:24:47 UTC (rev 4258) @@ -189,7 +189,8 @@ System.arraycopy(isels, 0, iglobsels, ipt, isels.length); ipt+=isels.length; } - idecal+=cqs[i].modeleDonnees().getNombre(); + if(cqs[i].modeleDonnees()!=null) + idecal+=cqs[i].modeleDonnees().getNombre(); } } // for (int i=0; i<lists_.length-1; i++) { @@ -543,7 +544,9 @@ */ public int getNombre() { int nb=0; - for (ZCalqueAffichageDonneesInterface cq : getTargetLayers()) nb+=cq.modeleDonnees().getNombre(); + for (ZCalqueAffichageDonneesInterface cq : getTargetLayers()) + if(cq.modeleDonnees()!=null) + nb+=cq.modeleDonnees().getNombre(); return nb; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEditVisibility.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEditVisibility.java 2008-12-01 16:09:55 UTC (rev 4257) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEditVisibility.java 2008-12-02 09:24:47 UTC (rev 4258) @@ -394,15 +394,19 @@ for(int i=0;i<calques_.length;i++){ if(calques_[i].getTitle().equals(calque_.getSelectedItem())||calque_.getSelectedItem()==allCalquesEntry_){ ZModeleEditable model = calques_[i].getModelEditable(); - // Extraction des donn\xE9es utiles - GISZoneCollection zone=model.getGeomData(); - int indexTitre=zone.getIndiceOf(GISAttributeConstants.TITRE); - int indexVisibility=zone.getIndiceOf(GISAttributeConstants.VISIBILITE); - if(indexTitre!=-1&&indexVisibility!=-1) - for(int j=0;j<zone.getNbGeometries();j++) - if(!onlyInvisible_||zone.getValue(indexVisibility, j)==GISAttributeConstants.ATT_VAL_FALSE) - if(j<zone.getModel(indexVisibility).getSize()&&j<zone.getModel(indexTitre).getSize()) - rows.add(new Object[]{zone.getValue(indexTitre, j), zone.getValue(indexVisibility, j).equals(GISAttributeConstants.ATT_VAL_TRUE)?true:false, model, scene_.layerId2SceneId(calques_[i], j)}); + if (model!=null) { + // Extraction des donn\xE9es utiles + GISZoneCollection zone=model.getGeomData(); + int indexTitre=zone.getIndiceOf(GISAttributeConstants.TITRE); + int indexVisibility=zone.getIndiceOf(GISAttributeConstants.VISIBILITE); + if (indexTitre!=-1&&indexVisibility!=-1) + for (int j=0; j<zone.getNbGeometries(); j++) + if (!onlyInvisible_||zone.getValue(indexVisibility, j)==GISAttributeConstants.ATT_VAL_FALSE) + if (j<zone.getModel(indexVisibility).getSize()&&j<zone.getModel(indexTitre).getSize()) + rows.add(new Object[]{zone.getValue(indexTitre, j), + zone.getValue(indexVisibility, j).equals(GISAttributeConstants.ATT_VAL_TRUE) ? true:false, model, + scene_.layerId2SceneId(calques_[i], j)}); + } } } table_.setModel(new GeomTableModel(new String[]{EbliLib.getS("Nom"), EbliLib.getS("Visibilit\xE9")}, rows.toArray(new Object[0][]))); @@ -567,7 +571,8 @@ public void doHide(){ // Suppression de l'\xE9coute de tout les calques for(int i=0;i<listenModels_.length;i++) - listenModels_[i].removeModelListener(this); + if(listenModels_[i]!=null) + listenModels_[i].removeModelListener(this); // Mise a jour du tableau de listeners listenModels_=new ZModeleEditable[0]; } 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-01 16:09:55 UTC (rev 4257) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java 2008-12-02 09:24:47 UTC (rev 4258) @@ -70,7 +70,7 @@ acts.add(new SceneSplitAction(sceneEditor_)); acts.add(new SceneInterpolationAction((MdlSceneEditor)sceneEditor_)); - acts.add(new SceneMoveInLayerAction((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_)); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-12-01 16:09:55 UTC (rev 4257) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-12-02 09:24:47 UTC (rev 4258) @@ -138,8 +138,12 @@ */ public void moveInLayerSelectedGeometries() { ZModeleGeometry mdldest=(ZModeleGeometry)((ZCalqueAffichageDonneesInterface)getScene().getCalqueActif()).modeleDonnees(); + if(mdldest==null) + return; GISZoneCollection coldest=mdldest.getGeomData(); - + if(coldest==null) + return; + int[] idxGeom=getScene().getLayerSelection().getSelectedIndex(); Geometry[] geoms=new Geometry[idxGeom.length]; for (int i=0; i<idxGeom.length; i++) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneMoveInLayerAction.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneMoveInLayerAction.java 2008-12-01 16:09:55 UTC (rev 4257) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneMoveInLayerAction.java 2008-12-02 09:24:47 UTC (rev 4258) @@ -9,48 +9,36 @@ import java.awt.event.ActionEvent; -import javax.swing.tree.TreeSelectionModel; +import javax.swing.event.TreeSelectionEvent; +import javax.swing.event.TreeSelectionListener; -import org.fudaa.ctulu.gis.GISPolyligne; -import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; +import org.fudaa.ebli.calque.BArbreCalqueModel; import org.fudaa.ebli.calque.ZScene; import org.fudaa.ebli.calque.ZSelectionEvent; import org.fudaa.ebli.calque.ZSelectionListener; -import org.fudaa.ebli.calque.edition.BPaletteEdition; -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.ZEditorInterface; -import org.fudaa.ebli.calque.edition.BPaletteRotation; -import org.fudaa.ebli.calque.edition.ZSceneEditor; -import org.fudaa.ebli.commun.BPalettePanelInterface; -import org.fudaa.ebli.commun.EbliActionPaletteTreeModel; import org.fudaa.ebli.commun.EbliActionSimple; -import org.fudaa.ebli.commun.EbliFormatterInterface; import org.fudaa.ebli.ressource.EbliResource; import org.fudaa.fudaa.modeleur.MdlSceneEditor; import org.fudaa.fudaa.modeleur.layer.MdlLayer2dLine; import org.fudaa.fudaa.modeleur.layer.MdlLayer2dMultiPoint; -import com.memoire.fu.Fu; -import com.memoire.fu.FuLog; - /** * Une action pour d\xE9placer un objet dans un autre calque, reagissant au changement de calque selectionn\xE9. * @author Fred Deniger * @version $Id: SceneMoveInLayerAction.java,v 1.1.2.1 2008-05-13 12:10:53 bmarchan Exp $ */ -public class SceneMoveInLayerAction extends EbliActionSimple implements ZSelectionListener { +public class SceneMoveInLayerAction extends EbliActionSimple implements ZSelectionListener, TreeSelectionListener { MdlSceneEditor sceneEditor_; /** * @param _m l'arbre des calques */ - public SceneMoveInLayerAction(MdlSceneEditor _sceneEditor) { + public SceneMoveInLayerAction(MdlSceneEditor _sceneEditor, BArbreCalqueModel _tree) { super(EbliResource.EBLI.getString("D\xE9placer dans le calque cible"), null/*EbliResource.EBLI.getToolIcon("draw-rotation")*/, "MOVE_IN_LAYER"); setSceneEditor(_sceneEditor); sceneEditor_.getScene().addSelectionListener(this); + _tree.addTreeSelectionListener(this); } public void actionPerformed(final ActionEvent _e) { @@ -89,4 +77,11 @@ public void selectionChanged(ZSelectionEvent _evt) { updateForSelectionChanged(); } + + /* (non-Javadoc) + * @see javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent) + */ + public void valueChanged(TreeSelectionEvent e) { + updateForSelectionChanged(); + } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigImageWizardTask.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigImageWizardTask.java 2008-12-01 16:09:55 UTC (rev 4257) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigImageWizardTask.java 2008-12-02 09:24:47 UTC (rev 4258) @@ -82,7 +82,7 @@ } public int getStepCount() { - return calqueToModify_ == null ? 2 : 1; + return calqueToModify_ == null || force2Step_ ? 2 : 1; } public void cancelTask() { @@ -94,6 +94,11 @@ BGroupeCalque dest_; ZCalqueImageRaster calqueToModify_; + /** + * boolean permettant de forcer des \xE9tapes au wizard. Utile lors de la + * modification de d'un calque image existant sans image. + */ + private boolean force2Step_=false; public void doTask() { if (calage_ == null) { @@ -115,7 +120,12 @@ } else { calqueToModify_.setTitle(img_.getCalqueTitle()); model = calqueToModify_.getModelImage(); - model.setImage(img_.getImg()); + if(model!=null) + model.setImage(img_.getImg()); + else { + calqueToModify_.setModele(new ZModeleStatiqueImageRaster(img_.getImg())); + model = calqueToModify_.getModelImage(); + } } model.setProj(res.ptImg_, res.ptReel_, res.transform_, res.error_); if (calqueToModify_ != null) { @@ -190,11 +200,17 @@ } public void setModelToModiy(final ZCalqueImageRaster _modelToModiy) { - calqueToModify_ = _modelToModiy; - final RasterDataInterface data = _modelToModiy.getModelImage().getData(); - img_.setData(data, _modelToModiy.getTitle()); - nextStep(); - + if (_modelToModiy!=null) { + calqueToModify_=_modelToModiy; + if (_modelToModiy.getModelImage()!=null) { + force2Step_=false; + final RasterDataInterface data=_modelToModiy.getModelImage().getData(); + img_.setData(data, _modelToModiy.getTitle()); + nextStep(); + } + else + force2Step_=true; + } } public CalqueFactory getFact() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |