1. Record
import com.google.gson.Gson;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.SelectionModel;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.ui.popup.Balloon;
import com.intellij.openapi.ui.popup.BalloonBuilder;
import com.intellij.openapi.ui.popup.JBPopup;
import com.intellij.openapi.ui.popup.JBPopupFactory;
import com.intellij.ui.JBColor;
import javafx.application.Application;
import okhttp3.*;
import org.apache.commons.lang.StringUtils;
import java.awt.*;
import java.io.IOException;
public class TranslateAction extends AnAction {
@Override
public void actionPerformed(AnActionEvent e) {
final Project project = e.getData(PlatformDataKeys.PROJECT);
Editor editor = e.getData(PlatformDataKeys.EDITOR);
SelectionModel selectionModel = editor.getSelectionModel();
String text = selectionModel.getSelectedText();
if (StringUtils.isEmpty(text)) {
return;
}
final Gson gson = new Gson();
String urlBaidu = "http://fanyi.youdao.com/openapi.do?keyfrom=neverland&key=969918857&type=data&doctype=json&version=1.1&q=%s";
String url = String.format(urlBaidu, text);
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder().url(url).build();
okHttpClient.newCall(request).enqueue(new Callback() {
public void onResponse(Call call, Response response) throws IOException {
String str = response.body().string();
Translation translation = gson.fromJson(str, Translation.class);
System.out.println(str);
Messages.showMessageDialog(project, translation.toString(), "翻译结果", null);
JBPopupFactory factory = JBPopupFactory.getInstance();
BalloonBuilder builder = factory.createHtmlTextBalloonBuilder(str, null,
new JBColor(new Color(188, 238, 188), new Color(73, 120, 73)),
null);
builder.setFadeoutTime(5000)
.createBalloon()
.show(factory.guessBestPopupLocation(editor), Balloon.Position.below);
}
public void onFailure(Call call, IOException e) {
System.out.println(e.getMessage());
}
});
}
}
2. FAQ