summaryrefslogtreecommitdiff
path: root/platform/platform-impl/src/com/intellij/ui
diff options
context:
space:
mode:
Diffstat (limited to 'platform/platform-impl/src/com/intellij/ui')
-rw-r--r--platform/platform-impl/src/com/intellij/ui/AbstractExpandableItemsHandler.java57
-rw-r--r--platform/platform-impl/src/com/intellij/ui/BalloonImpl.java2
-rw-r--r--platform/platform-impl/src/com/intellij/ui/JBTabsPaneImpl.java8
-rw-r--r--platform/platform-impl/src/com/intellij/ui/LibNotifyWrapper.java8
-rw-r--r--platform/platform-impl/src/com/intellij/ui/SpeedSearchBase.java4
-rw-r--r--platform/platform-impl/src/com/intellij/ui/TableSpeedSearch.java23
-rw-r--r--platform/platform-impl/src/com/intellij/ui/content/impl/ContentImpl.java6
-rw-r--r--platform/platform-impl/src/com/intellij/ui/content/impl/ContentManagerImpl.java145
-rw-r--r--platform/platform-impl/src/com/intellij/ui/popup/AbstractPopup.java36
-rw-r--r--platform/platform-impl/src/com/intellij/ui/popup/list/PopupListElementRenderer.java9
10 files changed, 168 insertions, 130 deletions
diff --git a/platform/platform-impl/src/com/intellij/ui/AbstractExpandableItemsHandler.java b/platform/platform-impl/src/com/intellij/ui/AbstractExpandableItemsHandler.java
index d8b204cfd76c..1fc23e5f4055 100644
--- a/platform/platform-impl/src/com/intellij/ui/AbstractExpandableItemsHandler.java
+++ b/platform/platform-impl/src/com/intellij/ui/AbstractExpandableItemsHandler.java
@@ -54,7 +54,7 @@ public abstract class AbstractExpandableItemsHandler<KeyType, ComponentType exte
myTipComponent = new TipComponent();
- myTipComponent.addMouseListener(new MouseAdapter() {
+ MouseAdapter tipMouseAdapter = new MouseAdapter() {
@Override
public void mouseExited(MouseEvent e) {
// don't hide the hint if mouse exited to myComponent
@@ -62,7 +62,60 @@ public abstract class AbstractExpandableItemsHandler<KeyType, ComponentType exte
hideHint();
}
}
- });
+
+ @Override
+ public void mouseWheelMoved(MouseWheelEvent e) {
+ Point p = e.getLocationOnScreen();
+ SwingUtilities.convertPointFromScreen(p, myComponent);
+ myComponent.dispatchEvent(new MouseWheelEvent(myComponent,
+ e.getID(),
+ e.getWhen(),
+ e.getModifiers(),
+ p.x, p.y,
+ e.getClickCount(),
+ e.isPopupTrigger(),
+ e.getScrollType(),
+ e.getScrollAmount(),
+ e.getWheelRotation()));
+ }
+
+ @Override
+ public void mouseClicked(MouseEvent e) {
+ Point p = e.getLocationOnScreen();
+ SwingUtilities.convertPointFromScreen(p, myComponent);
+ myComponent.dispatchEvent(new MouseEvent(myComponent,
+ e.getID(),
+ e.getWhen(),
+ e.getModifiers(),
+ p.x, p.y,
+ e.getClickCount(),
+ e.isPopupTrigger(),
+ e.getButton()));
+ }
+
+ @Override
+ public void mousePressed(MouseEvent e) {
+ mouseClicked(e);
+ }
+
+ @Override
+ public void mouseReleased(MouseEvent e) {
+ mouseClicked(e);
+ }
+
+ @Override
+ public void mouseMoved(MouseEvent e) {
+ mouseClicked(e);
+ }
+
+ @Override
+ public void mouseDragged(MouseEvent e) {
+ mouseClicked(e);
+ }
+ };
+ myTipComponent.addMouseListener(tipMouseAdapter);
+ myTipComponent.addMouseWheelListener(tipMouseAdapter);
+ myTipComponent.addMouseMotionListener(tipMouseAdapter);
myComponent.addMouseListener(
new MouseListener() {
diff --git a/platform/platform-impl/src/com/intellij/ui/BalloonImpl.java b/platform/platform-impl/src/com/intellij/ui/BalloonImpl.java
index 513d5cedb2ab..d41d0bb5ef18 100644
--- a/platform/platform-impl/src/com/intellij/ui/BalloonImpl.java
+++ b/platform/platform-impl/src/com/intellij/ui/BalloonImpl.java
@@ -331,7 +331,7 @@ public class BalloonImpl implements Balloon, IdeTooltip.Ui {
Integer result = JLayeredPane.DEFAULT_LAYER;
switch (myLayer) {
case normal:
- result = JLayeredPane.DEFAULT_LAYER;
+ result = JLayeredPane.POPUP_LAYER;
break;
case top:
result = JLayeredPane.DRAG_LAYER;
diff --git a/platform/platform-impl/src/com/intellij/ui/JBTabsPaneImpl.java b/platform/platform-impl/src/com/intellij/ui/JBTabsPaneImpl.java
index d5fc8dcca1ba..fe041c5ea02b 100644
--- a/platform/platform-impl/src/com/intellij/ui/JBTabsPaneImpl.java
+++ b/platform/platform-impl/src/com/intellij/ui/JBTabsPaneImpl.java
@@ -21,6 +21,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.wm.IdeFocusManager;
import com.intellij.ui.tabs.*;
import com.intellij.ui.tabs.impl.JBEditorTabs;
+import com.intellij.ui.tabs.impl.JBTabsImpl;
import com.intellij.ui.tabs.impl.TabLabel;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NotNull;
@@ -34,8 +35,7 @@ import java.awt.event.MouseListener;
import java.util.concurrent.CopyOnWriteArraySet;
public class JBTabsPaneImpl implements TabbedPane, SwingConstants {
-
- private final JBTabs myTabs;
+ private final JBTabsImpl myTabs;
private final CopyOnWriteArraySet<ChangeListener> myListeners = new CopyOnWriteArraySet<ChangeListener>();
public JBTabsPaneImpl(@Nullable Project project, int tabPlacement, @NotNull Disposable parent) {
@@ -64,6 +64,9 @@ public class JBTabsPaneImpl implements TabbedPane, SwingConstants {
maxOffset++;
g2d.setPaint(UIUtil.getPanelBackground());
+ if (getFirstTabOffset() > 0) {
+ g2d.fillRect(clip.x, clip.y, clip.x + getFirstTabOffset() - 1, clip.y + maxLength - TabsUtil.ACTIVE_TAB_UNDERLINE_HEIGHT);
+ }
g2d.fillRect(clip.x + maxOffset, clip.y, clip.width - maxOffset, clip.y + maxLength - TabsUtil.ACTIVE_TAB_UNDERLINE_HEIGHT);
g2d.setPaint(new JBColor(Gray._181, UIUtil.getPanelBackground()));
g2d.drawLine(clip.x + maxOffset, clip.y + maxLength - TabsUtil.ACTIVE_TAB_UNDERLINE_HEIGHT, clip.x + clip.width, clip.y + maxLength - TabsUtil.ACTIVE_TAB_UNDERLINE_HEIGHT);
@@ -77,6 +80,7 @@ public class JBTabsPaneImpl implements TabbedPane, SwingConstants {
super.paintSelectionAndBorder(g2d);
}
};
+ myTabs.setFirstTabOffset(10);
myTabs.addListener(new TabsListener.Adapter() {
@Override
diff --git a/platform/platform-impl/src/com/intellij/ui/LibNotifyWrapper.java b/platform/platform-impl/src/com/intellij/ui/LibNotifyWrapper.java
index aac2e77982ba..e8c6f49f8088 100644
--- a/platform/platform-impl/src/com/intellij/ui/LibNotifyWrapper.java
+++ b/platform/platform-impl/src/com/intellij/ui/LibNotifyWrapper.java
@@ -49,6 +49,7 @@ class LibNotifyWrapper implements SystemNotificationsImpl.Notifier {
}
private final LibNotify myLibNotify;
+ private final String myIcon;
private LibNotifyWrapper() {
myLibNotify = (LibNotify)Native.loadLibrary("libnotify.so.4", LibNotify.class);
@@ -58,6 +59,9 @@ class LibNotifyWrapper implements SystemNotificationsImpl.Notifier {
throw new IllegalStateException("notify_init failed");
}
+ String icon = AppUIUtil.findIcon(PathManager.getBinPath());
+ myIcon = icon != null ? icon : "dialog-information";
+
MessageBusConnection connection = ApplicationManager.getApplication().getMessageBus().connect();
connection.subscribe(AppLifecycleListener.TOPIC, new AppLifecycleListener.Adapter() {
@Override
@@ -69,9 +73,7 @@ class LibNotifyWrapper implements SystemNotificationsImpl.Notifier {
@Override
public void notify(@NotNull Set<String> allNames, @NotNull String name, @NotNull String title, @NotNull String description) {
- String icon = AppUIUtil.findIcon(PathManager.getBinPath());
- if (icon == null) icon = "dialog-information";
- Pointer notification = myLibNotify.notify_notification_new(title, description, icon);
+ Pointer notification = myLibNotify.notify_notification_new(title, description, myIcon);
myLibNotify.notify_notification_show(notification, null);
}
}
diff --git a/platform/platform-impl/src/com/intellij/ui/SpeedSearchBase.java b/platform/platform-impl/src/com/intellij/ui/SpeedSearchBase.java
index c738995059dc..cbcde2d36418 100644
--- a/platform/platform-impl/src/com/intellij/ui/SpeedSearchBase.java
+++ b/platform/platform-impl/src/com/intellij/ui/SpeedSearchBase.java
@@ -288,6 +288,10 @@ public abstract class SpeedSearchBase<Comp extends JComponent> extends SpeedSear
return null;
}
+ public void showPopup() {
+ manageSearchPopup(new SearchPopup(""));
+ }
+
public void hidePopup() {
manageSearchPopup(null);
}
diff --git a/platform/platform-impl/src/com/intellij/ui/TableSpeedSearch.java b/platform/platform-impl/src/com/intellij/ui/TableSpeedSearch.java
index b596204e6ad2..eeeb90dc7ae7 100644
--- a/platform/platform-impl/src/com/intellij/ui/TableSpeedSearch.java
+++ b/platform/platform-impl/src/com/intellij/ui/TableSpeedSearch.java
@@ -20,7 +20,6 @@ import com.intellij.util.PairFunction;
import com.intellij.util.containers.Convertor;
import javax.swing.*;
-import javax.swing.table.TableModel;
import java.util.ListIterator;
public class TableSpeedSearch extends SpeedSearchBase<JTable> {
@@ -55,9 +54,8 @@ public class TableSpeedSearch extends SpeedSearchBase<JTable> {
@Override
protected boolean isSpeedSearchEnabled() {
- JTable table = getComponent();
- boolean tableIsNotEmpty = table.getRowCount() != 0 && table.getColumnCount() != 0;
- return tableIsNotEmpty && !table.isEditing() && super.isSpeedSearchEnabled();
+ boolean tableIsNotEmpty = myComponent.getRowCount() != 0 && myComponent.getColumnCount() != 0;
+ return tableIsNotEmpty && !myComponent.isEditing() && super.isSpeedSearchEnabled();
}
@Override
@@ -67,16 +65,14 @@ public class TableSpeedSearch extends SpeedSearchBase<JTable> {
@Override
protected int getElementCount() {
- final TableModel tableModel = myComponent.getModel();
- return tableModel.getRowCount() * tableModel.getColumnCount();
+ return myComponent.getRowCount() * myComponent.getColumnCount();
}
@Override
protected void selectElement(Object element, String selectedText) {
final int index = ((Integer)element).intValue();
- final TableModel model = myComponent.getModel();
- final int row = index / model.getColumnCount();
- final int col = index % model.getColumnCount();
+ final int row = index / myComponent.getColumnCount();
+ final int col = index % myComponent.getColumnCount();
myComponent.getSelectionModel().setSelectionInterval(row, row);
myComponent.getColumnModel().getSelectionModel().setSelectionInterval(col, col);
TableUtil.scrollSelectionToVisible(myComponent);
@@ -87,7 +83,7 @@ public class TableSpeedSearch extends SpeedSearchBase<JTable> {
final int row = myComponent.getSelectedRow();
final int col = myComponent.getSelectedColumn();
// selected row is not enough as we want to select specific cell in a large multi-column table
- return row > -1 && col > -1 ? row * myComponent.getModel().getColumnCount() + col : -1;
+ return row > -1 && col > -1 ? row * myComponent.getColumnCount() + col : -1;
}
@Override
@@ -98,10 +94,9 @@ public class TableSpeedSearch extends SpeedSearchBase<JTable> {
@Override
protected String getElementText(Object element) {
final int index = ((Integer)element).intValue();
- final TableModel model = myComponent.getModel();
- int row = myComponent.convertRowIndexToModel(index / model.getColumnCount());
- int col = myComponent.convertColumnIndexToModel(index % model.getColumnCount());
- Object value = model.getValueAt(row, col);
+ int row = index / myComponent.getColumnCount();
+ int col = index % myComponent.getColumnCount();
+ Object value = myComponent.getValueAt(row, col);
return myToStringConvertor.fun(value, new Cell(row, col));
}
diff --git a/platform/platform-impl/src/com/intellij/ui/content/impl/ContentImpl.java b/platform/platform-impl/src/com/intellij/ui/content/impl/ContentImpl.java
index 82dd6ff085fd..595a93db592f 100644
--- a/platform/platform-impl/src/com/intellij/ui/content/impl/ContentImpl.java
+++ b/platform/platform-impl/src/com/intellij/ui/content/impl/ContentImpl.java
@@ -1,6 +1,5 @@
-
/*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2014 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.
@@ -45,7 +44,7 @@ public class ContentImpl extends UserDataHolderBase implements Content {
private JComponent myComponent;
private Icon myIcon;
private final PropertyChangeSupport myChangeSupport = new PropertyChangeSupport(this);
- private ContentManager myManager = null;
+ private ContentManager myManager;
private boolean myIsLocked = false;
private boolean myPinnable = true;
private Icon myLayeredIcon = new LayeredIcon(2);
@@ -294,6 +293,7 @@ public class ContentImpl extends UserDataHolderBase implements Content {
return myPlace;
}
+ @Override
@NonNls
public String toString() {
StringBuilder sb = new StringBuilder("Content name=").append(myDisplayName);
diff --git a/platform/platform-impl/src/com/intellij/ui/content/impl/ContentManagerImpl.java b/platform/platform-impl/src/com/intellij/ui/content/impl/ContentManagerImpl.java
index b6e739692ede..d0b110f083bf 100644
--- a/platform/platform-impl/src/com/intellij/ui/content/impl/ContentManagerImpl.java
+++ b/platform/platform-impl/src/com/intellij/ui/content/impl/ContentManagerImpl.java
@@ -15,6 +15,7 @@
*/
package com.intellij.ui.content.impl;
+import com.intellij.ide.DataManager;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.DataProvider;
@@ -32,13 +33,15 @@ import com.intellij.ui.components.panels.Wrapper;
import com.intellij.ui.content.*;
import com.intellij.ui.switcher.SwitchProvider;
import com.intellij.ui.switcher.SwitchTarget;
+import com.intellij.util.containers.ContainerUtil;
+import com.intellij.util.SmartList;
+
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
-import javax.swing.event.EventListenerList;
import java.awt.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
@@ -55,21 +58,21 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene
private static final Logger LOG = Logger.getInstance("#com.intellij.ui.content.impl.ContentManagerImpl");
private ContentUI myUI;
- private final ArrayList<Content> myContents;
- private EventListenerList myListeners;
- private List<Content> mySelection = new ArrayList<Content>();
+ private final List<Content> myContents = new ArrayList<Content>();
+ private final List<ContentManagerListener> myListeners = ContainerUtil.createLockFreeCopyOnWriteList();
+ private final List<Content> mySelection = new ArrayList<Content>();
private final boolean myCanCloseContents;
- private MyContentComponent myContentComponent;
- private MyFocusProxy myFocusProxy;
- private JPanel myComponent;
-
+ private Wrapper.FocusHolder myFocusProxy;
+ private MyNonOpaquePanel myComponent;
private final Set<Content> myContentWithChangedComponent = new HashSet<Content>();
private boolean myDisposed;
private final Project myProject;
+ private final List<DataProvider> dataProviders = new SmartList<DataProvider>();
+
/**
* WARNING: as this class adds listener to the ProjectManager which is removed on projectClosed event, all instances of this class
* must be created on already OPENED projects, otherwise there will be memory leak!
@@ -77,8 +80,6 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene
public ContentManagerImpl(@NotNull ContentUI contentUI, boolean canCloseContents, @NotNull Project project) {
myProject = project;
myCanCloseContents = canCloseContents;
- myContents = new ArrayList<Content>();
- myListeners = new EventListenerList();
myUI = contentUI;
myUI.setManager(this);
@@ -95,15 +96,18 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene
@Override
public JComponent getComponent() {
if (myComponent == null) {
- myComponent = new NonOpaquePanel(new BorderLayout());
+ myComponent = new MyNonOpaquePanel();
+
+ myFocusProxy = new Wrapper.FocusHolder();
+ myFocusProxy.setOpaque(false);
+ myFocusProxy.setPreferredSize(new Dimension(0, 0));
- myFocusProxy = new MyFocusProxy();
- myContentComponent = new MyContentComponent();
- myContentComponent.setContent(myUI.getComponent());
- myContentComponent.setFocusCycleRoot(true);
+ MyContentComponent contentComponent = new MyContentComponent();
+ contentComponent.setContent(myUI.getComponent());
+ contentComponent.setFocusCycleRoot(true);
myComponent.add(myFocusProxy, BorderLayout.NORTH);
- myComponent.add(myContentComponent, BorderLayout.CENTER);
+ myComponent.add(contentComponent, BorderLayout.CENTER);
}
return myComponent;
}
@@ -117,58 +121,51 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene
return busyObject != null ? busyObject.getReady(requestor) : new ActionCallback.Done();
}
- private class MyContentComponent extends NonOpaquePanel implements DataProvider, SwitchProvider {
-
- private final List<DataProvider> myProviders = new ArrayList<DataProvider>();
-
- public void addProvider(final DataProvider provider) {
- myProviders.add(provider);
+ private class MyNonOpaquePanel extends NonOpaquePanel implements DataProvider {
+ public MyNonOpaquePanel() {
+ super(new BorderLayout());
}
@Override
@Nullable
- public Object getData(@NonNls final String dataId) {
- if (PlatformDataKeys.CONTENT_MANAGER.is(dataId)) return ContentManagerImpl.this;
- if (PlatformDataKeys.NONEMPTY_CONTENT_MANAGER.is(dataId) && getContentCount() > 1) {
+ public Object getData(@NonNls String dataId) {
+ if (PlatformDataKeys.CONTENT_MANAGER.is(dataId) || PlatformDataKeys.NONEMPTY_CONTENT_MANAGER.is(dataId) && getContentCount() > 1) {
return ContentManagerImpl.this;
}
- for (DataProvider each : myProviders) {
- final Object data = each.getData(dataId);
- if (data != null) return data;
+ for (DataProvider dataProvider : dataProviders) {
+ Object data = dataProvider.getData(dataId);
+ if (data != null) {
+ return data;
+ }
}
if (myUI instanceof DataProvider) {
return ((DataProvider)myUI).getData(dataId);
}
- return null;
+ DataProvider provider = DataManager.getDataProvider(this);
+ return provider == null ? null : provider.getData(dataId);
}
+ }
+ private class MyContentComponent extends NonOpaquePanel implements SwitchProvider {
@Override
public List<SwitchTarget> getTargets(boolean onlyVisible, boolean originalProvider) {
if (myUI instanceof SwitchProvider) {
return ((SwitchProvider)myUI).getTargets(onlyVisible, false);
}
- return new ArrayList<SwitchTarget>();
+ return new SmartList<SwitchTarget>();
}
@Override
public SwitchTarget getCurrentTarget() {
- if (myUI instanceof SwitchProvider) {
- return ((SwitchProvider)myUI).getCurrentTarget();
- }
-
- return null;
+ return myUI instanceof SwitchProvider ? ((SwitchProvider)myUI).getCurrentTarget() : null;
}
@Override
public JComponent getComponent() {
- if (myUI instanceof SwitchProvider) {
- return myUI.getComponent();
- }
-
- return this;
+ return myUI instanceof SwitchProvider ? myUI.getComponent() : this;
}
@Override
@@ -177,35 +174,23 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene
}
}
- private class MyFocusProxy extends Wrapper.FocusHolder implements DataProvider {
- private MyFocusProxy() {
- setOpaque(false);
- setPreferredSize(new Dimension(0, 0));
- }
-
- @Override
- @Nullable
- public Object getData(@NonNls final String dataId) {
- return myContentComponent.getData(dataId);
- }
- }
-
@Override
public void addContent(@NotNull Content content, final int order) {
- addContent(content, null, order);
+ doAddContent(content, order);
}
@Override
public void addContent(@NotNull Content content) {
- addContent(content, null, -1);
+ doAddContent(content, -1);
}
@Override
public void addContent(@NotNull final Content content, final Object constraints) {
- addContent(content, constraints, -1);
+ doAddContent(content, -1);
}
- private void addContent(@NotNull final Content content, final Object constraints, final int index) {
+ private void doAddContent(@NotNull final Content content, final int index) {
+ ApplicationManager.getApplication().assertIsDispatchThread();
if (myContents.contains(content)) return;
((ContentImpl)content).setManager(this);
@@ -227,24 +212,26 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene
@Override
public boolean removeContent(@NotNull Content content, final boolean dispose) {
- return removeContent(content, true, dispose);
+ return removeContent(content, true, dispose).isDone();
}
@NotNull
@Override
public ActionCallback removeContent(@NotNull Content content, boolean dispose, final boolean trackFocus, final boolean forcedFocus) {
final ActionCallback result = new ActionCallback();
- _removeContent(content, true, dispose).doWhenDone(new Runnable() {
+ removeContent(content, true, dispose).doWhenDone(new Runnable() {
@Override
public void run() {
if (trackFocus) {
Content current = getSelectedContent();
if (current != null) {
setSelectedContent(current, true, true, !forcedFocus);
- } else {
+ }
+ else {
result.setDone();
}
- } else {
+ }
+ else {
result.setDone();
}
}
@@ -253,11 +240,9 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene
return result;
}
- private boolean removeContent(final Content content, boolean trackSelection, boolean dispose) {
- return _removeContent(content, trackSelection, dispose).isDone();
- }
-
- private ActionCallback _removeContent(Content content, boolean trackSelection, boolean dispose) {
+ @NotNull
+ private ActionCallback removeContent(@NotNull Content content, boolean trackSelection, boolean dispose) {
+ ApplicationManager.getApplication().assertIsDispatchThread();
int indexToBeRemoved = getIndexOfContent(content);
if (indexToBeRemoved == -1) return new ActionCallback.Rejected();
@@ -604,43 +589,39 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene
@Override
public void addContentManagerListener(@NotNull ContentManagerListener l) {
- myListeners.add(ContentManagerListener.class, l);
+ myListeners.add(0,l);
}
@Override
public void removeContentManagerListener(@NotNull ContentManagerListener l) {
- myListeners.remove(ContentManagerListener.class, l);
+ myListeners.remove(l);
}
private void fireContentAdded(Content content, int newIndex, ContentManagerEvent.ContentOperation operation) {
ContentManagerEvent event = new ContentManagerEvent(this, content, newIndex, operation);
- ContentManagerListener[] listeners = myListeners.getListeners(ContentManagerListener.class);
- for (ContentManagerListener listener : listeners) {
+ for (ContentManagerListener listener : myListeners) {
listener.contentAdded(event);
}
}
private void fireContentRemoved(Content content, int oldIndex, ContentManagerEvent.ContentOperation operation) {
ContentManagerEvent event = new ContentManagerEvent(this, content, oldIndex, operation);
- ContentManagerListener[] listeners = myListeners.getListeners(ContentManagerListener.class);
- for (ContentManagerListener listener : listeners) {
+ for (ContentManagerListener listener : myListeners) {
listener.contentRemoved(event);
}
}
private void fireSelectionChanged(Content content, ContentManagerEvent.ContentOperation operation) {
ContentManagerEvent event = new ContentManagerEvent(this, content, myContents.indexOf(content), operation);
- ContentManagerListener[] listeners = myListeners.getListeners(ContentManagerListener.class);
- for (ContentManagerListener listener : listeners) {
+ for (ContentManagerListener listener : myListeners) {
listener.selectionChanged(event);
}
}
private boolean fireContentRemoveQuery(Content content, int oldIndex, ContentManagerEvent.ContentOperation operation) {
ContentManagerEvent event = new ContentManagerEvent(this, content, oldIndex, operation);
- ContentManagerListener[] listeners = myListeners.getListeners(ContentManagerListener.class);
- for (ContentManagerListener listener : listeners) {
+ for (ContentManagerListener listener : myListeners) {
listener.contentRemoveQuery(event);
if (event.isConsumed()) {
return false;
@@ -692,13 +673,13 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene
@Override
public void addDataProvider(@NotNull final DataProvider provider) {
- myContentComponent.addProvider(provider);
+ dataProviders.add(provider);
}
@Override
- public void propertyChange(final PropertyChangeEvent evt) {
- if (Content.PROP_COMPONENT.equals(evt.getPropertyName())) {
- myContentWithChangedComponent.add((Content)evt.getSource());
+ public void propertyChange(@NotNull PropertyChangeEvent event) {
+ if (Content.PROP_COMPONENT.equals(event.getPropertyName())) {
+ myContentWithChangedComponent.add((Content)event.getSource());
}
}
@@ -718,10 +699,10 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene
myDisposed = true;
myContents.clear();
- mySelection = null;
+ mySelection.clear();
myContentWithChangedComponent.clear();
myUI = null;
- myListeners = null;
+ myListeners.clear();
}
@Override
diff --git a/platform/platform-impl/src/com/intellij/ui/popup/AbstractPopup.java b/platform/platform-impl/src/com/intellij/ui/popup/AbstractPopup.java
index e50403abef45..a967245c9224 100644
--- a/platform/platform-impl/src/com/intellij/ui/popup/AbstractPopup.java
+++ b/platform/platform-impl/src/com/intellij/ui/popup/AbstractPopup.java
@@ -487,22 +487,24 @@ public class AbstractPopup implements JBPopup {
if (dominantArea != null) {
final Component focusedComponent = getWndManager().getFocusedComponent(myProject);
- Window window = SwingUtilities.windowForComponent(focusedComponent);
- JLayeredPane layeredPane;
- if (window instanceof JFrame) {
- layeredPane = ((JFrame)window).getLayeredPane();
- }
- else if (window instanceof JDialog) {
- layeredPane = ((JDialog)window).getLayeredPane();
- }
- else if (window instanceof JWindow) {
- layeredPane = ((JWindow)window).getLayeredPane();
- }
- else {
- throw new IllegalStateException("cannot find parent window: project=" + myProject + "; window=" + window);
- }
+ if (focusedComponent != null) {
+ Window window = SwingUtilities.windowForComponent(focusedComponent);
+ JLayeredPane layeredPane;
+ if (window instanceof JFrame) {
+ layeredPane = ((JFrame)window).getLayeredPane();
+ }
+ else if (window instanceof JDialog) {
+ layeredPane = ((JDialog)window).getLayeredPane();
+ }
+ else if (window instanceof JWindow) {
+ layeredPane = ((JWindow)window).getLayeredPane();
+ }
+ else {
+ throw new IllegalStateException("cannot find parent window: project=" + myProject + "; window=" + window);
+ }
- return relativePointWithDominantRectangle(layeredPane, dominantArea);
+ return relativePointWithDominantRectangle(layeredPane, dominantArea);
+ }
}
return JBPopupFactory.getInstance().guessBestPopupLocation(dataContext);
@@ -777,7 +779,9 @@ public class AbstractPopup implements JBPopup {
Rectangle original = new Rectangle(targetBounds);
if (myLocateWithinScreen) {
- ScreenUtil.moveRectangleToFitTheScreen(targetBounds);
+ if (myMovable) {
+ ScreenUtil.moveRectangleToFitTheScreen(targetBounds);
+ }
}
if (myMouseOutCanceller != null) {
diff --git a/platform/platform-impl/src/com/intellij/ui/popup/list/PopupListElementRenderer.java b/platform/platform-impl/src/com/intellij/ui/popup/list/PopupListElementRenderer.java
index 5d657487f6a5..1428ffc9b29d 100644
--- a/platform/platform-impl/src/com/intellij/ui/popup/list/PopupListElementRenderer.java
+++ b/platform/platform-impl/src/com/intellij/ui/popup/list/PopupListElementRenderer.java
@@ -16,7 +16,7 @@
package com.intellij.ui.popup.list;
import com.intellij.icons.AllIcons;
-import com.intellij.openapi.ui.popup.ListItemDescriptor;
+import com.intellij.openapi.ui.popup.ListItemDescriptorAdapter;
import com.intellij.openapi.ui.popup.ListPopupStep;
import com.intellij.ui.ColorUtil;
import com.intellij.util.ui.UIUtil;
@@ -27,18 +27,13 @@ public class PopupListElementRenderer extends GroupedItemsListRenderer {
private final ListPopupImpl myPopup;
public PopupListElementRenderer(final ListPopupImpl aPopup) {
- super(new ListItemDescriptor() {
+ super(new ListItemDescriptorAdapter() {
@Override
public String getTextFor(Object value) {
return aPopup.getListStep().getTextFor(value);
}
@Override
- public String getTooltipFor(Object value) {
- return null;
- }
-
- @Override
public Icon getIconFor(Object value) {
return aPopup.getListStep().getIconFor(value);
}