Hi Elton,

  Make your loop variable a class variable.  Have the loop control and
attribute update inside the event handler.  While the loop is still going
invoke the event handler again, also from within the event handler.  Once
you have set up the event handler and invoked it once, just fall off the end
of the execute routine.  I would give an example,  but I'm away from my
development system.

  It sounds like Stefan also has a need for animation.  Perhaps he will show
you his solution.

Larry

On Fri, Jul 9, 2010 at 10:41 PM, Elton Chan <elton.c...@yahoo.com> wrote:

> Dear Larry,
>
> Could you tell me how it works? It seems a loop is required for continous
> update an attribute. How can it be replaced by a event handler?
>
> Thanks,
> Elton
>
>
> --- On *Fri, 7/2/10, Larry Becker <becker.la...@gmail.com>* wrote:
>
>
> From: Larry Becker <becker.la...@gmail.com>
> Subject: Re: [JPP-Devel] how to refresh a layer in run time
> To: "OpenJump develop and use" <jump-pilot-devel@lists.sourceforge.net>
> Date: Friday, July 2, 2010, 5:33 PM
>
>
> Hi Elton,
>
>   I think you are going to have to restructure you code from a loop to be
> an event handler that triggers itself until the end of some counter.  That
> is the only sure way to play nice with the GUI.
>
> Larry
>
> On Fri, Jul 2, 2010 at 12:06 PM, Elton Chan 
> <elton.c...@yahoo.com<http://mc/compose?to=elton.c...@yahoo.com>
> > wrote:
>
>> Hi Larry,
>>
>> I've tried the LayerView Panel().repaint() with InvokeAndWait(). However,
>> the layerpanel still cannot refesh and the for loop continues until all
>> finishing all the Recordset.
>>
>> The following code is added after attribute update:
>> if (SwingUtilities.isEventDispatchThread()) {
>>                 context.getLayerViewPanel().repaint();
>>                 System.out.println("repaint!!"); <<<< Always hit this
>> line.
>>             }
>>             else {
>>                 SwingUtilities.invokeAndWait(new Runnable( ) {
>>                     public void run( ) {
>>                         context.getLayerViewPanel().repaint();
>>                         System.out.println("repaint!!!");
>>                    }
>>                 });
>>             }
>>
>> Any idea?
>>
>>
>> --- On *Thu, 7/1/10, Larry Becker 
>> <becker.la...@gmail.com<http://mc/compose?to=becker.la...@gmail.com>
>> >* wrote:
>>
>>
>> From: Larry Becker 
>> <becker.la...@gmail.com<http://mc/compose?to=becker.la...@gmail.com>
>> >
>> Subject: Re: [JPP-Devel] how to refresh a layer in run time
>> To: "OpenJump develop and use" 
>> <jump-pilot-devel@lists.sourceforge.net<http://mc/compose?to=jump-pilot-de...@lists.sourceforge.net>
>> >
>> Date: Thursday, July 1, 2010, 2:30 PM
>>
>>
>> Sorry, Elton, not NIls.  I answered so many questions that I got confused
>> about who I was answering.  :-)
>>
>> On Thu, Jul 1, 2010 at 8:24 AM, Larry Becker 
>> <becker.la...@gmail.com<http://mc/compose?to=becker.la...@gmail.com>
>> > wrote:
>>
>>> Hi Nils,
>>>
>>>   I believe you might be running into problems updating because your loop
>>> is blocking the GUI thread.  You might try a LayerViewPanel.repaint() using
>>> invokeAndWait().
>>>
>>> Larry
>>>
>>>
>>> On Thu, Jul 1, 2010 at 6:42 AM, Elton Chan 
>>> <elton.c...@yahoo.com<http://mc/compose?to=elton.c...@yahoo.com>
>>> > wrote:
>>>
>>>> Hi there,
>>>>
>>>> I would like to refresh a layer after changing attribute of each feature
>>>> in the layer based on an event table. The event table records attribute
>>>> assigned to each feature at specified stage. Following is the schema of the
>>>> event table:
>>>>
>>>> Event(
>>>> StageID int, // StageID defines sequence of the event
>>>> Feature01 int, // value to be assigned to feature 01
>>>> Feature02 int, // value to be assigned to feature 02
>>>> ...
>>>> Feature10 int)
>>>>
>>>> Based on the StageID sequence, values for each feature would be
>>>> retrieved and updated to corresponding feature. Finally,  update value 
>>>> would
>>>> be visualized by unique colortheming. However, it seems the layer 
>>>> refreshing
>>>> can only be effective outside the ResultSet loop of the event table.
>>>>
>>>> The following is the program codes:
>>>>
>>>> Inside execute(PlugInContext context)
>>>> // get a layer
>>>> lyr = context.getLayerManager().getLayer("postgis");
>>>> //create a Resultset RS
>>>> ResultSet RS stat.executeQuery("select * from Event");
>>>> while (RS.next())
>>>> {
>>>> updatePostgisLayer(lyr, RS);//This function updates feature in the layer
>>>> }
>>>> < layer refreshes after the looping all the resultset.
>>>>
>>>> My question is how to refresh the layer once attribute values are
>>>> updated for each each row of the RecordSet, i.e. immediately after the
>>>> updatePostgisLayer function.
>>>>
>>>> If I change the query to retrieve specify row (i.e. single row only),
>>>> layer can be refreshed. But it requires to activate it manually for each
>>>> update.
>>>>
>>>> I tried to add lyr.fireLayerChanged(LayerEventType.APPEARANCE_CHANGED);
>>>> or lyr.fireAppearanceChanged() after the updatePostgisLayer function but
>>>> it didn't work.
>>>>
>>>> Anyone can help?
>>>>
>>>> thanks,
>>>> Elton
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>> This SF.net email is sponsored by Sprint
>>>> What will you do first with EVO, the first 4G phone?
>>>> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
>>>> _______________________________________________
>>>> Jump-pilot-devel mailing list
>>>> Jump-pilot-devel@lists.sourceforge.net<http://mc/compose?to=jump-pilot-de...@lists.sourceforge.net>
>>>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>>>
>>>
>>>
>>
>> -----Inline Attachment Follows-----
>>
>>
>>
>> ------------------------------------------------------------------------------
>> This SF.net email is sponsored by Sprint
>> What will you do first with EVO, the first 4G phone?
>> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
>>
>> -----Inline Attachment Follows-----
>>
>>
>> _______________________________________________
>> Jump-pilot-devel mailing list
>> Jump-pilot-devel@lists.sourceforge.net<http://mc/compose?to=jump-pilot-de...@lists.sourceforge.net>
>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> This SF.net email is sponsored by Sprint
>> What will you do first with EVO, the first 4G phone?
>> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
>> _______________________________________________
>> Jump-pilot-devel mailing list
>> Jump-pilot-devel@lists.sourceforge.net<http://mc/compose?to=jump-pilot-de...@lists.sourceforge.net>
>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>
>>
>
> -----Inline Attachment Follows-----
>
>
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by Sprint
> What will you do first with EVO, the first 4G phone?
> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
>
> -----Inline Attachment Follows-----
>
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net<http://mc/compose?to=jump-pilot-de...@lists.sourceforge.net>
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>
>
>
>
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by Sprint
> What will you do first with EVO, the first 4G phone?
> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>
>
------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to