Eric, I am getting to this e-mail a little bit late, but I see that Michael and Stefan have already given you a warm welcome.
I just want to say thanks for your contribution and I hope we get to work together in the future. I'm curious, how are you using OpenJUMP? The Sunburned Surveyor On 9/28/07, Stefan Steiniger <[EMAIL PROTECTED]> wrote: > Hei again, > > > Eric Lemesre schrieb: > > Salut Stefan, > > > > I am totaly agree with this condition Of course. > > I prefer to get write acces by pass the second condition. I think it is > > the better way for all. > > ok.. > Btw. it depends how fast you are with your second extension. But if it > does not take weeks, you can commit both tools together if you have > write access. > > > > > For my second contribution i want to extends JoinTable plugin. > > * select fields to join > > * select datasource type > > sounds very good :) > > > Can i add Jlist to MultiInputDialog? > > yes.. i think so :) > If nobodoy else has a problem with. > > stefan > > > > > Eric > > > > 2007/9/26, Stefan Steiniger < [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>: > > > > 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 <http://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 <http://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 > > <mailto: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/ > > <http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/> > > > _______________________________________________ > > > Jump-pilot-devel mailing list > > > Jump-pilot-devel@lists.sourceforge.net > > <mailto: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 > > <mailto: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 > ------------------------------------------------------------------------- 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