2 * Copyright 2000-2009 JetBrains s.r.o.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
16 package com
.intellij
.lifecycle
;
18 import com
.intellij
.openapi
.project
.Project
;
19 import org
.jetbrains
.annotations
.NotNull
;
21 import java
.util
.concurrent
.Future
;
22 import java
.util
.concurrent
.TimeUnit
;
24 public class ScheduledSlowlyClosingAlarm
extends SlowlyClosingAlarm
{
25 ScheduledSlowlyClosingAlarm(@NotNull Project project
, @NotNull String name
, ControlledAlarmFactory
.MyExecutorWrapper executor
, boolean executorIsShared
) {
26 super(project
, name
, executor
, executorIsShared
);
29 public void addRequest(final Runnable runnable
, final int delayMillis
) {
30 if (myExecutorService
.supportsScheduling()) {
31 synchronized (myLock
) {
32 if (myDisposeStarted
) return;
33 final MyWrapper wrapper
= new MyWrapper(runnable
);
34 final Future
<?
> future
= myExecutorService
.schedule(wrapper
, delayMillis
, TimeUnit
.MILLISECONDS
);
35 wrapper
.setFuture(future
);
36 myFutureList
.add(future
);
37 debug("request scheduled");