diff --git a/platform/platform-api/src/com/intellij/openapi/ui/popup/BalloonBuilder.java b/platform/platform-api/src/com/intellij/openapi/ui/popup/BalloonBuilder.java index e091b9a02efb..7a9f50ec7a70 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/popup/BalloonBuilder.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/popup/BalloonBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 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. @@ -93,4 +93,7 @@ public interface BalloonBuilder { @NotNull BalloonBuilder setLayer(Balloon.Layer layer); + + @NotNull + BalloonBuilder setBlockClicksThroughBalloon(boolean block); } \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/ui/BalloonImpl.java b/platform/platform-impl/src/com/intellij/ui/BalloonImpl.java index 3c03777fe5c6..d765354c6743 100644 --- a/platform/platform-impl/src/com/intellij/ui/BalloonImpl.java +++ b/platform/platform-impl/src/com/intellij/ui/BalloonImpl.java @@ -155,6 +155,7 @@ public class BalloonImpl implements Balloon, IdeTooltip.Ui { private boolean myAnimationEnabled = true; private boolean myShadow = false; private Layer myLayer; + private boolean myBlockClicks; public boolean isInsideBalloon(MouseEvent me) { return isInside(new RelativePoint(me)); @@ -212,6 +213,7 @@ public class BalloonImpl implements Balloon, IdeTooltip.Ui { Insets contentInsets, boolean shadow, boolean smallVariant, + boolean blockClicks, Layer layer) { myBorderColor = borderColor; myFillColor = fillColor; @@ -230,6 +232,7 @@ public class BalloonImpl implements Balloon, IdeTooltip.Ui { myDialogMode = dialogMode; myTitle = title; myLayer = layer != null ? layer : Layer.normal; + myBlockClicks = blockClicks; if (!myDialogMode) { new AwtVisitor(content) { @@ -532,22 +535,24 @@ public class BalloonImpl implements Balloon, IdeTooltip.Ui { myLayeredPane.add(myComp); myLayeredPane.setLayer(myComp, getLayer()); myPosition.updateBounds(this); - myComp.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - e.consume(); - } + if (myBlockClicks) { + myComp.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + e.consume(); + } - @Override - public void mousePressed(MouseEvent e) { - e.consume(); - } + @Override + public void mousePressed(MouseEvent e) { + e.consume(); + } - @Override - public void mouseReleased(MouseEvent e) { - e.consume(); - } - }); + @Override + public void mouseReleased(MouseEvent e) { + e.consume(); + } + }); + } } @@ -1519,7 +1524,7 @@ public class BalloonImpl implements Balloon, IdeTooltip.Ui { //pane.setBorder(new LineBorder(Color.blue)); balloon.set(new BalloonImpl(new JLabel("FUCK"), Color.black, MessageType.ERROR.getPopupBackground(), true, true, true, true, true, 0, true, null, false, 500, 25, 0, 0, false, "This is the title", - new Insets(2, 2, 2, 2), true, false, Layer.normal)); + new Insets(2, 2, 2, 2), true, false, false, Layer.normal)); balloon.get().setShowPointer(true); if (e.isShiftDown()) { diff --git a/platform/platform-impl/src/com/intellij/ui/popup/BalloonPopupBuilderImpl.java b/platform/platform-impl/src/com/intellij/ui/popup/BalloonPopupBuilderImpl.java index 4817093d2881..a2535b83e932 100644 --- a/platform/platform-impl/src/com/intellij/ui/popup/BalloonPopupBuilderImpl.java +++ b/platform/platform-impl/src/com/intellij/ui/popup/BalloonPopupBuilderImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 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. @@ -55,6 +55,7 @@ public class BalloonPopupBuilderImpl implements BalloonBuilder { private boolean mySmallVariant = false; private Balloon.Layer myLayer; + private boolean myBlockClicks = false; public BalloonPopupBuilderImpl(@NotNull final JComponent content) { myContent = content; @@ -121,6 +122,12 @@ public class BalloonPopupBuilderImpl implements BalloonBuilder { return this; } + @NotNull + public BalloonBuilder setBlockClicksThroughBalloon(boolean block) { + myBlockClicks = block; + return this; + } + @NotNull @Override public BalloonBuilder setAnimationCycle(int time) { @@ -151,7 +158,7 @@ public class BalloonPopupBuilderImpl implements BalloonBuilder { @NotNull public Balloon createBalloon() { return new BalloonImpl(myContent, myBorder, myFill, myHideOnMouseOutside, myHideOnKeyOutside, myHideOnAction, myShowCalllout, myCloseButtonEnabled, myFadeoutTime, myHideOnFrameResize, myClickHandler, myCloseOnClick, myAnimationCycle, - myCalloutShift, myPositionChangeXShift, myPositionChangeYShift, myDialogMode, myTitle, myContentInsets, myShadow, mySmallVariant, myLayer); + myCalloutShift, myPositionChangeXShift, myPositionChangeYShift, myDialogMode, myTitle, myContentInsets, myShadow, mySmallVariant, myBlockClicks, myLayer); } @NotNull diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/util/GradleBalloonBuilder.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/util/GradleBalloonBuilder.java index 1a05ed46a6b0..3268512bcbf0 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/util/GradleBalloonBuilder.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/util/GradleBalloonBuilder.java @@ -194,4 +194,11 @@ class GradleBalloonBuilder implements BalloonBuilder { myDelegate.setLayer(layer); return this; } + + @NotNull + @Override + public BalloonBuilder setBlockClicksThroughBalloon(boolean block) { + myDelegate.setBlockClicksThroughBalloon(block); + return this; + } }