diff --git a/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.java b/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.java index 802735c9b425..a1e21168a436 100644 --- a/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.java +++ b/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.java @@ -794,6 +794,10 @@ public class JBTabsImpl extends JComponent return addTab(info, -1); } + public TabLabel getTabLabel(TabInfo info) { + return myInfo2Label.get(info); + } + @Nullable public ActionGroup getPopupGroup() { return myPopupGroup != null ? myPopupGroup.get() : null; diff --git a/platform/platform-impl/src/com/intellij/ide/ui/search/SearchUtil.java b/platform/platform-impl/src/com/intellij/ide/ui/search/SearchUtil.java index ee6ca114ff60..7eb2bff5c42a 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/search/SearchUtil.java +++ b/platform/platform-impl/src/com/intellij/ide/ui/search/SearchUtil.java @@ -26,7 +26,6 @@ import com.intellij.openapi.options.ex.GlassPanel; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.popup.JBPopup; import com.intellij.openapi.ui.popup.JBPopupFactory; -import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.text.StringUtil; import com.intellij.ui.*; import com.intellij.ui.components.JBList; @@ -261,6 +260,16 @@ public class SearchUtil { } } } + else if (rootComponent instanceof TabbedPaneWrapper.TabbedPaneHolder) { + final TabbedPaneWrapper tabbedPaneWrapper = ((TabbedPaneWrapper.TabbedPaneHolder)rootComponent).getTabbedPaneWrapper(); + final String path = SearchableOptionsRegistrar.getInstance().getInnerPath(configurable, option); + if (path != null) { + final int index = getSelection(path, tabbedPaneWrapper); + if (index > -1 && index < tabbedPaneWrapper.getTabCount()) { + glassPanel.addSpotlight((JComponent)tabbedPaneWrapper.getTabComponentAt(index)); + } + } + } final Component[] components = rootComponent.getComponents(); diff --git a/platform/platform-impl/src/com/intellij/ui/JBTabsPaneImpl.java b/platform/platform-impl/src/com/intellij/ui/JBTabsPaneImpl.java index 67a0e3f7cb57..b4a7baa15f5b 100644 --- a/platform/platform-impl/src/com/intellij/ui/JBTabsPaneImpl.java +++ b/platform/platform-impl/src/com/intellij/ui/JBTabsPaneImpl.java @@ -144,6 +144,12 @@ public class JBTabsPaneImpl implements TabbedPane, SwingConstants { myTabs.select(getTabAt(index), false); } + @Override + public Component getTabComponentAt(int index) { + final TabInfo tabInfo = myTabs.getTabAt(index); + return myTabs.getTabLabel(tabInfo); + } + public void removeTabAt(int index) { myTabs.removeTab(getTabAt(index)); } diff --git a/platform/platform-impl/src/com/intellij/ui/TabbedPane.java b/platform/platform-impl/src/com/intellij/ui/TabbedPane.java index 62f3e5ef9744..9ea5ae75e832 100644 --- a/platform/platform-impl/src/com/intellij/ui/TabbedPane.java +++ b/platform/platform-impl/src/com/intellij/ui/TabbedPane.java @@ -53,6 +53,8 @@ public interface TabbedPane { Component getComponentAt(int i); + Component getTabComponentAt(int index); + void setTitleAt(int index, String title); void setToolTipTextAt(int index, String toolTipText); diff --git a/platform/platform-impl/src/com/intellij/ui/TabbedPaneWrapper.java b/platform/platform-impl/src/com/intellij/ui/TabbedPaneWrapper.java index f0a003552f11..93d807d17efa 100644 --- a/platform/platform-impl/src/com/intellij/ui/TabbedPaneWrapper.java +++ b/platform/platform-impl/src/com/intellij/ui/TabbedPaneWrapper.java @@ -228,6 +228,9 @@ public class TabbedPaneWrapper { myTabbedPane.setForegroundAt(index,color); } + public final Component getTabComponentAt(final int index) { + return myTabbedPane.getTabComponentAt(index); + } /** * @see javax.swing.JTabbedPane#setComponentAt(int, java.awt.Component) */ @@ -413,7 +416,7 @@ public class TabbedPaneWrapper { } } - protected static class TabbedPaneHolder extends JPanel { + public static class TabbedPaneHolder extends JPanel { private final TabbedPaneWrapper myWrapper; @@ -448,6 +451,10 @@ public class TabbedPaneWrapper { myWrapper.myTabbedPane.updateUI(); } } + + public TabbedPaneWrapper getTabbedPaneWrapper() { + return myWrapper; + } } public static TabbedPaneWrapper get(JTabbedPane tabs) {