Thanks for filling us in on how you use OpenJUMP Eric, and thank you
for making the effort to contribute.
The Sunburned Surveyor
On 10/1/07, Eric Lemesre <[EMAIL PROTECTED]> wrote:
> Hi SS,
>
> I am using OpenJUMP for visualisation state's vendor : where they work,
> where they live and where is her cusmoters.
> Other software like ERSI EMG3, is too expensive an less modulate than
> OpenJUMP.
>
> I can get data from PostgreSQL, Degrees, and geoserver and give it to
> resposables (quikly ;-) ).
>
> I hope my compagny always use OpenJUMP and give more developpers to
> contribute.
> At this moment I am alone ;-{.
>
>
> 2007/9/28, Sunburned Surveyor <[EMAIL PROTECTED]>:
> > 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
> > > > >> [email protected]
> > > > <mailto:[email protected]>
> > > > >>
> 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
> > > > > [email protected]
> > > > <mailto: [email protected]>
> > > > >
> 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
> > > > [email protected]
> > > > <mailto:[email protected] >
> > > >
> 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
> > > > [email protected]
> > > >
> 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
> > > [email protected]
> > >
> 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
> > [email protected]
> >
> 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
> [email protected]
> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel