cleanup
[idea/community.git] / platform / util / src / com / intellij / util / concurrency / EdtExecutorService.java
1 /*
2  * Copyright 2000-2016 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.util.concurrency;
17
18 import com.intellij.util.ui.EdtInvocationManager;
19 import org.jetbrains.annotations.NotNull;
20
21 import java.util.List;
22 import java.util.concurrent.AbstractExecutorService;
23 import java.util.concurrent.ExecutorService;
24 import java.util.concurrent.ScheduledExecutorService;
25 import java.util.concurrent.TimeUnit;
26
27 /**
28  * An {@link ExecutorService} implementation which
29  * delegates tasks to the {@link javax.swing.SwingUtilities#invokeLater(Runnable)} for execution.
30  */
31 public class EdtExecutorService extends AbstractExecutorService {
32   @NotNull
33   public static ExecutorService getInstance() {
34     return INSTANCE;
35   }
36
37   @NotNull
38   public static ScheduledExecutorService getScheduledExecutorInstance() {
39     return SCHEDULED_INSTANCE;
40   }
41
42   @Override
43   public void execute(@NotNull Runnable command) {
44     EdtInvocationManager.getInstance().invokeLater(command);
45   }
46
47   @Override
48   public void shutdown() {
49     AppScheduledExecutorService.error();
50   }
51
52   @NotNull
53   @Override
54   public List<Runnable> shutdownNow() {
55     return AppScheduledExecutorService.error();
56   }
57
58   @Override
59   public boolean isShutdown() {
60     return false;
61   }
62
63   @Override
64   public boolean isTerminated() {
65     return false;
66   }
67
68   @Override
69   public boolean awaitTermination(long timeout, @NotNull TimeUnit unit) throws InterruptedException {
70     AppScheduledExecutorService.error();
71     return false;
72   }
73
74   private static final ExecutorService INSTANCE = new EdtExecutorService();
75   private static final ScheduledExecutorService SCHEDULED_INSTANCE = new SchedulingWrapper(INSTANCE, ((AppScheduledExecutorService)AppExecutorUtil.getAppScheduledExecutorService()).delayQueue){
76     @NotNull
77     @Override
78     public List<Runnable> shutdownNow() {
79       return AppScheduledExecutorService.error();
80     }
81
82     @Override
83     public void shutdown() {
84       AppScheduledExecutorService.error();
85     }
86
87     @Override
88     public boolean awaitTermination(long timeout, @NotNull TimeUnit unit) {
89       AppScheduledExecutorService.error();
90       return false;
91     }
92   };
93 }