pivot-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Greg Brown <gk_br...@verizon.net>
Subject Re: How to refresh a HighLowChartView
Date Mon, 21 Nov 2011 14:12:51 GMT
You don't need to call run() on the return value. Just call queueCallback() - the system will
take care of running it for you later. If you call run() yourself, it still gets executed
on the background thread. 

On Nov 21, 2011, at 8:45 AM, Jérôme Serré wrote:

> I wrote ProcessClass:
> public void run() {
>       bla bla bla
>      
>             ApplicationContext.queueCallback(myChart).run();
>  
>       }
>      
> My chart implements runnable
> And
> myChart.run() {
> ((ValueSeries<Candlestick>)this.getChartData().get(0)).add(recordToCandlestick(record));
> }
>  
> Is it correct ?
> Jérôme Serré
> ____________________________
> Manage your cellar
> http://www.macave.eu
>  
>  
> De : Greg Brown [mailto:gk_brown@verizon.net] 
> Envoyé : lundi 21 novembre 2011 14:04
> À : user@pivot.apache.org
> Objet : Re: How to refresh a HighLowChartView
>  
> It sounds like you might still be updating the UI from the background thread. Have you
updated your code to use ApplicationContext#queueCallback()?
>  
> On Nov 19, 2011, at 3:56 AM, Jérôme Serré wrote:
> 
> 
> Ok, I didn’t know. It works. Thank you Greg.
> But… there is a but J
> For the changes to appear on the chart I must "move" by hand. How can I get it to refresh
automatically ?
>  
> Jérôme Serré
> ____________________________
> Manage your cellar
> http://www.macave.eu
>  
>  
> De : Greg Brown [mailto:gk_brown@verizon.net] 
> Envoyé : vendredi 18 novembre 2011 23:11
> À : user@pivot.apache.org
> Objet : Re: How to refresh a HighLowChartView
>  
> You can't call any method that will update the UI from a background thread. Most UI toolkits
have a similar restriction.
>  
> On Nov 18, 2011, at 5:03 PM, Jérôme Serré wrote:
> 
> 
> 
> Correct. In fact in the run method (daemon) I add a “Record” in a pivot arrayList
and my Chart Class (and some others) listen this event :
> public void itemInserted(List<T> list, int index) {
>             “Update ChartData”
> }
> Ok, I think, I cannot use the event ?
> Jérôme Serré
> ____________________________
> Manage your cellar
> http://www.macave.eu
>  
>  
> De : Greg Brown [mailto:gk_brown@verizon.net] 
> Envoyé : vendredi 18 novembre 2011 21:17
> À : user@pivot.apache.org
> Objet : Re: How to refresh a HighLowChartView
>  
> I assume you have an implementation of Runnable that performs the background action of
your thread, correct? When the thread's run() method completes, you need to call ApplicationContext#queueCallback()
with a new Runnable that updates your UI.
>  
>  
> On Nov 18, 2011, at 2:59 PM, Jérôme Serré wrote:
> 
> 
> 
> 
> I’m really sorry but i don’t understand.
>  
> public class Test implements Application {
> **** some components ***
> final Thread t = ExtractProcess.getProcess(resolution, data, chart);
> ApplicationContext.queueCallback(t).run();
>  
>  
> The thread is running but none graphics elements are visible on ihm !
>  
> Jérôme Serré
> ____________________________
> Manage your cellar
> http://www.macave.eu
>  
>  
> De : Greg Brown [mailto:gk_brown@verizon.net] 
> Envoyé : vendredi 18 novembre 2011 19:29
> À : user@pivot.apache.org
> Objet : Re: How to refresh a HighLowChartView
>  
> I tested without thread and it works, I use Thread not TaskAdapter or ApplicationContext#queueCallback()
> May I keep Thread and use  ApplicationContext#queueCallback()
>  
> Yes.
> 
> 
> 
> 
> 
> And How to use it ?
>  
> Just put the code you want to run on the UI thread in the run() method (same as SwingUtilities#invokeLater()
in Swing).
>  
>  
>  
>  
>  
>  


Mime
View raw message