Hi Eric,

Thanks for the collboration.

Feel free to continue.

R1.


2007/9/25, Michaël Michaud <[EMAIL PROTECTED]>:
> Hi Eric,
>
> Nice to see another french guy involved in OpenJUMP development ;-)
> I reviewed your code and it's ok for me.
> Maybe you should explain the use case for setting an attribute with
> another attribute value.
> Anyway, this is just a new capability of an existing plugin.
> I can commit the code, or we have to ask Sunburned Surveyor or Stefan
> Steiniger (I think Stefan is out of his office until next week) who are
> the administrators of the site and can give svn access to new developers.
>
> Michaël
>
> Eric Lemesre a écrit :
>
> > Hello,
> >
> > Thank verry much for the good job in OpenJUMP.
> >
> > I make somme modifications in the plugIn ReplaceValuePlugIn (in
> > org.openjump.sigle.plugin.replace).
> > This plugin replace a attribute with a constante. And now we can copy
> > one attribute to an other one.
> >
> > I joint the code.
> >
> > How can i have acces to repository and what is rules to use?
> > Or how to put this modifications in JPP?
> >
> > I have planed somme other works and want to give it to the community
> >
> > Thanks
> > Eric
> >
> >------------------------------------------------------------------------
> >
> >
> >/*
> > * The Unified Mapping Platform (JUMP) is an extensible, interactive GUI
> > * for visualizing and manipulating spatial features with geometry and 
> > attributes.
> > *
> > * Copyright (C) 2003 Vivid Solutions
> > *
> > * This program is free software; you can redistribute it and/or
> > * modify it under the terms of the GNU General Public License
> > * as published by the Free Software Foundation; either version 2
> > * of the License, or (at your option) any later version.
> > *
> > * This program is distributed in the hope that it will be useful,
> > * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > * GNU General Public License for more details.
> > *
> > * You should have received a copy of the GNU General Public License
> > * along with this program; if not, write to the Free Software
> > * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, 
> > USA.
> > *
> > * For more information, contact:
> > *
> > * Vivid Solutions
> > * Suite #1A
> > * 2328 Government Street
> > * Victoria BC  V8T 5G5
> > * Canada
> > *
> > * (250)385-6040
> > * www.vividsolutions.com
> > */
> >
> >package org.openjump.sigle.plugin.replace;
> >
> >import java.awt.event.ActionEvent;
> >import java.awt.event.ActionListener;
> >import java.util.*;
> >
> >import javax.swing.ImageIcon;
> >import javax.swing.JCheckBox;
> >import javax.swing.JComboBox;
> >import javax.swing.JOptionPane;
> >import javax.swing.JTextField;
> >
> >
> >
> >import org.openjump.sigle.utilities.gui.DialogUtil;
> >
> >import com.vividsolutions.jump.I18N;
> >import com.vividsolutions.jump.feature.*;
> >import com.vividsolutions.jump.task.*;
> >import com.vividsolutions.jump.workbench.WorkbenchContext;
> >import com.vividsolutions.jump.workbench.model.*;
> >import com.vividsolutions.jump.workbench.plugin.*;
> >import com.vividsolutions.jump.workbench.ui.*;
> >import com.vividsolutions.jump.workbench.ui.images.IconLoader;
> >
> >
> >/**
> > *
> >* @author Erwan Bocher Laboratoire RESO UMR CNRS 6590
> >* @url www.projet-sigle.org
> >* @curentdate 25 juil. 06
> >* @package name org.openjump.sigle.plugin.replace
> >* @license Licence CeCILL http://www.cecill.info/
> >* @todo TODO
> >*
> > */
> >
> >
> >
> >public class ReplaceValuePlugIn
> >    extends AbstractPlugIn
> >    implements ThreadedPlugIn
> >{
> >
> >
> >  private MultiInputDialog dialog;
> >  //-- replace later with correct language
> >  private static String ATTRIBUTE = 
> > I18N.get("org.openjump.sigle.plugin.ReplaceValuePlugIn.Attribute");
> >  private static String VALUE = 
> > I18N.get("org.openjump.sigle.plugin.ReplaceValuePlugIn.New-value");
> >  private static String ATTRIBUTE_SRC = 
> > I18N.get("org.openjump.sigle.plugin.ReplaceValuePlugIn.Attribute-src");
> >  private static String BY_ATTRIBUTE = 
> > I18N.get("org.openjump.sigle.plugin.ReplaceValuePlugIn.New-value-by-copy");
> >  private static String TYPE = "";
> >  private static String SELECTED_ONLY = 
> > GenericNames.USE_SELECTED_FEATURES_ONLY;
> >
> >
> >  private Layer layer;
> >  private String attrName;
> >  private String attrNameSrc;
> >  private String value = "";
> >  private boolean useSelected = true;
> >  private boolean byAttribute = false;
> >  public static final ImageIcon ICON = IconLoader.icon("Wrench.gif");
> >
> >
> >  public ReplaceValuePlugIn()
> >  {
> >
> >  }
> >
> >  public void initialize(PlugInContext context) {
> >
> >         context.getFeatureInstaller().addMainMenuItem(this,new String[] { 
> > MenuNames.TOOLS, MenuNames.TOOLS_EDIT_ATTRIBUTES },
> >                       this.getName(), false, null,
> >                       createEnableCheck(context.getWorkbenchContext())
> >                               );
> >
> >       }
> >
> >  public String getName(){
> >       return 
> > I18N.get("org.openjump.sigle.plugin.ReplaceValuePlugIn.Replace-Attribute-Value");
> >  }
> >
> >  public boolean execute(PlugInContext context) throws Exception {
> >// lemesre: duplicate from private initialisation
> >         ATTRIBUTE = 
> > I18N.get("org.openjump.sigle.plugin.ReplaceValuePlugIn.Attribute");
> >    VALUE = 
> > I18N.get("org.openjump.sigle.plugin.ReplaceValuePlugIn.New-value");
> >         ATTRIBUTE_SRC = 
> > I18N.get("org.openjump.sigle.plugin.ReplaceValuePlugIn.Attribute-src");
> >         BY_ATTRIBUTE = 
> > I18N.get("org.openjump.sigle.plugin.ReplaceValuePlugIn.New-value-by-copy");
> >    SELECTED_ONLY = GenericNames.USE_SELECTED_FEATURES_ONLY;
> >
> >       dialog = new MultiInputDialog(
> >        context.getWorkbenchFrame(), getName(), true);
> >    setDialogValues(dialog, context);
> >    if (layer.isEditable()){
> >    GUIUtil.centreOnWindow(dialog);
> >    dialog.setVisible(true);
> >    if (! dialog.wasOKPressed()) { return false; }
> >    getDialogValues(dialog);
> >    return true;
> >         }
> >         else {
> >
> >           JOptionPane.showMessageDialog(dialog, 
> > I18N.get("ui.SchemaPanel.layer-must-be-editable"));
> >           }
> >         return false;
> >
> >  }
> >
> >  public void run(TaskMonitor monitor, PlugInContext context)
> >      throws Exception
> >  {
> >
> >
> >               // input-proofing
> >               if (layer == null) return;
> >               if (attrName == null) return;
> >         if (value == null && attrNameSrc == null) return;
> >
> >
> >           List srcFeatures = 
> > layer.getFeatureCollectionWrapper().getFeatures();
> >
> >
> >           if (useSelected){
> >
> >           Collection featureSelected = 
> > context.getLayerViewPanel().getSelectionManager().getFeaturesWithSelectedItems(layer);
> >  ;
> >
> >           //System.out.println("Feature selected");
> >           
> > monitor.report(I18N.get("org.openjump.sigle.plugin.ReplaceValuePlugIn.Replacing-values"));
> >                 if (byAttribute) {
> >                         replaceByAttributeValue(featureSelected, 
> > attrName,attrNameSrc);
> >                 } else {
> >           replaceValue(featureSelected, attrName, value);
> >                 }
> >
> >           }
> >
> >           else {
> >
> >               //System.out.println("All features");
> >                 if (byAttribute) {
> >                         replaceByAttributeValue(srcFeatures, 
> > attrName,attrNameSrc);
> >                 } else {
> >                   replaceValue(srcFeatures, attrName, value);
> >           }
> >
> >
> >
> >   }
> >         // TODO: look for FeatureEventType.ATTRIBUTE_MODIFIED
> >         //  it is probably better than Layer changed
> >         // [eric lemesre]
> >         layer.fireAppearanceChanged();
> >  }
> >
> >
> >  private void setDialogValues(final MultiInputDialog dialog, PlugInContext 
> > context)
> >  {
> >
> >
> >    //Initial layer value is null
> >
> >    layer = context.getSelectedLayer(0);
> >
> >    //  combos sélection d'un champ
> >    List columns = DialogUtil.getFieldsFromLayerWithoutGeometry(layer);
> >    String column1 = null;
> >
> >    if (columns.size()>0)
> >       column1 = (String) columns.get(0);  // récupération du premier 
> > attribut s'il existe
> >
> >
> >    dialog.addComboBox(ATTRIBUTE,column1,columns , "Toto");
> >
> >
> >    final JTextField textfield = dialog.addTextField(
> >               
> > I18N.get("org.openjump.sigle.plugin.ReplaceValuePlugIn.Attribute-type"),
> >                       
> > (layer.getFeatureCollectionWrapper().getFeatureSchema().getAttributeType(column1)).toString(),
> >                       10, null, null);
> >    textfield.setEnabled(false);
> >
> >    dialog.getComboBox(ATTRIBUTE).addActionListener(new ActionListener() {
> >        public void actionPerformed(ActionEvent e) {
> >            // recuperation de la combo couche
> >            JComboBox cb = (JComboBox) e.getSource();
> >            // recuperation de l'attribut selectionné
> >           String attributeName = (String) cb.getSelectedItem();
> >
> >           
> > textfield.setText((layer.getFeatureCollectionWrapper().getFeatureSchema().getAttributeType(attributeName)).toString());
> >
> >         }
> >               });
> >
> >
> >         dialog.addCheckBox(BY_ATTRIBUTE, byAttribute);
> >         dialog.addComboBox(ATTRIBUTE_SRC,column1,columns , "Nom du champ 
> > source de la valeur"); //TODO:I18N move to I18N [eric lemesre]
> >         dialog.getComboBox(ATTRIBUTE_SRC).setEnabled(byAttribute);
> >
> >         final JTextField valuetextfield = 
> > dialog.addTextField(VALUE,value,20, null, null);
> >         valuetextfield.setEnabled(true);
> >
> >         dialog.getCheckBox(BY_ATTRIBUTE).addActionListener(new 
> > ActionListener() {
> >                 public void actionPerformed(ActionEvent e) {
> >                         JCheckBox chk = (JCheckBox) e.getSource();
> >                         valuetextfield.setEnabled(!chk.isSelected());
> >                         // valuetextfield.setVisible(!chk.isSelected());
> >                         
> > dialog.getComboBox(ATTRIBUTE_SRC).setEnabled(chk.isSelected());
> >                         // 
> > dialog.getComboBox(ATTRIBUTE_SRC).setVisible(chk.isSelected());
> >                 }
> >         });
> >
> >         dialog.addCheckBox(SELECTED_ONLY, useSelected);
> >
> >  }
> >
> >  private void getDialogValues(MultiInputDialog dialog) {
> >
> >           attrName = dialog.getText(ATTRIBUTE);
> >           value = dialog.getText(VALUE);
> >           useSelected = dialog.getBoolean(SELECTED_ONLY);
> >         attrNameSrc = dialog.getText(ATTRIBUTE_SRC);
> >         byAttribute = dialog.getBoolean(BY_ATTRIBUTE);
> >
> >         }
> >
> >  private void  replaceValue(Collection selectedFC, String attrName,
> >             String value){
> >
> >         AttributeType type;
> >         type = ((Feature) 
> > selectedFC.iterator().next()).getSchema().getAttributeType(attrName);
> >
> >         for (Iterator i = selectedFC.iterator(); i.hasNext(); ) {
> >                 Feature f = (Feature) i.next();
> >
> >                 if (byAttribute) {
> >                         // remplacement par la valeur de l'attribut 
> > selectionné
> >
> >                 }else {
> >                         // remplacement par la valeur saisie
> >                 if (type == AttributeType.DOUBLE) {
> >
> >                                 f.setAttribute(attrName, new Double 
> > (value));
> >
> >                         } else if (type == AttributeType.INTEGER)  {
> >                                 f.setAttribute(attrName, new Integer 
> > (value));
> >
> >                         } else if (type == AttributeType.STRING) {
> >                                 f.setAttribute(attrName, new String 
> > (value));
> >
> >                         } else {
> >
> >                 }
> >                 }
> >         }
> >
> >                 }
> >
> >  private void  replaceByAttributeValue(Collection selectedFC, String 
> > attrNameDest,
> >                 String attrNameSrc){
> >
> >         //AttributeType typeSrc;
> >         AttributeType typeDest;
> >         String AttrValue;
> >         typeDest = ((Feature) 
> > selectedFC.iterator().next()).getSchema().getAttributeType(attrNameDest);
> >
> >         for (Iterator i = selectedFC.iterator(); i.hasNext(); ) {
> >                 Feature f = (Feature) i.next();
> >
> >                 AttrValue = (String) f.getAttribute(attrNameSrc);
> >
> >                 if (byAttribute) {
> >                         // remplacement par la valeur de l'attribut 
> > selectionné
> >                         if (typeDest == AttributeType.DOUBLE) {
> >                                 f.setAttribute(attrNameDest, new Double 
> > (AttrValue));
> >
> >                         } else if (typeDest == AttributeType.INTEGER)  {
> >                                 f.setAttribute(attrNameDest, new Integer 
> > (AttrValue));
> >
> >                         } else if (typeDest == AttributeType.STRING) {
> >                                 f.setAttribute(attrNameDest, new String 
> > (AttrValue));
> >
> >                         } else {
> >
> >                 }
> >
> >                 }else {
> >                 }
> >         }
> >
> >         }
> >
> >  public static MultiEnableCheck createEnableCheck(WorkbenchContext 
> > workbenchContext) {
> >       EnableCheckFactory checkFactory = new 
> > EnableCheckFactory(workbenchContext);
> >
> >       return new MultiEnableCheck()
> >               .add(checkFactory.createAtLeastNLayersMustExistCheck(1))
> >               .add(checkFactory.createSelectedLayersMustBeEditableCheck());
> >  }
> >
> >}
> >
> >
> >------------------------------------------------------------------------
> >
> >-------------------------------------------------------------------------
> >This SF.net email is sponsored by: Microsoft
> >Defy all challenges. Microsoft(R) Visual Studio 2005.
> >http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> >
> >------------------------------------------------------------------------
> >
> >_______________________________________________
> >Jump-pilot-devel mailing list
> >Jump-pilot-devel@lists.sourceforge.net
> >https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> >
> >
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2005.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>


-- 
Ingénieur de recherche
Docteur en géographie,
spécialité géomatique
École Centrale de Nantes
Institut de recherche en sciences et techniques de la ville
http://www.irstv.cnrs.fr/
http://geosysin.iict.ch/irstv-trac/wiki
http://r1.bocher.free.fr
http://www.projet-sigle.org

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to