mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
getApplicationReady() in FrameStateManager
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
package com.intellij.ide;
|
||||
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.util.ActionCallback;
|
||||
|
||||
/**
|
||||
* Manager of listeners for notifications about activation and deactivation of the
|
||||
@@ -47,4 +48,10 @@ public abstract class FrameStateManager {
|
||||
* @param listener the listener instance.
|
||||
*/
|
||||
public abstract void removeListener(FrameStateListener listener);
|
||||
|
||||
|
||||
/**
|
||||
* @return action callback for application's active state
|
||||
*/
|
||||
public abstract ActionCallback getApplicationActive();
|
||||
}
|
||||
|
||||
@@ -30,6 +30,8 @@ public interface BusyObject {
|
||||
protected abstract boolean isReady();
|
||||
|
||||
public final void onReady() {
|
||||
if (!isReady()) return;
|
||||
|
||||
ActionCallback[] ready = getReadyCallbacks(true);
|
||||
for (ActionCallback each : ready) {
|
||||
if (each != null) {
|
||||
|
||||
@@ -18,6 +18,8 @@ package com.intellij.ide;
|
||||
import com.intellij.openapi.application.ApplicationAdapter;
|
||||
import com.intellij.openapi.application.impl.ApplicationImpl;
|
||||
import com.intellij.openapi.components.ApplicationComponent;
|
||||
import com.intellij.openapi.util.ActionCallback;
|
||||
import com.intellij.openapi.util.BusyObject;
|
||||
import com.intellij.openapi.wm.IdeFrame;
|
||||
import com.intellij.util.Alarm;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
@@ -33,7 +35,18 @@ public class FrameStateManagerImpl extends FrameStateManager implements Applicat
|
||||
private boolean myShouldSynchronize;
|
||||
private final Alarm mySyncAlarm;
|
||||
|
||||
private BusyObject.Impl myActive;
|
||||
private ApplicationImpl myApp;
|
||||
|
||||
public FrameStateManagerImpl(final ApplicationImpl app) {
|
||||
myApp = app;
|
||||
myActive = new BusyObject.Impl() {
|
||||
@Override
|
||||
protected boolean isReady() {
|
||||
return myApp.isActive();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
myShouldSynchronize = false;
|
||||
mySyncAlarm = new Alarm();
|
||||
@@ -41,6 +54,7 @@ public class FrameStateManagerImpl extends FrameStateManager implements Applicat
|
||||
app.addApplicationListener(new ApplicationAdapter() {
|
||||
@Override
|
||||
public void applicationActivated(IdeFrame ideFrame) {
|
||||
myActive.onReady();
|
||||
mySyncAlarm.cancelAllRequests();
|
||||
if (myShouldSynchronize) {
|
||||
myShouldSynchronize = false;
|
||||
@@ -64,6 +78,11 @@ public class FrameStateManagerImpl extends FrameStateManager implements Applicat
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionCallback getApplicationActive() {
|
||||
return myActive.getReady(this);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@NonNls
|
||||
public String getComponentName() {
|
||||
|
||||
Reference in New Issue
Block a user