Salut Eric,

nice to have you on board :)
We have setup some informal rules for contribution. You get write access
to the svn in two ways:
1) you get immediate access to the svn if you got a recommendation by
developer that is already well known by the project (or a member); or
2) we review the first two contributions. If both are ok you will grant
write access. As you passed the 1st code-review round already according
to Michael, I would like to ask you, to send to your second contribution
to the devel-list for a review (if you have finished that work already)

I hope you understand this policy and I suppose the 2nd sample you
presenet will be a piece of cake for you? Alteratively you may tell us
(or me and Michael personally) about your programming experience.

Anyway, as it seems to me you will qualify ;) i ask you to already send
me your sourceforge account name (on my personal email), so i can
prepare anything for svn-write access.

cheers, currently from Germany (Btw. I met some people from Intevation
on the Intergeo fair)

stefan

@ Michael: thank you for reviewing! If you want you can commit the code.
Otherwise I will do in the next days.


Michaël Michaud schrieb:
> 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
> 
> 


-------------------------------------------------------------------------
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