breakpoints-ui. deny multiple breakpoints popups.

This commit is contained in:
andrey.zaytsev
2012-08-06 17:18:53 +04:00
parent b9b616eb90
commit e6979756e6
4 changed files with 25 additions and 6 deletions
@@ -27,6 +27,7 @@ import com.intellij.openapi.editor.ex.EditorGutterComponentEx;
import com.intellij.openapi.editor.markup.GutterIconRenderer;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.popup.Balloon;
import com.intellij.openapi.ui.popup.JBPopup;
import com.intellij.openapi.ui.popup.JBPopupListener;
import com.intellij.openapi.ui.popup.LightweightWindowEvent;
import com.intellij.openapi.util.Key;
@@ -93,8 +94,11 @@ public class JavaEditBreakpointActionHandler extends EditBreakpointActionHandler
UIUtil.invokeLaterIfNeeded(new Runnable() {
@Override
public void run() {
BreakpointsMasterDetailPopupFactory.
getInstance(project).createPopup(javaBreakpoint).showCenteredInCurrentWindow(project);
final JBPopup popup = BreakpointsMasterDetailPopupFactory.
getInstance(project).createPopup(javaBreakpoint);
if (popup != null) {
popup.showCenteredInCurrentWindow(project);
}
}
});
}
@@ -26,6 +26,7 @@ import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.ui.popup.JBPopup;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.xdebugger.impl.breakpoints.XBreakpointUtil;
import com.intellij.xdebugger.impl.breakpoints.ui.BreakpointsConfigurationDialogFactory;
@@ -56,8 +57,11 @@ public class ViewBreakpointsAction extends AnAction implements AnAction.Transpar
}
if (Registry.is("debugger.breakpoint.use.breakpoints.popup")) {
BreakpointsMasterDetailPopupFactory.
getInstance(project).createPopup(myInitialBreakpoint).showCenteredInCurrentWindow(project);
final JBPopup popup = BreakpointsMasterDetailPopupFactory.
getInstance(project).createPopup(myInitialBreakpoint);
if (popup != null) {
popup.showCenteredInCurrentWindow(project);
}
}
else {
DialogWrapper dialog = BreakpointsConfigurationDialogFactory.getInstance(project).createDialog(myInitialBreakpoint);
@@ -35,6 +35,8 @@ public class BreakpointsMasterDetailPopupFactory {
private Project myProject;
private Balloon myBalloonToHide;
private Object myBreakpoint;
private JBPopup myPopupShowing;
public BreakpointsMasterDetailPopupFactory(Project project) {
myProject = project;
@@ -63,7 +65,11 @@ public class BreakpointsMasterDetailPopupFactory {
return ServiceManager.getService(project, BreakpointsMasterDetailPopupFactory.class);
}
@Nullable
public JBPopup createPopup(@Nullable Object initialBreakpoint) {
if (myPopupShowing != null) {
return null;
}
BreakpointMasterDetailPopupBuilder builder = new BreakpointMasterDetailPopupBuilder(myProject);
builder.setInitialBreakpoint(initialBreakpoint != null ? initialBreakpoint : myBreakpoint);
builder.setBreakpointsPanelProviders(collectPanelProviders());
@@ -84,6 +90,7 @@ public class BreakpointsMasterDetailPopupFactory {
myBalloonToHide.hide();
myBalloonToHide = null;
}
myPopupShowing = popup;
}
@Override
@@ -91,6 +98,7 @@ public class BreakpointsMasterDetailPopupFactory {
for (BreakpointPanelProvider provider : collectPanelProviders()) {
provider.onDialogClosed(myProject);
}
myPopupShowing = null;
}
});
return popup;
@@ -199,8 +199,11 @@ public class DebuggerUIUtil {
public void run() {
propertiesPanel.saveProperties();
//showXBreakpointEditorBalloon(project, point, component, true, breakpoint);
BreakpointsMasterDetailPopupFactory.
getInstance(project).createPopup(breakpoint).showCenteredInCurrentWindow(project);
final JBPopup popup = BreakpointsMasterDetailPopupFactory.
getInstance(project).createPopup(breakpoint);
if (popup != null) {
popup.showCenteredInCurrentWindow(project);
}
}
};