From 0caa188ecf3b0afbf146160fa89c06b16a8a5a0f Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Wed, 10 Jun 2015 17:23:05 +0200 Subject: [PATCH] could be several scripts for one source file --- .../actions/BaseOpenInBrowserAction.java | 45 ++++++++++--------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/xml/impl/src/com/intellij/ide/browsers/actions/BaseOpenInBrowserAction.java b/xml/impl/src/com/intellij/ide/browsers/actions/BaseOpenInBrowserAction.java index bdf5faa321bb..2c50377e2af5 100644 --- a/xml/impl/src/com/intellij/ide/browsers/actions/BaseOpenInBrowserAction.java +++ b/xml/impl/src/com/intellij/ide/browsers/actions/BaseOpenInBrowserAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,7 +30,6 @@ import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.popup.JBPopupFactory; -import com.intellij.openapi.util.AsyncResult; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; @@ -45,6 +44,8 @@ import com.intellij.util.containers.ContainerUtil; import com.intellij.xml.util.HtmlUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.concurrency.AsyncPromise; +import org.jetbrains.concurrency.Promise; import javax.swing.*; import java.awt.event.InputEvent; @@ -167,13 +168,14 @@ public abstract class BaseOpenInBrowserAction extends DumbAwareAction { try { Collection urls = WebBrowserService.getInstance().getUrlsToOpen(request, preferLocalUrl); if (!urls.isEmpty()) { - chooseUrl(urls).doWhenDone(new Consumer() { - @Override - public void consume(Url url) { - ApplicationManager.getApplication().saveAll(); - BrowserLauncher.getInstance().browse(url.toExternalForm(), browser, request.getProject()); - } - }); + chooseUrl(urls) + .done(new Consumer() { + @Override + public void consume(Url url) { + ApplicationManager.getApplication().saveAll(); + BrowserLauncher.getInstance().browse(url.toExternalForm(), browser, request.getProject()); + } + }); } } catch (WebBrowserUrlProvider.BrowserException e1) { @@ -185,9 +187,9 @@ public abstract class BaseOpenInBrowserAction extends DumbAwareAction { } @NotNull - private static AsyncResult chooseUrl(@NotNull Collection urls) { + private static Promise chooseUrl(@NotNull Collection urls) { if (urls.size() == 1) { - return new AsyncResult.Done(ContainerUtil.getFirstItem(urls)); + return Promise.resolve(ContainerUtil.getFirstItem(urls)); } final JBList list = new JBList(urls); @@ -200,23 +202,24 @@ public abstract class BaseOpenInBrowserAction extends DumbAwareAction { } }); - final AsyncResult result = new AsyncResult(); - JBPopupFactory.getInstance(). - createListPopupBuilder(list). - setTitle("Choose Url"). - setItemChoosenCallback(new Runnable() { + final AsyncPromise result = new AsyncPromise(); + JBPopupFactory.getInstance() + .createListPopupBuilder(list) + .setTitle("Choose Url") + .setItemChoosenCallback(new Runnable() { @Override public void run() { Url value = (Url)list.getSelectedValue(); - if (value != null) { - result.setDone(value); + if (value == null) { + result.setError(Promise.createError("selected value is null")); } else { - result.setRejected(); + result.setResult(value); } } - }). - createPopup().showInFocusCenter(); + }) + .createPopup() + .showInFocusCenter(); return result; } } \ No newline at end of file