mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
IDEADEV-38479 Show run configuration's icon in "Run"-window
This commit is contained in:
@@ -33,11 +33,12 @@ import com.intellij.execution.configurations.RemoteState;
|
||||
import com.intellij.execution.configurations.RunProfileState;
|
||||
import com.intellij.execution.executors.DefaultDebugExecutor;
|
||||
import com.intellij.execution.process.ProcessHandler;
|
||||
import com.intellij.execution.runners.ProgramRunner;
|
||||
import com.intellij.execution.runners.ExecutionEnvironment;
|
||||
import com.intellij.execution.runners.ProgramRunner;
|
||||
import com.intellij.execution.ui.RunContentDescriptor;
|
||||
import com.intellij.execution.ui.RunContentListener;
|
||||
import com.intellij.execution.ui.RunContentManager;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.components.ProjectComponent;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsListener;
|
||||
@@ -45,7 +46,6 @@ import com.intellij.openapi.editor.colors.EditorColorsManager;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsScheme;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -121,7 +121,7 @@ public class DebuggerPanelsManager implements ProjectComponent {
|
||||
debugProcess.putUserData(BatchEvaluator.REMOTE_SESSION_KEY, Boolean.TRUE);
|
||||
}
|
||||
|
||||
final DebuggerSessionTab sessionTab = new DebuggerSessionTab(myProject, debuggerSession.getSessionName());
|
||||
final DebuggerSessionTab sessionTab = new DebuggerSessionTab(myProject, debuggerSession.getSessionName(), environment.getRunProfile().getIcon());
|
||||
Disposer.register(myProject, sessionTab);
|
||||
RunContentDescriptor runContentDescriptor =
|
||||
sessionTab.attachToSession(debuggerSession, runner, environment);
|
||||
|
||||
@@ -99,10 +99,12 @@ public class DebuggerSessionTab extends DebuggerLogConsoleManagerBase implements
|
||||
public static final String BREAKPOINT_CONDITION = "breakpoint";
|
||||
private final ThreadsPanel myThreadsPanel;
|
||||
private static final String THREAD_DUMP_CONTENT_PREFIX = "Dump";
|
||||
private Icon myIcon;
|
||||
|
||||
public DebuggerSessionTab(Project project, String sessionName) {
|
||||
public DebuggerSessionTab(final Project project, final String sessionName, @Nullable final Icon icon) {
|
||||
super(project);
|
||||
|
||||
myIcon = icon;
|
||||
|
||||
myUi = RunnerLayoutUi.Factory.getInstance(project).create("JavaDebugger", DebuggerBundle.message("title.generic.debug.dialog"), sessionName, this);
|
||||
|
||||
@@ -253,7 +255,7 @@ public class DebuggerSessionTab extends DebuggerLogConsoleManagerBase implements
|
||||
private RunContentDescriptor initUI(ExecutionResult executionResult) {
|
||||
|
||||
myConsole = executionResult.getExecutionConsole();
|
||||
myRunContentDescriptor = new RunContentDescriptor(myConsole, executionResult.getProcessHandler(), myUi.getComponent(), getSessionName());
|
||||
myRunContentDescriptor = new RunContentDescriptor(myConsole, executionResult.getProcessHandler(), myUi.getComponent(), getSessionName(), myIcon);
|
||||
|
||||
if (ApplicationManager.getApplication().isUnitTestMode()) {
|
||||
return myRunContentDescriptor;
|
||||
|
||||
@@ -34,6 +34,8 @@ import com.intellij.psi.search.GlobalSearchScope;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
/**
|
||||
* @author spleaner
|
||||
*/
|
||||
@@ -41,14 +43,14 @@ public class JavaExecutionUtil {
|
||||
private JavaExecutionUtil() {
|
||||
}
|
||||
|
||||
public static boolean executeRun(@NotNull final Project project, String contentName,
|
||||
public static boolean executeRun(@NotNull final Project project, String contentName, Icon icon,
|
||||
final DataContext dataContext) throws ExecutionException {
|
||||
return executeRun(project, contentName, dataContext, null);
|
||||
return executeRun(project, contentName, icon, dataContext, null);
|
||||
}
|
||||
|
||||
public static boolean executeRun(@NotNull final Project project, String contentName, DataContext dataContext, Filter[] filters) throws ExecutionException {
|
||||
public static boolean executeRun(@NotNull final Project project, String contentName, Icon icon, DataContext dataContext, Filter[] filters) throws ExecutionException {
|
||||
final JavaParameters cmdLine = JavaParameters.JAVA_PARAMETERS.getData(dataContext);
|
||||
final DefaultRunProfile profile = new DefaultRunProfile(project, cmdLine, contentName, filters);
|
||||
final DefaultRunProfile profile = new DefaultRunProfile(project, cmdLine, contentName, icon, filters);
|
||||
final ProgramRunner runner = RunnerRegistry.getInstance().getRunner(DefaultRunExecutor.EXECUTOR_ID, profile);
|
||||
if (runner != null) {
|
||||
runner.execute(DefaultRunExecutor.getRunExecutorInstance(), new ExecutionEnvironment(profile, dataContext));
|
||||
@@ -63,12 +65,18 @@ public class JavaExecutionUtil {
|
||||
private final String myContentName;
|
||||
private final Filter[] myFilters;
|
||||
private final Project myProject;
|
||||
private Icon myIcon;
|
||||
|
||||
public DefaultRunProfile(final Project project, final JavaParameters parameters, String contentName, Filter[] filters) {
|
||||
public DefaultRunProfile(final Project project, final JavaParameters parameters, final String contentName, final Icon icon, Filter[] filters) {
|
||||
myProject = project;
|
||||
myParameters = parameters;
|
||||
myContentName = contentName;
|
||||
myFilters = filters;
|
||||
myIcon = icon;
|
||||
}
|
||||
|
||||
public Icon getIcon() {
|
||||
return myIcon;
|
||||
}
|
||||
|
||||
public RunProfileState getState(@NotNull final Executor executor, @NotNull final ExecutionEnvironment env) throws ExecutionException {
|
||||
|
||||
@@ -49,6 +49,7 @@ import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
@@ -117,6 +118,10 @@ public class JavadocConfiguration implements ModuleRunProfile, JDOMExternalizabl
|
||||
return new JavadocConfigurable(this);
|
||||
}
|
||||
|
||||
public Icon getIcon() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Module[] getModules() {
|
||||
return Module.EMPTY_ARRAY;
|
||||
|
||||
+8
-1
@@ -27,6 +27,7 @@ import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -42,11 +43,13 @@ public abstract class RunConfigurationBase extends UserDataHolderBase implements
|
||||
private ArrayList<PredefinedLogFile> myPredefinedLogFiles = new ArrayList<PredefinedLogFile>();
|
||||
@NonNls private static final String LOG_FILE = "log_file";
|
||||
@NonNls private static final String PREDEFINED_LOG_FILE_ELEMENT = "predefined_log_file";
|
||||
private Icon myIcon;
|
||||
|
||||
protected RunConfigurationBase(Project project, ConfigurationFactory factory, String name) {
|
||||
protected RunConfigurationBase(final Project project, final ConfigurationFactory factory, final String name) {
|
||||
myProject = project;
|
||||
myFactory = factory;
|
||||
myName = name;
|
||||
myIcon = factory.getIcon();
|
||||
}
|
||||
|
||||
public int getUniqueID() {
|
||||
@@ -70,6 +73,10 @@ public abstract class RunConfigurationBase extends UserDataHolderBase implements
|
||||
return myFactory.getType();
|
||||
}
|
||||
|
||||
public Icon getIcon() {
|
||||
return myIcon;
|
||||
}
|
||||
|
||||
public final String getName() {
|
||||
return myName;
|
||||
}
|
||||
|
||||
@@ -21,6 +21,8 @@ import com.intellij.execution.runners.ExecutionEnvironment;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
public interface RunProfile {
|
||||
/**
|
||||
* todo - javadoc
|
||||
@@ -30,6 +32,9 @@ public interface RunProfile {
|
||||
|
||||
String getName();
|
||||
|
||||
@Nullable
|
||||
Icon getIcon();
|
||||
|
||||
void checkConfiguration() throws RuntimeConfigurationException;
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,8 @@ import com.intellij.openapi.util.JDOMExternalizable;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
public abstract class RuntimeConfiguration extends RunConfigurationBase implements LocatableConfiguration, Cloneable, ModuleRunConfiguration {
|
||||
protected RuntimeConfiguration(final String name, final Project project, final ConfigurationFactory factory) {
|
||||
super(project, factory, name);
|
||||
|
||||
+6
@@ -29,6 +29,7 @@ import com.intellij.openapi.util.WriteExternalException;
|
||||
import org.jdom.Attribute;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.util.List;
|
||||
@@ -55,6 +56,11 @@ public class UnknownRunConfiguration implements RunConfiguration {
|
||||
myDoNotStore = b;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Icon getIcon() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isDoNotStore() {
|
||||
return myDoNotStore;
|
||||
}
|
||||
|
||||
@@ -34,18 +34,21 @@ public class RunContentDescriptor {
|
||||
private final ProcessHandler myProcessHandler;
|
||||
private final JComponent myComponent;
|
||||
private final String myDisplayName;
|
||||
private final Icon myIcon;
|
||||
|
||||
/**
|
||||
* Used to hack {@link com.intellij.execution.runners.RestartAction}
|
||||
*/
|
||||
private Content myContent;
|
||||
|
||||
public RunContentDescriptor(final ExecutionConsole executionConsole,
|
||||
final ProcessHandler processHandler, final JComponent component, final String displayName) {
|
||||
final ProcessHandler processHandler, final JComponent component, final String displayName, final Icon icon) {
|
||||
LOG.assertTrue(executionConsole != null || ApplicationManager.getApplication().isUnitTestMode());
|
||||
myExecutionConsole = executionConsole;
|
||||
myProcessHandler = processHandler;
|
||||
myComponent = component;
|
||||
myDisplayName = displayName;
|
||||
myIcon = icon;
|
||||
myComponent.putClientProperty(DataManager.CLIENT_PROPERTY_DATA_PROVIDER, new DataProvider() {
|
||||
|
||||
public Object getData(@NonNls final String dataId) {
|
||||
@@ -55,7 +58,11 @@ public class RunContentDescriptor {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public RunContentDescriptor(final ExecutionConsole executionConsole,
|
||||
final ProcessHandler processHandler, final JComponent component, final String displayName) {
|
||||
this(executionConsole, processHandler, component, displayName, null);
|
||||
}
|
||||
|
||||
public ExecutionConsole getExecutionConsole() {
|
||||
@@ -66,6 +73,11 @@ public class RunContentDescriptor {
|
||||
Disposer.dispose(myExecutionConsole);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Icon getIcon() {
|
||||
return myIcon;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public ProcessHandler getProcessHandler() {
|
||||
return myProcessHandler;
|
||||
|
||||
@@ -276,7 +276,7 @@ public class RunContentBuilder implements LogConsoleManager, Disposable {
|
||||
private final Disposable[] myAdditionalDisposables;
|
||||
|
||||
public MyRunContentDescriptor(final RunProfile profile, final ExecutionResult executionResult, final boolean reuseProhibited, final JComponent component, final Disposable... additionalDisposables) {
|
||||
super(executionResult.getExecutionConsole(), executionResult.getProcessHandler(), component, profile.getName());
|
||||
super(executionResult.getExecutionConsole(), executionResult.getProcessHandler(), component, profile.getName(), profile.getIcon());
|
||||
myReuseProhibited = reuseProhibited;
|
||||
myAdditionalDisposables = additionalDisposables;
|
||||
}
|
||||
|
||||
@@ -15,10 +15,7 @@
|
||||
*/
|
||||
package com.intellij.execution.ui;
|
||||
|
||||
import com.intellij.execution.ExecutionBundle;
|
||||
import com.intellij.execution.Executor;
|
||||
import com.intellij.execution.ExecutorRegistry;
|
||||
import com.intellij.execution.TerminateRemoteProcessDialog;
|
||||
import com.intellij.execution.*;
|
||||
import com.intellij.execution.process.ProcessAdapter;
|
||||
import com.intellij.execution.process.ProcessEvent;
|
||||
import com.intellij.execution.process.ProcessHandler;
|
||||
@@ -39,6 +36,7 @@ import com.intellij.openapi.project.ProjectManager;
|
||||
import com.intellij.openapi.project.ProjectManagerListener;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.IconLoader;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.wm.ToolWindow;
|
||||
import com.intellij.openapi.wm.ToolWindowAnchor;
|
||||
@@ -47,6 +45,7 @@ import com.intellij.openapi.wm.ex.ToolWindowManagerAdapter;
|
||||
import com.intellij.openapi.wm.ex.ToolWindowManagerEx;
|
||||
import com.intellij.ui.content.*;
|
||||
import com.intellij.util.EventDispatcher;
|
||||
import com.intellij.util.IconUtil;
|
||||
import com.intellij.util.concurrency.Semaphore;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -249,7 +248,7 @@ public class RunContentManagerImpl implements RunContentManager, Disposable {
|
||||
public void showRunContent(@NotNull final Executor executor, final RunContentDescriptor descriptor) {
|
||||
if(ApplicationManager.getApplication().isUnitTestMode()) return;
|
||||
|
||||
final ContentManager contentManager = getContentManagerForRunner(executor);
|
||||
final ContentManager contentManager = getContentManagerForRunner(executor);
|
||||
RunContentDescriptor oldDescriptor = chooseReuseContentForDescriptor(contentManager, descriptor);
|
||||
|
||||
final Content content;
|
||||
@@ -261,7 +260,8 @@ public class RunContentManagerImpl implements RunContentManager, Disposable {
|
||||
}
|
||||
else {
|
||||
content = createNewContent(contentManager, descriptor, executor.getToolWindowId());
|
||||
content.setIcon(executor.getToolWindowIcon());
|
||||
final Icon icon = descriptor.getIcon();
|
||||
content.setIcon(icon == null ? executor.getToolWindowIcon() : icon);
|
||||
}
|
||||
|
||||
content.setComponent(descriptor.getComponent());
|
||||
@@ -272,7 +272,8 @@ public class RunContentManagerImpl implements RunContentManager, Disposable {
|
||||
public void startNotified(final ProcessEvent event) {
|
||||
LaterInvocator.invokeLater(new Runnable() {
|
||||
public void run() {
|
||||
content.setIcon(executor.getToolWindowIcon());
|
||||
final Icon icon = descriptor.getIcon();
|
||||
content.setIcon(icon == null ? executor.getToolWindowIcon() : icon);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -280,7 +281,8 @@ public class RunContentManagerImpl implements RunContentManager, Disposable {
|
||||
public void processTerminated(final ProcessEvent event) {
|
||||
LaterInvocator.invokeLater(new Runnable() {
|
||||
public void run() {
|
||||
content.setIcon(executor.getDisabledIcon());
|
||||
final Icon icon = descriptor.getIcon();
|
||||
content.setIcon(icon == null ? executor.getDisabledIcon() : IconLoader.getTransparentIcon(icon));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -35,6 +35,8 @@ import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
/**
|
||||
* @author Eugene Zhuravlev
|
||||
* Date: Mar 30, 2005
|
||||
@@ -57,6 +59,10 @@ public class ToolRunProfile implements ModuleRunProfile{
|
||||
return myTool.getName();
|
||||
}
|
||||
|
||||
public Icon getIcon() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void checkConfiguration() throws RuntimeConfigurationException {
|
||||
}
|
||||
|
||||
|
||||
@@ -321,6 +321,10 @@ public final class PreviewFormAction extends AnAction{
|
||||
myStatusbarMessage = statusbarMessage;
|
||||
}
|
||||
|
||||
public Icon getIcon() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public RunProfileState getState(@NotNull final Executor executor, @NotNull final ExecutionEnvironment env) throws ExecutionException {
|
||||
final JavaCommandLineState state = new JavaCommandLineState(env) {
|
||||
protected JavaParameters createJavaParameters() {
|
||||
|
||||
Reference in New Issue
Block a user