Hi,

In the option dialog box, edition tab, you have an option which does 
exactly that :
Prevents edit resulting in invalid geometries

You can search the code from EditOptionsPanel or EditTransaction classes

Michaël

Stefan Steiniger a écrit :
> Hei Volker,
>
> you may have a look at exiting editing tools?
> e.g. check the tools in
> org.openjump.core.ui.plugin.edittoolbox.*
> in "curosortools" you could look at AutoCompletePolygon
> or ConstrainedWhateverTool
>
> but I wonder why you would need to bound this to a layer and not just as 
> general action for your tool, so you would avoid the layerlistener stuff
>
> just a thought
> stefan
>
> [email protected] wrote:
>   
>>   Hello "The Sunburned Surveyor",
>>
>> thanks for your answer. I guess this list make more sense :-) ( wasn't 
>> aware of this )
>>
>> as explained I'm already using a LayerListener. Let me try to explain 
>> with an example:
>>
>> - I've added a Layerlistener and get informed by its featureChanged-Method
>> - The user adds an simple empty ( just with the geometry ) feature to 
>> the selected layer with the *DrawPointTool*.
>> - If the new feature doesn't match to given rules I would like to cancel 
>> the current UndoableCommand created by *DrawPointTool *within my 
>> LayerListener-Implementation
>>
>> something inside the featureChanged like:
>>
>> if( isUgly(feature)){
>>   frame.warnUser("Don't add ugly features!");
>>   stopExecutionAndRemoveUndoableCommand();
>> }
>>
>> Regards,
>>
>> Volker
>>
>>
>> -----Ursprüngliche Mitteilung-----
>> Von: Sunburned Surveyor <[email protected]>
>> An: [email protected]
>> Cc: OpenJump develop and use <[email protected]>
>> Verschickt: Di., 2. Feb. 2010, 16:45
>> Thema: Re: [openjump-users] cancel CursorTool-Command
>>
>> Volker,
>>
>>
>>
>>
>>
>>
>>
>> You should be able to do it in the same LayerListener. For example: If
>>
>>
>>
>> you want to write a couple lines of text to a text file everytime
>>
>>
>>
>> nodes are deleted from a feature, you would implement LayerListener.
>>
>>
>>
>> In the LayerListener.featureChanged method you would need to test the
>>
>>
>>
>> modified feature for deleted nodes.
>>
>>
>>
>>
>>
>>
>>
>> In summary, test for your "rules" or conditions in the implementation
>>
>>
>>
>> of the featureChanged method. If the modifications meet your set of
>>
>>
>>
>> rules, then take the desired action. It is probably good design to
>>
>>
>>
>> have two private methods in your LayerListener implementation. The
>>
>>
>>
>> first private method would conduct the test to see if the feature
>>
>>
>>
>> modification met your criteria. The second private method would
>>
>>
>>
>> perform the desired action if the criteria was met.
>>
>>
>>
>>
>>
>>
>>
>> Note: The ability to listen for feature changes is handy, but it can
>>
>>
>>
>> be over used. To much "listening" can really slow down the execution
>>
>>
>>
>> of the program, so use it judiciously.
>>
>>
>>
>>
>>
>>
>>
>> The Sunburned Surveyor
>>
>>
>>
>>
>>
>>
>>
>> P.S. - This discussion should really be moved to the JPP developer's
>>
>>
>>
>> mailing list. I am going to copy that list on this response.
>>
>>
>>
>>
>>
>>
>>
>> On Tue, Feb 2, 2010 at 5:48 AM, Volker <[email protected]> wrote:
>>
>>
>>
>>     
>>> Hello,
>>>       
>>
>>     
>>
>>     
>>> I added a LayerListener so that I can do a specific action when a
>>>       
>>
>>     
>>> feature was added to the layer by any CursorTool (e.g.
>>>       
>>
>>     
>>> DrawPointTool).
>>>       
>>
>>     
>>
>>     
>>> If given Rules are not fulFilled I would like to cancel this
>>>       
>>
>>     
>>> CursorTool-Command?
>>>       
>>
>>     
>>
>>     
>>> Any idea how or do I have to use an other Listener?
>>>       
>>
>>     
>>
>>     
>>> Thanks in advance :-)
>>>       
>>
>>     
>>
>>
>> ------------------------------------------------------------------------
>>
>> ------------------------------------------------------------------------------
>> The Planet: dedicated and managed hosting, cloud storage, colocation
>> Stay online with enterprise data centers and the best network in the business
>> Choose flexible plans and management services without long-term contracts
>> Personal 24x7 support from experience hosting pros just a phone call away.
>> http://p.sf.net/sfu/theplanet-com
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Jump-pilot-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>     
>
> ------------------------------------------------------------------------------
> The Planet: dedicated and managed hosting, cloud storage, colocation
> Stay online with enterprise data centers and the best network in the business
> Choose flexible plans and management services without long-term contracts
> Personal 24x7 support from experience hosting pros just a phone call away.
> http://p.sf.net/sfu/theplanet-com
> _______________________________________________
> Jump-pilot-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>   


------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
Jump-pilot-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to