Add 'show' command to build-in server. This command brings IDE to front.

This commit is contained in:
Konstantin Bulenkov
2015-10-07 12:53:37 +01:00
parent 27fecb7eb4
commit adef7e2ee9
2 changed files with 58 additions and 0 deletions
@@ -0,0 +1,57 @@
package org.jetbrains.ide;
import com.intellij.openapi.wm.IdeFocusManager;
import com.intellij.openapi.wm.IdeFrame;
import com.intellij.ui.AppIcon;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpMethod;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.handler.codec.http.QueryStringDecoder;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.awt.*;
import java.io.IOException;
/**
* @author Konstantin Bulenkov
*/
public class ActivateApplicationHttpService extends RestService {
@NotNull
@Override
protected String getServiceName() {
return "show";
}
@Override
protected boolean isMethodSupported(@NotNull HttpMethod method) {
return method == HttpMethod.GET;
}
@Nullable
@Override
public String execute(@NotNull QueryStringDecoder urlDecoder, @NotNull FullHttpRequest request, @NotNull ChannelHandlerContext context)
throws IOException {
final IdeFrame frame = IdeFocusManager.findInstance().getLastFocusedFrame();
if (frame instanceof Window) {
sendOk(request, context);
Runnable runnable = new Runnable() {
public void run() {
Window window = (Window)frame;
window.toFront();
window.requestFocusInWindow();
AppIcon.getInstance().requestFocus(frame);
}
};
//noinspection SSBasedInspection
SwingUtilities.invokeLater(runnable);
return "Success";
}
sendStatus(HttpResponseStatus.NOT_FOUND, false, context.channel());
return "Can't find IDE Frame";
}
}
@@ -27,6 +27,7 @@
<httpRequestHandler implementation="org.jetbrains.ide.XmlRpcServerImpl$XmlRpcRequestHandler"/>
<httpRequestHandler implementation="org.jetbrains.ide.ProjectSetRequestHandler"/>
<httpRequestHandler implementation="org.jetbrains.ide.DiffHttpService"/>
<httpRequestHandler implementation="org.jetbrains.ide.ActivateApplicationHttpService"/>
<httpRequestHandler implementation="org.jetbrains.ide.OpenFileHttpService"/>
<httpRequestHandler implementation="org.jetbrains.ide.AboutHttpService"/>
<httpRequestHandler implementation="org.jetbrains.ide.JetBrainsProtocolHandlerHttpService"/>