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.
For my second contribution i want to extends JoinTable plugin.
* select fields to join
* select datasource type
Can i add Jlist to MultiInputDialog?
Eric
2007/9/26, Stefan Steiniger <[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
> >> */
> >>
> >> 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
>
-------------------------------------------------------------------------
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