Example usage for com.intellij.openapi.ui.popup Balloon addListener

List of usage examples for com.intellij.openapi.ui.popup Balloon addListener

Introduction

In this page you can find the example usage for com.intellij.openapi.ui.popup Balloon addListener.

Prototype

void addListener(@NotNull JBPopupListener listener);

Source Link

Usage

From source file:com.intellij.notification.impl.NotificationsManagerImpl.java

License:Apache License

private static void showNotification(final Notification notification, @Nullable final Project project) {
    Application application = ApplicationManager.getApplication();
    if (application instanceof ApplicationEx && !((ApplicationEx) application).isLoaded()) {
        application.invokeLater(new Runnable() {
            @Override/*from   ww  w  . ja  va 2  s  . c om*/
            public void run() {
                showNotification(notification, project);
            }
        }, ModalityState.current());
        return;
    }

    String groupId = notification.getGroupId();
    final NotificationSettings settings = NotificationsConfigurationImpl.getSettings(groupId);

    NotificationDisplayType type = settings.getDisplayType();
    String toolWindowId = NotificationsConfigurationImpl.getInstanceImpl().getToolWindowId(groupId);
    if (type == NotificationDisplayType.TOOL_WINDOW && (toolWindowId == null || project == null
            || !ToolWindowManager.getInstance(project).canShowNotification(toolWindowId))) {
        type = NotificationDisplayType.BALLOON;
    }

    switch (type) {
    case NONE:
        return;
    //case EXTERNAL:
    //  notifyByExternal(notification);
    //  break;
    case STICKY_BALLOON:
    case BALLOON:
    default:
        Balloon balloon = notifyByBalloon(notification, type, project);
        if (!settings.isShouldLog() || type == NotificationDisplayType.STICKY_BALLOON) {
            if (balloon == null) {
                notification.expire();
            } else {
                balloon.addListener(new JBPopupAdapter() {
                    @Override
                    public void onClosed(LightweightWindowEvent event) {
                        if (!event.isOk()) {
                            notification.expire();
                        }
                    }
                });
            }
        }
        break;
    case TOOL_WINDOW:
        MessageType messageType = notification.getType() == NotificationType.ERROR ? MessageType.ERROR
                : notification.getType() == NotificationType.WARNING ? MessageType.WARNING : MessageType.INFO;
        final NotificationListener notificationListener = notification.getListener();
        HyperlinkListener listener = notificationListener == null ? null : new HyperlinkListener() {
            @Override
            public void hyperlinkUpdate(HyperlinkEvent e) {
                notificationListener.hyperlinkUpdate(notification, e);
            }
        };
        assert toolWindowId != null;
        String msg = notification.getTitle();
        if (StringUtil.isNotEmpty(notification.getContent())) {
            if (StringUtil.isNotEmpty(msg)) {
                msg += "<br>";
            }
            msg += notification.getContent();
        }

        //noinspection SSBasedInspection
        ToolWindowManager.getInstance(project).notifyByBalloon(toolWindowId, messageType, msg,
                notification.getIcon(), listener);
    }
}

From source file:com.intellij.notification.Notification.java

License:Apache License

public void setBalloon(@NotNull final Balloon balloon) {
    hideBalloon();//ww w  .j  a va 2s  . co m
    myBalloonRef = new WeakReference<Balloon>(balloon);
    balloon.addListener(new JBPopupAdapter() {
        @Override
        public void onClosed(LightweightWindowEvent event) {
            WeakReference<Balloon> ref = myBalloonRef;
            if (ref != null && ref.get() == balloon) {
                myBalloonRef = null;
            }
        }
    });
}

From source file:com.intellij.ui.popup.NotificationPopup.java

License:Apache License

public NotificationPopup(final JComponent owner, final JComponent content, Color backgroud,
        final boolean useDefaultPreferredSize, ActionListener clickHandler, boolean closeOnClick) {
    final IdeFrame frame = findFrame(owner);
    if (frame == null || !((Window) frame).isShowing() || frame.getBalloonLayout() == null) {
        final FramelessNotificationPopup popup = new FramelessNotificationPopup(owner, content, backgroud,
                useDefaultPreferredSize, clickHandler);

        myImpl = new Impl() {
            public void addListener(JBPopupListener listener) {
                popup.getPopup().addListener(listener);
            }/*from w w  w. j  av a2s.  co  m*/

            public void hide() {
                popup.getPopup().cancel();
            }
        };
    } else {
        final Wrapper wrapper = new NonOpaquePanel(content) {
            @Override
            public Dimension getPreferredSize() {
                final Dimension size = super.getPreferredSize();
                if (useDefaultPreferredSize) {
                    if (size.width > 400 || size.height > 200) {
                        size.width = 400;
                        size.height = 200;
                    }
                }
                return size;
            }
        };

        final Balloon balloon = JBPopupFactory.getInstance().createBalloonBuilder(wrapper).setFadeoutTime(5000)
                .setHideOnClickOutside(false).setHideOnFrameResize(false).setHideOnKeyOutside(false)
                .setCloseButtonEnabled(true).setFillColor(backgroud).setShowCallout(false)
                .setClickHandler(clickHandler, closeOnClick).createBalloon();

        BalloonLayout layout = frame.getBalloonLayout();
        assert layout != null;

        layout.add(balloon);

        myImpl = new Impl() {
            public void addListener(JBPopupListener listener) {
                balloon.addListener(listener);
            }

            public void hide() {
                balloon.hide();
            }
        };
    }
}

From source file:com.intellij.xdebugger.impl.ui.DebuggerUIUtil.java

License:Apache License

public static void showXBreakpointEditorBalloon(final Project project, @Nullable final Point point,
        final JComponent component, final boolean showAllOptions, final XBreakpoint breakpoint) {
    final XBreakpointManager breakpointManager = XDebuggerManager.getInstance(project).getBreakpointManager();
    final XLightBreakpointPropertiesPanel<XBreakpointBase<?, ?, ?>> propertiesPanel = new XLightBreakpointPropertiesPanel<XBreakpointBase<?, ?, ?>>(
            project, breakpointManager, (XBreakpointBase) breakpoint, showAllOptions);

    final Ref<Balloon> balloonRef = Ref.create(null);
    final Ref<Boolean> isLoading = Ref.create(Boolean.FALSE);
    final Ref<Boolean> moreOptionsRequested = Ref.create(Boolean.FALSE);

    propertiesPanel.setDelegate(new XLightBreakpointPropertiesPanel.Delegate() {
        @Override/*ww w . ja va2s. c o m*/
        public void showMoreOptions() {
            if (!isLoading.get()) {
                propertiesPanel.saveProperties();
            }
            if (!balloonRef.isNull()) {
                balloonRef.get().hide();
            }
            showXBreakpointEditorBalloon(project, point, component, true, breakpoint);
            moreOptionsRequested.set(true);
        }
    });

    isLoading.set(Boolean.TRUE);
    propertiesPanel.loadProperties();
    isLoading.set(Boolean.FALSE);

    if (moreOptionsRequested.get()) {
        return;
    }

    Runnable showMoreOptions = new Runnable() {
        @Override
        public void run() {
            propertiesPanel.saveProperties();
            propertiesPanel.dispose();
            BreakpointsDialogFactory.getInstance(project).showDialog(breakpoint);
        }
    };

    final JComponent mainPanel = propertiesPanel.getMainPanel();
    final Balloon balloon = showBreakpointEditor(project, mainPanel, point, component, showMoreOptions,
            breakpoint);
    balloonRef.set(balloon);

    final XBreakpointListener<XBreakpoint<?>> breakpointListener = new XBreakpointAdapter<XBreakpoint<?>>() {
        @Override
        public void breakpointRemoved(@NotNull XBreakpoint<?> removedBreakpoint) {
            if (removedBreakpoint.equals(breakpoint)) {
                balloon.hide();
            }
        }
    };

    balloon.addListener(new JBPopupListener.Adapter() {
        @Override
        public void onClosed(LightweightWindowEvent event) {
            propertiesPanel.saveProperties();
            propertiesPanel.dispose();
            breakpointManager.removeBreakpointListener(breakpointListener);
        }
    });

    breakpointManager.addBreakpointListener(breakpointListener);
    ApplicationManager.getApplication().invokeLater(new Runnable() {
        @Override
        public void run() {
            IdeFocusManager.findInstance().requestFocus(mainPanel, true);
        }
    });
}

From source file:org.jetbrains.jet.plugin.codeInsight.ktSignature.EditSignatureBalloon.java

License:Apache License

private Balloon createBalloon() {
    Balloon balloon = JBPopupFactory.getInstance().createDialogBalloonBuilder(panel, "Kotlin signature")
            .setHideOnClickOutside(true).setHideOnKeyOutside(true).setBlockClicksThroughBalloon(true)
            .createBalloon();/*from  w ww  .j av a 2s . c  o  m*/

    balloon.addListener(new JBPopupAdapter() {
        @Override
        public void onClosed(LightweightWindowEvent event) {
            Disposer.dispose(EditSignatureBalloon.this);
        }
    });
    return balloon;
}