From 11afb9b5e770ded11bf9dafeec8009c9abdb7fdf Mon Sep 17 00:00:00 2001 From: Denis Fokin Date: Thu, 8 Aug 2013 16:23:43 +0400 Subject: [PATCH] Initial support for IDEA-108265. Currently only "Recent" projects are available. --- bin/win/jumplistbridge.dll | Bin 0 -> 80384 bytes bin/win/jumplistbridge64.dll | Bin 0 -> 95232 bytes .../src/com/intellij/idea/SocketLock.java | 7 ++ .../src/com/intellij/idea/StartupUtil.java | 4 + .../intellij/openapi/wm/impl/SystemDock.java | 5 +- .../src/com/intellij/ui/win/RecentTasks.java | 91 ++++++++++++++++++ .../intellij/ui/win/SocketControlHelper.java | 74 ++++++++++++++ .../com/intellij/ui/win/WinDockDelegate.java | 58 +++++++++++ 8 files changed, 238 insertions(+), 1 deletion(-) create mode 100644 bin/win/jumplistbridge.dll create mode 100644 bin/win/jumplistbridge64.dll create mode 100644 platform/platform-impl/src/com/intellij/ui/win/RecentTasks.java create mode 100644 platform/platform-impl/src/com/intellij/ui/win/SocketControlHelper.java create mode 100644 platform/platform-impl/src/com/intellij/ui/win/WinDockDelegate.java diff --git a/bin/win/jumplistbridge.dll b/bin/win/jumplistbridge.dll new file mode 100644 index 0000000000000000000000000000000000000000..611dd62b41d4937518162a8f8860a6831f4d6c93 GIT binary patch literal 80384 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

xelp@MQ(#uxeZf<`8sS}^ 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%0A!@vBlq^Kl+y~o;x^Cfh@mQZv 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 v$Aq1W&Ws3LB-t%+ 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%0DUPWs*{!mN{-jg2vD}i+5_K2Iuei&^9pG>RkUP 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 OBO4N{e*Q;N;Qs;i&4rQx literal 0 HcmV?d00001 diff --git a/platform/platform-impl/src/com/intellij/idea/SocketLock.java b/platform/platform-impl/src/com/intellij/idea/SocketLock.java index 149de23f8e46..ceddbd18d97f 100644 --- a/platform/platform-impl/src/com/intellij/idea/SocketLock.java +++ b/platform/platform-impl/src/com/intellij/idea/SocketLock.java @@ -79,6 +79,12 @@ public class SocketLock { } } + private volatile int acquiredPort = -1; + + public synchronized int getAcquiredPort () { + return acquiredPort; + } + public synchronized ActivateStatus lock(String path, boolean markPort, String... args) { if (LOG.isDebugEnabled()) { LOG.debug("enter: lock(path='" + path + "')"); @@ -194,6 +200,7 @@ public class SocketLock { mySocket = new ServerSocket(i, 50, InetAddress.getByName("127.0.0.1")); port = i; + acquiredPort = port; break; } catch (IOException e) { diff --git a/platform/platform-impl/src/com/intellij/idea/StartupUtil.java b/platform/platform-impl/src/com/intellij/idea/StartupUtil.java index 7b01b1874695..5aed4ed72cd7 100644 --- a/platform/platform-impl/src/com/intellij/idea/StartupUtil.java +++ b/platform/platform-impl/src/com/intellij/idea/StartupUtil.java @@ -76,6 +76,10 @@ public class StartupUtil { void start(boolean newConfigFolder); } + public synchronized static int getAcquiredPort() { + return ourLock.getAcquiredPort(); + } + static void prepareAndStart(String[] args, AppStarter appStarter) { boolean newConfigFolder = false; diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/SystemDock.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/SystemDock.java index ab3a415a01b3..d8d0344b21e9 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/SystemDock.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/SystemDock.java @@ -17,6 +17,7 @@ package com.intellij.openapi.wm.impl; import com.intellij.openapi.util.SystemInfo; import com.intellij.ui.mac.MacDockDelegate; +import com.intellij.ui.win.WinDockDelegate; /** * @author Denis Fokin @@ -28,6 +29,8 @@ public class SystemDock { static { if (SystemInfo.isMac) { delegate = MacDockDelegate.getInstance(); + } else if (SystemInfo.isWin7OrNewer) { + delegate = WinDockDelegate.getInstance(); } } @@ -36,7 +39,7 @@ public class SystemDock { delegate.updateRecentProjectsMenu(); } - public static interface Delegate { + public interface Delegate { void updateRecentProjectsMenu(); } } diff --git a/platform/platform-impl/src/com/intellij/ui/win/RecentTasks.java b/platform/platform-impl/src/com/intellij/ui/win/RecentTasks.java new file mode 100644 index 000000000000..2d620b1a750d --- /dev/null +++ b/platform/platform-impl/src/com/intellij/ui/win/RecentTasks.java @@ -0,0 +1,91 @@ +/* + * Copyright 2000-2013 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.ui.win; + +import com.intellij.openapi.application.PathManager; + +import java.io.File; +import java.lang.ref.WeakReference; +import java.util.concurrent.atomic.AtomicBoolean; + +public class RecentTasks { + + private static AtomicBoolean initialiazed = + new AtomicBoolean(false); + + private final static WeakReference openerThread = + new WeakReference(Thread.currentThread()); + + static { + final String libraryName = (System.getProperty("sun.arch.data.model").contains("64"))? + "jumplistbridge64.dll": + "jumplistbridge.dll"; + + final String binPath = PathManager.getBinPath(); + final String communityBinPath = PathManager.getHomePath() + File.separatorChar + "community" + File.separatorChar + "bin"; + + final String [] libraryPaths = { + binPath, + binPath + File.separatorChar + "win", + communityBinPath, + communityBinPath + File.separatorChar + "win", + }; + + for (String path : libraryPaths) { + final File candidate = new File(path + File.separatorChar + libraryName); + if (candidate.exists()) { + System.load(candidate.getAbsolutePath()); + break; + } + } + } + + private synchronized static void init() { + if (initialiazed.get()) return; + + initialize("JetBrains.JetBrainsNativeAppID"); + initialiazed.set(true); + } + + /** + * Com initialization should be invoked once per process. + * All invocation should be made from the same thread. + * @param applicationId + */ + native private static void initialize (String applicationId); + native private static void addTaskNative (String location, String args, String description); + native private static void clearNative(); + + public synchronized static void clear() { + init(); + checkThread(); + clearNative(); + } + + public synchronized static void addTask(File location, String args, String description) { + init(); + checkThread(); + if (!location.exists()) throw new IllegalArgumentException("Task should be a valid path"); + addTaskNative(location.getAbsolutePath(), args, description); + } + + private static void checkThread() { + Thread t = openerThread.get(); + if (t == null || !t.equals(Thread.currentThread())) + throw new RuntimeException("This class has to be used from the same thread"); + } +} + diff --git a/platform/platform-impl/src/com/intellij/ui/win/SocketControlHelper.java b/platform/platform-impl/src/com/intellij/ui/win/SocketControlHelper.java new file mode 100644 index 000000000000..84372bf5c9cd --- /dev/null +++ b/platform/platform-impl/src/com/intellij/ui/win/SocketControlHelper.java @@ -0,0 +1,74 @@ +/* + * Copyright 2000-2013 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.ui.win; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.File; +import java.io.IOException; +import java.net.InetAddress; +import java.net.Socket; +import java.net.UnknownHostException; + +/** + * @author Denis Fokin + */ +public class SocketControlHelper { + + private static final String ACTIVATE_COMMAND = "activate "; + + /* + * args[0] - socket of controlled IDE + * args[1] - project path + */ + public static void main(String[] args) { + final int portNumber = Integer.parseInt(args[0]); + final String pathToProject = new File(args[1]).getAbsolutePath(); + final InetAddress lba = getLoopbackAddress(); + + try { + Socket socket = new Socket(lba, portNumber); + socket.setSoTimeout(300); + DataInputStream in = new DataInputStream(socket.getInputStream()); + DataOutputStream out = new DataOutputStream(socket.getOutputStream()); + try { + + out.writeUTF(ACTIVATE_COMMAND + new File(".").getAbsolutePath() + "\0" + pathToProject); + out.flush(); + String response = in.readUTF(); + if (response.equals("ok")) { + System.err.println("Activated."); + } + } finally { + in.close(); + out.close(); + socket.close(); + } + } catch (IOException ignored) {} + + System.err.println("Activation failed"); + } + + private static InetAddress getLoopbackAddress() { + InetAddress returnValue = null; + try { + returnValue = InetAddress.getByName("127.0.0.1"); + } catch (UnknownHostException uhe) { + uhe.printStackTrace(); + } + return returnValue; + } +} diff --git a/platform/platform-impl/src/com/intellij/ui/win/WinDockDelegate.java b/platform/platform-impl/src/com/intellij/ui/win/WinDockDelegate.java new file mode 100644 index 000000000000..951154f909ff --- /dev/null +++ b/platform/platform-impl/src/com/intellij/ui/win/WinDockDelegate.java @@ -0,0 +1,58 @@ +/* + * Copyright 2000-2013 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.ui.win; + +import com.intellij.ide.RecentProjectsManagerBase; +import com.intellij.ide.ReopenProjectAction; +import com.intellij.idea.StartupUtil; +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.application.PathManager; +import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.wm.impl.SystemDock; +import java.io.File; + +/** + * @author Denis Fokin + */ +public class WinDockDelegate implements SystemDock.Delegate { + + private static final Logger LOG = Logger.getInstance("#com.intellij.ui.win.WinDockDelegate"); + + private static final String javaExe = System.getProperty("java.home") + File.separatorChar + "bin" + File.separatorChar + "javaw.exe"; + private static final String argsToExecute = new StringBuilder(" -classpath ").append(PathManager.getJarPathForClass(SocketControlHelper.class)). + append(" com.intellij.ui.win.SocketControlHelper ").append(StartupUtil.getAcquiredPort()) + .append(" ").toString(); + + private static boolean initialized = false; + private static final SystemDock.Delegate instance = new WinDockDelegate(); + + private WinDockDelegate() {} + + public void updateRecentProjectsMenu () { + final AnAction[] recentProjectActions = RecentProjectsManagerBase.getInstance().getRecentProjectsActions(false); + RecentTasks.clear(); + for (final AnAction action : recentProjectActions) { + ReopenProjectAction rpa = ((ReopenProjectAction)action); + RecentTasks.addTask(new File(javaExe), argsToExecute + rpa.getProjectPath(), rpa.getProjectName()); + } + } + synchronized public static SystemDock.Delegate getInstance() { + if (!initialized) { + initialized = true; + } + return instance; + } +}