Hi!

I know can get the x,y which is great. Thanks.

I have had a first attempt at creating a shapefile and adding a new
layer connecting to the shape file, for the first time you drop a
specific icon on a map (subsequent times you add it to an existing layer
- which is the next step).

I have pieced together code from various emails but still think I have
not really got a complete picture of what I am doing. The code I have,
creates a shape file (I can see the files are there), it also adds a
layer to the map (I can see the layer in the list), but it has an error
- 'Connection to Resource Failed'. 
I am also not sure if the Point code is right?

Here is my code: Any thoughts anyone about what I am doing wrong? (or
how I could simplify it?)

try {
        IndexedShapefileDataStoreFactory fac = new
IndexedShapefileDataStoreFactory();
        File file2 = new
File("Ecosensus"+EcosensusPlugin.sFS+"Shapefiles"+EcosensusPlugin.sFS+sF
ileName+".shp");
        String sShapeFile = file2.getAbsolutePath();
        ShapefileDataStore ds = (ShapefileDataStore)
fac.createDataStore(new URL("file://"+sShapeFile));

        try {
                AttributeType geomAttr =
AttributeTypeFactory.newAttributeType("the_geom", Point.class);
                FeatureType featureType =
FeatureTypeBuilder.newFeatureType(new AttributeType[] {geomAttr},
"icon");
                                                        
                GeometryFactory geomFactory = new GeometryFactory();
                Coordinate coord = new Coordinate(event.x, event.y);
                Point point = geomFactory.createPoint(coord);
                Feature theIcon = featureType.create(new Object[]
{point}, "myicon");                                                     
                                        
                ds.createSchema( featureType );
                                                                
                List<IService> services =
CatalogPlugin.getDefault().getServiceFactory().acquire(new
URL("file://"+sShapeFile));
                IService service = services.get(0);
                                                        
                List resources = service.members(monitor);
                IGeoResource resource = (IGeoResource)resources.get(0);

                System.out.println("resource type =
"+resource.getClass().getName()); 
        

                Layer newLayer = factory.createLayer(resource);
                newLayer.setName(sFileName);
                map.sendCommandASync( (new AddLayerCommand(newLayer)) );
                                                                        
                DrawCommandFactory factory2 =
DrawCommandFactory.getInstance();
                DrawFeatureCommand cmd =
factory2.createDrawFeatureCommand(theIcon, crs); 
                map.sendCommandASync(cmd);

                                                                        
        } catch (IllegalAttributeException e) {
                System.out.println("IllegalAttributeException");
                e.printStackTrace();
        } catch(SchemaException se) {
                System.out.println("SchemaException");
                se.printStackTrace();
        }

} catch (IOException e) {
        e.printStackTrace();
}

Michelle

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Jesse
Eichar
Sent: 14 March 2006 20:30
To: User-friendly Desktop Internet GIS
Subject: Re: [udig-devel] Shapefiles


Here's the interface (I added some comments today as well :P):

/**
*
* Defines the behaviour when a drag and drop event occurs.  The  
extension declaration combined with the accepts method
* determines whether the Action will be ran for a given drag/drop event.
*
* @author jdeolive
* @since 1.0.0
*/
public abstract class IDropAction {
        
        public static final String XPID =  
"net.refractions.udig.ui.dropAction"; //$NON-NLS-1$
        
        /** the extension info **/
        IConfigurationElement element;
        
     private Object destination;

     private Object data;

     private DropTargetEvent event;

     private int location;
        
     /**
      * Returns the Configuration element that definates the action  
in the extension declaration.
      *
      * @return the Configuration element that definates the action  
in the extension declaration.
      */
        public IConfigurationElement getElement() {
                return element;
        }
        
     /**
      * Returns the name of the action.
      *
      * @return Returns the name of the action.
      */
        public String getName() {
                if (element == null)
                        return ""; //$NON-NLS-1$
                return element.getAttribute("name"); //$NON-NLS-1$
        }
        
     /**
      * Called if the action seems to be a good candidate for  
handling the drop event.
      *
      * @return true if the action this it should handle the drop event.
      */
     public abstract boolean accept();
        
     /**
      * Performs the drop action.
      *
      * @param monitor a progress monitor for showing the progress of  
the current event.
      */
        public abstract void perform(IProgressMonitor monitor);

     /**
      * Returns the dropped data.
      *
      * @return the dropped data.
      */
     public Object getData() {
         return data;
     }

     /**
      * Returns the object that the data was dropped on.
      *
      * @return the object that the data was dropped on.
      */
     public Object getDestination() {
         return destination;
     }

     /**
      * Called by framework to initialize the action.
      *
      * @param element2 the extension configuration element
      * @param event2 the drop event.
      * @param destination2 the object that the data was dropped on.
      * @param data2 the data that was dropped.
      */
     public void init( IConfigurationElement element2,  
DropTargetEvent event2, int location2,
             Object destination2, Object data2 ) {
         this.element=element2;
         this.event=event2;
         this.location=location2;
         this.destination=destination2;
         this.data=data2;
     }

     /**
      * The drop event.
      * @return Returns the drop event.
      */
     public DropTargetEvent getEvent() {
         return event;
     }

     /**
      * This does not always make sense for the drop event.  But in  
the case that the component is a jface viewer then this method will  
indicate the
      * location where the drop is taking place (before, on or after  
the destination object).
      *
      * @see ViewerDropAdapter#getCurrentLocation()
      *
      * @return If the component is not a viewer this will always  
return [EMAIL PROTECTED] ViewerDropAdapter#LOCATION_ON} otherwise it will be 
one  
of the LOCATION_*
      * values.
      */
     public int getViewerLocation() {
         return location;
     }

}

Jesse


On 14-Mar-06, at 12:22 PM, M.S.Bachler wrote:

> Hi!
>
> That's great.
> (I thought it was just me being really thick, and not spotting how to 
> get the x,y).
>
> Thanks for adding these changes.
>
> I still can't download the source code at the moment - we do use a
> proxy
> and I have a feeling it must be blocking some of the command  
> Subversion
> needs - I will see IT tomorrow about it.
>
> As I can't get to the source code - are there any javadocs on these 
> changes so I know what methods/variables are now available.
>
> Thanks
>
>
> Michelle
>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Jesse 
> Eichar
> Sent: 14 March 2006 19:08
> To: User-friendly Desktop Internet GIS
> Subject: Re: [udig-devel] Shapefiles
>
>
> Ok so a change of plans.
>
> I've changed the API slightly.  Shouldn't bother you too much, all the

> information is still there in the IDropAction class, now I've added 
> the getEvent() method to the IDropAction class.  It has the x,y 
> location of the event.
>
> I think I've cleaned things up a little so you shouldn't have to worry

> about any other classes besides the IDropAction (before the 
> UDIGDropHandler was accessible from the IDropAction)  I've changed 
> that but made sure that all the information is still available in the 
> IDropAction.
>
>
> Jesse
>
> On 14-Mar-06, at 9:33 AM, Jesse Eichar wrote:
>
>> Truthfully this is a good question.  I think you've identified 
>> another short coming of this API.  I am going to make 3 changes to 
>> UDIGDropHandler.
>>
>> 1.  I'm going to change getLocation to return a Point which will be 
>> the x,y coordinates of the drop event relative to the component that 
>> the component is dropped on. 2.  I'm going to add the method 
>> getViewerLocation() that will return ON, BEFORE and AFTER locations.

>> (That is what getLocation() currently does)
>> 3.  I'm going to add a method isViewer() so you can determine if
>> the control is a viewer and if you should use getViewerLocation()
>> or getLocation().
>>
>> You'll have to download tonights nightly build.
>>
>> (Sorry for the hard time you are having but DND has been a real 
>> headache for me to figure out, never mind do right)
>>
>> Jesse
>>
>> On 14-Mar-06, at 2:19 AM, M.S.Bachler wrote:
>>
>>> Hi
>>>
>>> Sorry about yesterdays rant.
>>>
>>> If you have not lost all patients with me, I would really appreciate

>>> it if anyone could tell me how I get the x, y coordinates of the 
>>> drop from
>>> my IDropAction class.
>>>
>>> Thanks
>>>
>>> Michelle
>>>
>>> -----Original Message-----
>>> From: [EMAIL PROTECTED]
>>> [mailto:[EMAIL PROTECTED] On Behalf Of 
>>> M.S.Bachler
>>> Sent: 13 March 2006 11:04
>>> To: User-friendly Desktop Internet GIS
>>> Subject: RE: [udig-devel] Shapefiles
>>>
>>>
>>> Hi!
>>>
>>> Thanks everyone for your various inputs.
>>> I am still not sure what I am doing (I have decided I am just 
>>> thick!).
>>>
>>> I can't see how the DataUtility way or creating a FeatureType passes

>>> in the x,y of the point. Then again, I can't even figure out how I
>>> get the
>>> x, y coordinates of the drop from my IDropAction class in order to
>>> create the coords for my Point class in the first place? I have run
>>> around the API, but can't figure it out.
>>>
>>> Is there really no example code out there that I can study to
>>> help me
>
>>> understand things better. I am unable to download the source code 
>>> with Subversion (I did write to the list about this but no one
>>> replied). I
>>> need the equivalent of "uDig for Dummies" book.
>>>
>>> Being a Java developer for many years I thought this project
>>> would be
>
>>> relatively easy. But I think having no familiarity with Eclipse or 
>>> GIS at all, has really not helped me. While Eclipse is becoming more
>>> familiar, 'GIS speak' is still a mistery. I think what seems
>>> obvious to
>>> many of you when talking about the code, just escapes me.
>>>
>>> I know people are reluctant to spoon feed me the code I need. I know

>>> I need to go through the pain barrier and try and understand it
>>> all myself. But it really hurts, and for various reasons the
>>> timescale
>>> of my project has been shrunk, and I am in danger (for the first
>>> time in
>>> my lief!), of not completing something, and having to say I can't
>>> do it.
>>>
>>> I think I have just not reached that eureka moment, when everything 
>>> suddenly clicks into place. I hope it happens soon! I still have a 
>>> head full of floating jigsaw pieces.
>>>
>>> Meanwhile, if someone could help me with how I get the x,y of the 
>>> drop, that would be great.
>>>
>>> Michelle - ( with a heavy cold - feeling rather sorry for myself :- 
>>> ( - going to get a cup of tea )
>>>
>>> -----Original Message-----
>>> From: [EMAIL PROTECTED]
>>> [mailto:[EMAIL PROTECTED] On Behalf Of Jody 
>>> Garnett
>>> Sent: 11 March 2006 08:58
>>> To: User-friendly Desktop Internet GIS
>>> Subject: Re: [udig-devel] Shapefiles
>>>
>>>
>>> You guys are working to hard, I wrote a parser method I never wanted

>>> to do this stuff twice.
>>> -
>>> http://udig.refractions.net/docs/api-geotools/org/geotools/data/
>>> DataUtil
>>> ities.html
>>>
>>> The format is silly, but it is in the javadocs:
>>> - http://udig.refractions.net/docs/api-geotools/org/geotools/data/
>>> DataUtil
>>> ities.html#createType(java.lang.String,%20java.lang.String)
>>>
>>> basically:
>>> "name:String,age:Number,position:Point,*destination:Point"
>>> Where the * indicates the default geometry ..
>>>
>>> Other useful stuff:
>>> - http://udig.refractions.net/docs/api-geotools/org/geotools/
>>> feature/
>>> Featu
>>> reTypes.html
>>>
>>> Jody
>>>>
>>>>
>>>> M.S.Bachler wrote:
>>>>>
>>>>> Hi!
>>>>>
>>>>> Silly question.
>>>>>
>>>>> Earlier you helpfully gave me a code snippet to create a new 
>>>>> shapefile.
>>>>>
>>>>> IndexedShapefileDatastoreFactory fac=new 
>>>>> IndexedShapefileDataStoreFactory();
>>>>>
>>>>> ShapefileDataStore ds=fac.createDatastore(url);
>>>>>
>>>>> // I assume this is the URL of the new shapefile I want it to 
>>>>> create?
>>>>>
>>>>> GeometryFactory gf = new GeometryFactory();
>>>>>
>>>>> ds.createSchema( featureType );
>>>>>
>>>>> // Here I got lost. Started to investigate FeatureType and felt 
>>>>> like I was walking through tar.
>>>>>
>>>> I did some stuff with FeatureType the other day... trying to create

>>>> a new Feature from scratch. Here is the code I found to create a 
>>>> new
>>>> FeatureType:
>>>>                     AttributeType geomAttr =
>>> AttributeTypeFactory.newAttributeType("the_geom", LineString.class);
>>>>                     FeatureType ftRoad =
>>> FeatureTypeBuilder.newFeatureType(new AttributeType[] {geomAttr}, 
>>> "road");
>>>>
>>>>     //                WKTReader wktReader = new WKTReader();
>>>>     //                Point geometry = (Point) wktReader.read 
>>>> ("POINT
>>> (" + lat + " " + lon + ")");
>>>>                     GeometryFactory geomFactory = new
>>> GeometryFactory();
>>>>                     LineString geometry =
>>> geomFactory.createLineString(coords);
>>>>                     Feature theRoad = ftRoad.create(new Object[] 
>>>> {geometry}, "myRoad");
>>>>
>>>>
>>>> This example Feature only has one attribute which is the geometry, 
>>>> the_geom. You can create and add other attributes in the 
>>>> AttributType[] and Object[] if needed.
>>>>
>>>> These classes are from the org.geotools.feature package.
>>>>
>>>> Hopefully you may find this useful. I'm not sure if this is the
>>>> most
>
>>>> up-to-date way of doing it, but it worked for me.
>>>>
>>>> Mark
>>>>
>>>> --
>>>> This message has been scanned for viruses and dangerous content by
>>>> *MailScanner* <http://www.mailscanner.info/>, and is believed to be

>>>> clean. _______________________________________________
>>>> User-friendly Desktop Internet GIS (uDig) 
>>>> http://udig.refractions.net 
>>>> http://lists.refractions.net/mailman/listinfo/udig-devel
>>>>
>>>
>>>
>>> _______________________________________________
>>> User-friendly Desktop Internet GIS (uDig) http://
>>> udig.refractions.net
>>> http://lists.refractions.net/mailman/listinfo/udig-devel
>>> _______________________________________________
>>> User-friendly Desktop Internet GIS (uDig)
>>> http://udig.refractions.net
>>> http://lists.refractions.net/mailman/listinfo/udig-devel
>>> _______________________________________________
>>> User-friendly Desktop Internet GIS (uDig)
>>> http://udig.refractions.net
>>> http://lists.refractions.net/mailman/listinfo/udig-devel
>>
>> _______________________________________________
>> User-friendly Desktop Internet GIS (uDig) http://udig.refractions.net

>> http://lists.refractions.net/mailman/listinfo/udig-devel
>
> _______________________________________________
> User-friendly Desktop Internet GIS (uDig) http://udig.refractions.net 
> http://lists.refractions.net/mailman/listinfo/udig-devel
> _______________________________________________
> User-friendly Desktop Internet GIS (uDig) http://udig.refractions.net
> http://lists.refractions.net/mailman/listinfo/udig-devel

_______________________________________________
User-friendly Desktop Internet GIS (uDig) http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel

Reply via email to