Hi! So you are saying that I cannot drop an icon onto a map? I just want to check we are using the same terminology and I am not missunderstanding as I am new to GIS in general. There is a large main window (view) where you display the GIS data, like a country ouline, with a layer showing rivers and a layer showing roads etc. I am not sure what tha view window is called.This is where I am trying to drop an icon. I thought, what I was seeing in this area was the layers. I am NOT trying to drop it on the list of layers or the list of projevts/maps, but the actual graphical area. The people I am writing this for want to drag images of various fish and birds and dwelling etc, onto certain positions on a 'map', and they want a layer for each type of icon. So a layer showing all hut icons, a layer showing all fish etc. So I created a view which actually is in the same set of tabs as the layers list, from which they can drag the icons onto the 'map'/graphics area. I assumed that these were the ILayers I could drop onto? Have I missunderstood? Exactly where are the Layer Objects that are accepting the drop? Thanks Michelle
________________________________
From: [EMAIL PROTECTED] on behalf of Jesse Eichar
Sent: Fri 24/02/2006 17:56
To: User-friendly Desktop Internet GIS
Subject: Re: [udig-devel] Drag and Drop and beyond.
A few possibilities:
1. Are you dropping it onto a layer in the Layers View or Project Explorer?
You can't drop it on the map because it is a map not a Layer.
2. Are you sure that the objects in the table are Image objects?
Those are the main things from off the top of my head.
Jesse
M.S.Bachler wrote:
OK,
I tried your suggestions, but am still not getting the drop class even
enstatiated or the accept method called etc.
I am new to Eclipse and uDig programming so am probably doing something
really stupid.
My extension is now:
<extension point="net.refractions.udig.ui.dropAction">
<action
class="info.ecosensus.udig.actions.IconDropAction"
name="Icon Drag And Drop">
<destination class="net.refractions.udig.project.ILayer"/>
<acceptedType class="org.eclipse.swt.graphics.Image"/>
</action>
</extension>
The method that creates a table in the tabbed pane in my view class is:
private TableViewer createTable(TabFolder folder, UIIconGroup
oIconGroup) {
TabFolder tabFolder = folder;
Table table = new Table(tabFolder, SWT.NONE);
TableViewer viewer = new TableViewer(table);
UDIGDragDropUtilities.addDragSupport(viewer);
table.setBounds(new
org.eclipse.swt.graphics.Rectangle(0,0,258,460));
TableColumn column = new TableColumn(table, SWT.LEFT);
column.setText("Icon");
column.setWidth(65);
TableColumn column2 = new TableColumn(table, SWT.LEFT);
column2.setText("Name");
column2.setWidth(150);
table.setHeaderVisible(true);
table.setLinesVisible(true);
Vector vtItems = oIconGroup.getItems();
vtItems = UIUtilities.sortList(vtItems);
int count = vtItems.size();
UIIconItem oItem = null;
TableItem oTableItem = null;
for (int i=0; i<count; i++) {
oItem = (UIIconItem)vtItems.elementAt(i);
oTableItem = new TableItem(table, SWT.LEFT, i);
oTableItem.setData(oItem);
oTableItem.setImage(0, oItem.getImage()); // An
org.eclipse.swt.graphics.Image
oTableItem.setText(1, oItem.getName());
}
return viewer;
}
Can you spot what I am doing wrong to break the drop?
Thanks for your help.
Michelle
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of
Jesse Eichar
Sent: 23 February 2006 17:40
To: User-friendly Desktop Internet GIS
Subject: Re: [udig-devel] Drag and Drop and beyond.
To add drag and drop to a viewer so that it can properly
integrate with uDig use the UDIGDragDropUtilities.addDragSupport(viewer). This
will make it so you can drop what ever your table contains. So for example if
your table contains Image objects then image objects will be dragged from your
view. For a DropAction to work the accepted type must be the object dragged
from the viewer. IE Images.
Jesse
M.S.Bachler wrote:
Hi!
Did this get fixed? (see email below)
I still can't get my string to be accepted on the drop.
The dragStart and dragSourceData methods in the
DragListener on the
source object get called fine.
But the accept method of the Drop class never gets
called.
(Not even the construtor of the Drop class seems to get
called!).
Not sure if it is something I am doing wrong.
The extension code I have is:
<extension point="net.refractions.udig.ui.dropAction">
<action
class="info.ecosensus.udig.actions.IconDropAction"
name="Icon Drag And Drop">
<destination
class="net.refractions.udig.project.ILayer"/>
<acceptedType
class="org.eclipse.swt.widgets.Table"/>
</action>
</extension>
(was not sure what the accetedType should be. I have
tried various
things)
I have attached the IconDropAction class (drop) and the
IconView class
(drag source)
Any ideas?
Michelle
-----Original Message-----
From: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
[mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> ]
On Behalf Of Jesse
Eichar
Sent: 02 November 2005 17:50
To: User-friendly Desktop Internet GIS
Subject: Re: [udig-devel] Drag and Drop and beyond.
Hmmm. It isn't the SLDDropAction that is consuming the
event it sounds
like the WizardDropAction is consuming the event. I
think you may have
found a bug. I'm looking at the code and it seems to
always accept the
string regardless of whether it can understand it.
That said I'm not
sure why your extension is not being called. As far as
I know the code
does not consume the data. All the actions that are
valid should be
ran.
Have you put a break point in the accept method to see
if it is being
called?
Jesse
M.S.Bachler wrote:
Hi!
I am probably asking a stupid question, but I
have written a small
plugin to accept a string drop and display a
message of the string,
(just to get started).
The problem is, I am not sure my code ever gets
activated.
I assume that SLDDropAction code is taking the
action before it gets to
me?
My project,xml action is:
<extension
point="net.refractions.udig.ui.dropAction">
<action
class="net.refractions.udig.test1.actions.StringDropAction"
name="String Drag and Drop">
<destination
class="net.refractions.udig.project.ILayer"/>
<acceptedType class="java.lang.String"/>
</action>
</extension>
StringDropAction class extends IDropAction.
Am I on the right track?
What do I need to do to get my code to be able
to process the drop? All
I get is a dialog window come up asking me to
select a data source.
Thanks
Michelle
-----Original Message-----
From: [EMAIL PROTECTED] <mailto:[EMAIL
PROTECTED]>
[mailto:[EMAIL PROTECTED] <mailto:[EMAIL
PROTECTED]> ] On Behalf Of Jesse
Eichar
Sent: 01 November 2005 01:52
To: User-friendly Desktop Internet GIS
Subject: Re: [udig-devel] Drag and Drop and
beyond.
[snip]
I am trying to understand how to start
approaching the D&D stuff I
need
to do. If I drop a string or image file
onto a Map, I assume it would
need to create a new layer in the layer
manager (and assuming I have
programmed where), ultimately store the
data in the database and then
render the feature.
Are you going to be developing on uDig 1.1 or
1.0.x? I have done a lot
of the difficult work so there is a nice
framework for 1.1 but the
downside is that it not being released until
later this month. I don't
know what your timeline is like.
You can look at
net.refractions.udig.project.ui.internal.actions.DropAction for an
example of an action taken when a url is
dropped on a a layer. The
declaration of the drop action in the
project.xml goes something like:
<action
class="net.refractions.udig.project.ui.internal.actions.SLDDropAction"
name="SLD Drag and Drop">
<destination
class="net.refractions.udig.project.ILayer"/>
<acceptedType class="java.io.File"/>
<acceptedType class="java.net.URL"/>
<acceptedType class="java.lang.String"/>
</action>
I'm going to put this example in the drag and
drop documenation I wrote
for you.
So I need to deal with Map,
LayerManager, RenderManager, Catalogue,
Feature and probably more? Ahhh! I feel
sleepless nights coming on.
This depends on the work flow and requirements.
Suppose you drop a
string on layer in LayersView and the drop
action creates a feature by
interpreting the string and adds it to the
layer. In this case can use
the Layer.getResource() method to get a
FeatureStore (Class used for
adding/removing features from a datastore) and
add the feature using
the
FeatureStore. In this case all you need to
know is the Layer and
FeatureStore API.
Now suppose you drop a image that some how
specifies a layer and all
the
features in the layer. In this case you need
to know Map, Layer,
Catalog, Feature, DataStore, etc...
Hope this helps.
Jesse
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net <http://udig.refractions.net>
http://lists.refractions.net/mailman/listinfo/udig-devel
<http://lists.refractions.net/mailman/listinfo/udig-devel>
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net <http://udig.refractions.net>
http://lists.refractions.net/mailman/listinfo/udig-devel
<http://lists.refractions.net/mailman/listinfo/udig-devel>
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net <http://udig.refractions.net>
http://lists.refractions.net/mailman/listinfo/udig-devel
<http://lists.refractions.net/mailman/listinfo/udig-devel>
________________________________
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
<http://udig.refractions.net>
http://lists.refractions.net/mailman/listinfo/udig-devel
<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
<<winmail.dat>>
_______________________________________________ User-friendly Desktop Internet GIS (uDig) http://udig.refractions.net http://lists.refractions.net/mailman/listinfo/udig-devel
