[OpenLayers-Dev] DeleteFeature control
Eric Lemoine
eric.lemoine at camptocamp.com
Mon Jul 20 01:36:42 EDT 2009
On Friday, July 17, 2009, Alexandre Dube <adube at mapgears.com> wrote:
> Hey,
Hi Alexandre
>
> I'd like to ask a couple of questions about this control.
>
> Currently, the only thing it really does is change the state of the
> selected features to DELETE and on 'del' keypress, it triggers a
> 'deletefeatures' event, but it doesn't actually delete (commit, destroy,
> remove, etc.) anything. The user needs to listen to the event and do
> what he wants himself.
>
> That bugs me a little. What good is a "DeleteFeature" control if it
> doesn't do anything by itself ? So I'm thinking of adding a couple of
> functions that would take care of theses actions, but at the same time
> I'm aware of the Strategy.Save strategy that already has the role of
> committing changes. It's not supporting HTTP/MapFish protocol at the
> moment though...
(I never used Protocol.MapFish and Strategy.Save together, I'm curious
to know why they don't play together)
>
> Here's what I would do :
>
> - add a boolean 'commit' property
> - false : only destroy the features on screen
> - true : commit the changes (using the Save strategy or
> protocol.commit...)
So long that the control user can be notified when a feature is
deleted I don't see the value of having the control committing the
changes.
>
> Since I'm using featureserver and Protocol.MapFish (which is not part
> of the OpenLayers project) I can't figure how I could avoid to delete
> 'manually' the features, i.e. not in the control itself.
I don't understand. Can't you listen to "featuredeleted" from your
control and trigger saveStrategy.save()? (assuming Strategy.Save work
with Protocol.MapFish).
Some general comments on your control: from my understanding the
control has two activities, (1) when a feature is selected change its
state and redraw it, (2) when some delete key is pressed trigger
events. Since they are *independent* activities they could be done by
independent controls, and I think I'd disagree with wiring independent
activities within a single control.
If we had support for composite controls in the base Control class one
could do something like what follows to implement your delete
control's behavior:
var delCtrl = new OpenLayers.Control({
handler: new OpenLayers.Handler.Keyboard({
keydown: function(evt) {
var delKey = ...
if(delKey) {
saveStrategy.save();
}
}
}),
controls: [
new OpenLayers.Control.SelectFeature(
layer, {
onSelect: function(f) {
f.state = DELETE;
this.layer.drawFeature(f);
}
})
]
});
(the support for composing controls I mentioned above involves having
the base Control class activates and deactivates every control that's
passed in the "controls" option.)
What do you think?
Cheers,
>
> Any hint would be appreciated,
>
> Alexandre
>
> Alexandre Dube wrote:
>> Hi,
>>
>> I just sent (finally) a new patch for ticket 1882 (1) (DeleteFeature
>> control) and set the status to review.
>>
>> (1) http://trac.openlayers.org/ticket/1882
>>
>> Regards,
>>
>>
>
>
> --
> Alexandre Dubé
> Mapgears
> www.mapgears.com
>
> _______________________________________________
> Dev mailing list
> Dev at openlayers.org
> http://openlayers.org/mailman/listinfo/dev
>
--
Eric Lemoine
Camptocamp France SAS
Savoie Technolac, BP 352
73377 Le Bourget du Lac, Cedex
Tel : 00 33 4 79 44 44 96
Mail : eric.lemoine at camptocamp.com
http://www.camptocamp.com
More information about the Dev
mailing list