diff --git a/java/jdkAnnotations/javax/swing/annotations.xml b/java/jdkAnnotations/javax/swing/annotations.xml index bdeda007bbcc..c8de36b3b5f1 100644 --- a/java/jdkAnnotations/javax/swing/annotations.xml +++ b/java/jdkAnnotations/javax/swing/annotations.xml @@ -436,4 +436,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/platform/annotations/src/org/intellij/lang/annotations/JdkConstants.java b/platform/annotations/src/org/intellij/lang/annotations/JdkConstants.java index 18c3dad23f8b..c4625eb1c705 100644 --- a/platform/annotations/src/org/intellij/lang/annotations/JdkConstants.java +++ b/platform/annotations/src/org/intellij/lang/annotations/JdkConstants.java @@ -63,4 +63,10 @@ public class JdkConstants { @MagicConstant(intValues = {TitledBorder.DEFAULT_POSITION, TitledBorder.ABOVE_TOP, TitledBorder.TOP, TitledBorder.BELOW_TOP, TitledBorder.ABOVE_BOTTOM, TitledBorder.BOTTOM, TitledBorder.BELOW_BOTTOM}) public @interface TitledBorderTitlePosition{} + + @MagicConstant(intValues = {SwingConstants.TOP, SwingConstants.BOTTOM, SwingConstants.LEFT, SwingConstants.RIGHT}) + public @interface TabPlacement{} + + @MagicConstant(intValues = {JTabbedPane.WRAP_TAB_LAYOUT, JTabbedPane.SCROLL_TAB_LAYOUT}) + public @interface TabLayoutPolicy{} } diff --git a/platform/platform-api/src/com/intellij/ui/components/JBTabbedPane.java b/platform/platform-api/src/com/intellij/ui/components/JBTabbedPane.java index 6bf0688812a0..bfc0c18f5d16 100644 --- a/platform/platform-api/src/com/intellij/ui/components/JBTabbedPane.java +++ b/platform/platform-api/src/com/intellij/ui/components/JBTabbedPane.java @@ -2,6 +2,8 @@ package com.intellij.ui.components; import com.intellij.openapi.util.SystemInfo; import com.intellij.util.ui.UIUtil; +import org.intellij.lang.annotations.JdkConstants; +import org.jetbrains.annotations.NonNls; import javax.swing.*; import javax.swing.border.EmptyBorder; @@ -13,17 +15,17 @@ import java.awt.event.HierarchyListener; * @author evgeny.zakrevsky */ public class JBTabbedPane extends JTabbedPane implements HierarchyListener { - public static final String LABEL_FROM_TABBED_PANE = "JBTabbedPane.labelFromTabbedPane"; + @NonNls public static final String LABEL_FROM_TABBED_PANE = "JBTabbedPane.labelFromTabbedPane"; private int previousSelectedIndex = -1; public JBTabbedPane() { } - public JBTabbedPane(int tabPlacement) { + public JBTabbedPane(@JdkConstants.TabPlacement int tabPlacement) { super(tabPlacement); } - public JBTabbedPane(int tabPlacement, int tabLayoutPolicy) { + public JBTabbedPane(@JdkConstants.TabPlacement int tabPlacement, @JdkConstants.TabLayoutPolicy int tabLayoutPolicy) { super(tabPlacement, tabLayoutPolicy); } @@ -88,4 +90,12 @@ public class JBTabbedPane extends JTabbedPane implements HierarchyListener { UIUtil.setNotOpaqueRecursively(e.getComponent()); repaint(); } + + @Override + public void removeNotify() { + super.removeNotify(); + for (int i=0; i= getTabCount()) { @@ -107,6 +112,7 @@ public class TabbedPaneImpl extends JBTabbedPane implements TabbedPane { setEnabledInModalContext(true); } + @Override public void actionPerformed(final AnActionEvent e) { int index = getSelectedIndex() - 1; if (index < 0) { @@ -132,6 +138,7 @@ public class TabbedPaneImpl extends JBTabbedPane implements TabbedPane { } + @Override public void setUI(final TabbedPaneUI ui){ super.setUI(ui); if(ui instanceof BasicTabbedPaneUI){ @@ -146,6 +153,7 @@ public class TabbedPaneImpl extends JBTabbedPane implements TabbedPane { * the method does nothing. * @param index index of tab to be scrolled. */ + @Override public final void scrollTabToVisible(final int index){ if(myScrollableTabSupport==null|| WRAP_TAB_LAYOUT==getTabLayoutPolicy()){ // tab scrolling isn't supported by UI return; @@ -188,6 +196,7 @@ public class TabbedPaneImpl extends JBTabbedPane implements TabbedPane { } } + @Override public void setSelectedIndex(final int index){ if (index >= getTabCount()) return; @@ -206,6 +215,7 @@ public class TabbedPaneImpl extends JBTabbedPane implements TabbedPane { //http://www.jetbrains.net/jira/browse/IDEADEV-22331 //to let repaint happen since AIOBE is thrown from Mac OSX's UI + @Override protected void fireStateChanged() { // Guaranteed to return a non-null array Object[] listeners = listenerList.getListenerList(); @@ -219,6 +229,7 @@ public class TabbedPaneImpl extends JBTabbedPane implements TabbedPane { if (each != null && each.getClass().getName().indexOf("apple.laf.CUIAquaTabbedPane") >= 0) { SwingUtilities.invokeLater(new Runnable() { + @Override public void run() { revalidate(); repaint(); @@ -234,6 +245,7 @@ public class TabbedPaneImpl extends JBTabbedPane implements TabbedPane { } + @Override public final void removeTabAt (final int index) { super.removeTabAt (index); //This event should be fired necessarily because when swing fires an event @@ -323,6 +335,7 @@ public class TabbedPaneImpl extends JBTabbedPane implements TabbedPane { } } + @Override public boolean isDisposed() { return false; }