1 /*
2  * JobProgressPresenter.java
3  *
4  * Copyright (C) 2021 by RStudio, PBC
5  *
6  * Unless you have received this program directly from RStudio pursuant
7  * to the terms of a commercial license agreement with RStudio, then
8  * this program is licensed to you under the terms of version 3 of the
9  * GNU Affero General Public License. This program is distributed WITHOUT
10  * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT,
11  * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the
12  * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details.
13  *
14  */
15 package org.rstudio.studio.client.workbench.views.jobs;
16 
17 import org.rstudio.studio.client.application.events.EventBus;
18 import org.rstudio.studio.client.workbench.views.jobs.events.JobElapsedTickEvent;
19 import org.rstudio.studio.client.workbench.views.jobs.model.Job;
20 import org.rstudio.studio.client.workbench.views.jobs.model.LocalJobProgress;
21 
22 import com.google.gwt.user.client.ui.IsWidget;
23 import com.google.gwt.user.client.ui.Widget;
24 import com.google.inject.Inject;
25 
26 public class JobProgressPresenter implements JobElapsedTickEvent.Handler,
27                                              IsWidget
28 {
29    public interface Display extends IsWidget
30    {
updateElapsed(int timestamp)31       void updateElapsed(int timestamp);
showProgress(LocalJobProgress progress)32       void showProgress(LocalJobProgress progress);
showJob(Job job)33       void showJob(Job job);
34    }
35 
36    @Inject
JobProgressPresenter(Display display, EventBus events)37    public JobProgressPresenter(Display display,
38                                EventBus events)
39    {
40       display_ = display;
41       events.addHandler(JobElapsedTickEvent.TYPE, this);
42    }
43 
44    @Override
onJobElapsedTick(JobElapsedTickEvent event)45    public void onJobElapsedTick(JobElapsedTickEvent event)
46    {
47       display_.updateElapsed(event.timestamp());
48    }
49 
50    @Override
asWidget()51    public Widget asWidget()
52    {
53       return display_.asWidget();
54    }
55 
showProgress(LocalJobProgress progress)56    public void showProgress(LocalJobProgress progress)
57    {
58       display_.showProgress(progress);
59    }
60 
showJob(Job job)61    public void showJob(Job job)
62    {
63       display_.showJob(job);
64    }
65 
66    private final Display display_;
67 }
68