11
11
import fi .helsinki .cs .tmc .model .TmcCoreSingleton ;
12
12
import fi .helsinki .cs .tmc .ui .ConvenientDialogDisplayer ;
13
13
import fi .helsinki .cs .tmc .core .exceptions .TmcCoreException ;
14
+ import fi .helsinki .cs .tmc .utilities .BgTask ;
15
+ import fi .helsinki .cs .tmc .utilities .BgTaskListener ;
16
+ import fi .helsinki .cs .tmc .utilities .CancellableCallable ;
14
17
import java .awt .event .ActionEvent ;
15
18
import java .awt .event .ActionListener ;
16
19
import java .util .List ;
@@ -79,7 +82,6 @@ public void actionPerformed(ActionEvent e) {
79
82
80
83
@ Override
81
84
public void run () {
82
- // TODO(jamo): use bg task
83
85
if (resetNotifications ) {
84
86
reviewDb .forgetReviewsNotifiedAbout ();
85
87
}
@@ -94,50 +96,40 @@ public void run() {
94
96
if (course .getReviewsUrl () == null ) {
95
97
return ;
96
98
}
97
- getReviews (course );
98
-
99
- }
100
-
101
- private void getReviews (Course course ){
102
- final ProgressHandle progress = ProgressHandleFactory .createHandle ("Checking for code reviews" );
103
- progress .start ();
104
- try {
105
- ListenableFuture <List <Review >> reviews = TmcCoreSingleton .getInstance ()
106
- .getNewReviews (course );
107
- Futures .addCallback (reviews , new FutureCallback <List <Review >>() {
108
-
109
- @ Override
110
- public void onSuccess (List <Review > v ) {
111
- success (v );
112
- progress .finish ();
113
-
99
+ BgTaskListener bgTaskListener = new BgTaskListener <List <Review >>() {
100
+ @ Override
101
+ public void bgTaskReady (List <Review > result ) {
102
+ boolean newReviews = reviewDb .setReviews (result );
103
+ if (!newReviews && notifyAboutNoNewReviews ) {
104
+ dialogs .displayMessage ("You have no unread code reviews." );
114
105
}
106
+ }
115
107
116
- @ Override
117
- public void onFailure (Throwable thrwbl ) {
118
- fail (thrwbl );
119
- progress .finish ();
108
+ @ Override
109
+ public void bgTaskFailed (final Throwable ex ) {
110
+ final String msg = "Failed to check for code reviews" ;
111
+ log .log (Level .INFO , msg , ex );
112
+ if (!beQuiet ) {
113
+ dialogs .displayError (msg , ex );
120
114
}
115
+ }
121
116
122
- });
123
- } catch (TmcCoreException ex ) {
124
- progress .finish ();
125
- Exceptions .printStackTrace (ex );
126
- }
127
- }
128
-
129
- private void success (List <Review > list ) {
130
- boolean newReviews = reviewDb .setReviews (list );
131
- if (!newReviews && notifyAboutNoNewReviews ) {
132
- dialogs .displayMessage ("You have no unread code reviews." );
133
- }
134
- }
117
+ @ Override
118
+ public void bgTaskCancelled () {
119
+ }
120
+ };
121
+ BgTask .start ("Checking for code reviews" , new CancellableCallable <List <Review >>() {
122
+ private ListenableFuture <List <Review >> lf ;
123
+ @ Override
124
+ public List <Review > call () throws Exception {
125
+ lf = TmcCoreSingleton .getInstance ().getNewReviews (courseDb .getCurrentCourse ());
126
+ return lf .get ();
127
+ }
135
128
136
- private void fail (Throwable thrwbl ) {
137
- final String msg = "Failed to check for code reviews" ;
138
- log .log (Level .INFO , msg , thrwbl );
139
- if (!beQuiet ) {
140
- dialogs .displayError (msg , thrwbl );
141
- }
129
+ @ Override
130
+ public boolean cancel () {
131
+ return lf .cancel (true );
132
+ }
133
+ }, bgTaskListener );
142
134
}
143
135
}
0 commit comments