diff --git a/core.windows/src/org/netbeans/core/windows/view/dnd/DragAndDropFeedbackVisualizer.java b/core.windows/src/org/netbeans/core/windows/view/dnd/DragAndDropFeedbackVisualizer.java --- a/core.windows/src/org/netbeans/core/windows/view/dnd/DragAndDropFeedbackVisualizer.java +++ b/core.windows/src/org/netbeans/core/windows/view/dnd/DragAndDropFeedbackVisualizer.java @@ -54,7 +54,7 @@ import javax.swing.SwingUtilities; import org.netbeans.core.windows.nativeaccess.NativeWindowSystem; import org.netbeans.core.windows.options.WinSysPrefs; -import org.netbeans.core.windows.view.ui.Tabbed; +import org.netbeans.swing.tabcontrol.customtabs.Tabbed; /** * diff --git a/core.windows/src/org/netbeans/core/windows/view/dnd/DragWindow.java b/core.windows/src/org/netbeans/core/windows/view/dnd/DragWindow.java --- a/core.windows/src/org/netbeans/core/windows/view/dnd/DragWindow.java +++ b/core.windows/src/org/netbeans/core/windows/view/dnd/DragWindow.java @@ -59,7 +59,7 @@ import javax.swing.SwingUtilities; import javax.swing.Timer; import org.netbeans.core.windows.options.WinSysPrefs; -import org.netbeans.core.windows.view.ui.Tabbed; +import org.netbeans.swing.tabcontrol.customtabs.Tabbed; /** * diff --git a/core.windows/src/org/netbeans/core/windows/view/dnd/TopComponentDragSupport.java b/core.windows/src/org/netbeans/core/windows/view/dnd/TopComponentDragSupport.java --- a/core.windows/src/org/netbeans/core/windows/view/dnd/TopComponentDragSupport.java +++ b/core.windows/src/org/netbeans/core/windows/view/dnd/TopComponentDragSupport.java @@ -44,6 +44,7 @@ +import org.netbeans.swing.tabcontrol.customtabs.Tabbed; import java.awt.AWTEvent; import java.awt.Color; import java.awt.Component; diff --git a/core.windows/src/org/netbeans/core/windows/view/ui/AbstractModeContainer.java b/core.windows/src/org/netbeans/core/windows/view/ui/AbstractModeContainer.java --- a/core.windows/src/org/netbeans/core/windows/view/ui/AbstractModeContainer.java +++ b/core.windows/src/org/netbeans/core/windows/view/ui/AbstractModeContainer.java @@ -43,6 +43,7 @@ package org.netbeans.core.windows.view.ui; +import org.netbeans.swing.tabcontrol.customtabs.Tabbed; import java.lang.reflect.Field; import org.netbeans.core.windows.Constants; import org.netbeans.core.windows.ModeImpl; diff --git a/core.windows/src/org/netbeans/core/windows/view/ui/DefaultSeparateContainer.java b/core.windows/src/org/netbeans/core/windows/view/ui/DefaultSeparateContainer.java --- a/core.windows/src/org/netbeans/core/windows/view/ui/DefaultSeparateContainer.java +++ b/core.windows/src/org/netbeans/core/windows/view/ui/DefaultSeparateContainer.java @@ -43,6 +43,7 @@ package org.netbeans.core.windows.view.ui; +import org.netbeans.swing.tabcontrol.customtabs.Tabbed; import java.text.MessageFormat; import javax.swing.plaf.basic.BasicHTML; import org.netbeans.core.windows.Constants; @@ -53,7 +54,6 @@ import org.netbeans.core.windows.view.dnd.TopComponentDroppable; import org.netbeans.core.windows.view.dnd.WindowDnDManager; import org.netbeans.core.windows.view.dnd.ZOrderManager; -import org.netbeans.core.windows.view.ui.tabcontrol.TabbedAdapter; import org.openide.util.NbBundle; import org.openide.windows.TopComponent; @@ -64,6 +64,9 @@ import java.util.logging.Level; import java.util.logging.Logger; import org.netbeans.core.windows.options.WinSysPrefs; +import org.netbeans.core.windows.view.ui.tabcontrol.TabbedAdapter; +import org.netbeans.swing.tabcontrol.customtabs.TabbedComponentFactory; +import org.openide.util.Lookup; import org.openide.windows.WindowManager; @@ -110,14 +113,9 @@ } protected Tabbed createTabbed() { - Tabbed tabbed; - if(getKind() == Constants.MODE_KIND_EDITOR) { - tabbed = new TabbedAdapter(Constants.MODE_KIND_EDITOR); - } else { - tabbed = new TabbedAdapter(Constants.MODE_KIND_VIEW); + return Lookup.getDefault().lookup(TabbedComponentFactory.class). + getTabbedComponent(getKind(), new TabbedAdapter.WinsysInfo(getKind())); } - return tabbed; - } protected void updateTitle (String title) { getModeUIBase().updateTitle(title); diff --git a/core.windows/src/org/netbeans/core/windows/view/ui/DefaultSplitContainer.java b/core.windows/src/org/netbeans/core/windows/view/ui/DefaultSplitContainer.java --- a/core.windows/src/org/netbeans/core/windows/view/ui/DefaultSplitContainer.java +++ b/core.windows/src/org/netbeans/core/windows/view/ui/DefaultSplitContainer.java @@ -43,17 +43,20 @@ package org.netbeans.core.windows.view.ui; +import org.netbeans.swing.tabcontrol.customtabs.Tabbed; import org.netbeans.core.windows.Constants; import org.netbeans.core.windows.WindowManagerImpl; import org.netbeans.core.windows.view.ModeView; import org.netbeans.core.windows.view.ViewElement; import org.netbeans.core.windows.view.dnd.TopComponentDroppable; import org.netbeans.core.windows.view.dnd.WindowDnDManager; -import org.netbeans.core.windows.view.ui.tabcontrol.TabbedAdapter; import org.openide.windows.TopComponent; import javax.swing.*; import java.awt.*; +import org.netbeans.core.windows.view.ui.tabcontrol.TabbedAdapter; +import org.netbeans.swing.tabcontrol.customtabs.TabbedComponentFactory; +import org.openide.util.Lookup; /** @@ -91,14 +94,9 @@ } protected Tabbed createTabbed() { - Tabbed tabbed; - if(getKind() == Constants.MODE_KIND_EDITOR) { - tabbed = new TabbedAdapter(Constants.MODE_KIND_EDITOR); - } else { - tabbed = new TabbedAdapter(Constants.MODE_KIND_VIEW); + return Lookup.getDefault().lookup(TabbedComponentFactory.class). + getTabbedComponent(getKind(), new TabbedAdapter.WinsysInfo(getKind())); } - return tabbed; - } protected void updateTitle(String title) { // no op diff --git a/core.windows/src/org/netbeans/core/windows/view/ui/Tabbed.java b/core.windows/src/org/netbeans/core/windows/view/ui/Tabbed.java deleted file mode 100644 --- a/core.windows/src/org/netbeans/core/windows/view/ui/Tabbed.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. - * - * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved. - * - * The contents of this file are subject to the terms of either the GNU - * General Public License Version 2 only ("GPL") or the Common - * Development and Distribution License("CDDL") (collectively, the - * "License"). You may not use this file except in compliance with the - * License. You can obtain a copy of the License at - * http://www.netbeans.org/cddl-gplv2.html - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the - * specific language governing permissions and limitations under the - * License. When distributing the software, include this License Header - * Notice in each file and include the License file at - * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this - * particular file as subject to the "Classpath" exception as provided - * by Sun in the GPL Version 2 section of the License file that - * accompanied this code. If applicable, add the following below the - * License Header, with the fields enclosed by brackets [] replaced by - * your own identifying information: - * "Portions Copyrighted [year] [name of copyright owner]" - * - * Contributor(s): - * - * The Original Software is NetBeans. The Initial Developer of the Original - * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun - * Microsystems, Inc. All Rights Reserved. - * - * If you wish your version of this file to be governed by only the CDDL - * or only the GPL Version 2, indicate your decision by adding - * "[Contributor] elects to include this software in this distribution - * under the [CDDL or GPL Version 2] license." If you do not indicate a - * single choice of license, a recipient has the option to distribute - * your version of this file under either the CDDL, the GPL Version 2 or - * to extend the choice of license to its licensees as provided above. - * However, if you add GPL Version 2 code and therefore, elected the GPL - * Version 2 license, then the option applies only if the new code is - * made subject to such option by the copyright holder. - */ - - -package org.netbeans.core.windows.view.ui; - - -import org.openide.windows.TopComponent; - -import javax.swing.*; -import javax.swing.event.ChangeListener; -import java.awt.*; -import java.awt.event.ActionListener; - - -/** - * Interface describing component which is used inside SimpleContainer. - * There will be at two implementations one for view and second one for editor type. - * - * @author Peter Zavadsky - */ -public interface Tabbed { - - public void requestAttention(TopComponent tc); - - public void cancelRequestAttention(TopComponent tc); - - public void addTopComponent(String name, Icon icon, TopComponent tc, String toolTip); - - public void insertComponent(String name, Icon icon, Component comp, String toolTip, int position); - - public void setTopComponents(TopComponent[] tcs, TopComponent selected); - - public int getTabCount(); - - public TopComponent[] getTopComponents(); - - public TopComponent getTopComponentAt(int index); - - public int indexOf(Component tc); - - public void removeComponent(Component comp); - - public void setTitleAt(int index, String title); - - public void setIconAt(int index, Icon icon); - - public void setToolTipTextAt(int index, String toolTip); - - public void setSelectedComponent(Component comp); - - public TopComponent getSelectedTopComponent(); - - public void addChangeListener(ChangeListener listener); - - public void removeChangeListener(ChangeListener listener); - - public void addActionListener (ActionListener al); - - public void removeActionListener (ActionListener al); - - public void setActive(boolean active); - - public int tabForCoordinate(Point p); - - public Shape getIndicationForLocation(Point location, TopComponent startingTransfer, - Point startingPoint, boolean attachingPossible); - - public Object getConstraintForLocation(Point location, boolean attachingPossible); - - public Image createImageOfTab (int tabIndex); - - /** Accessor for visual component holding components */ - public Component getComponent(); - - /** Allows tabbed implementors to speficy content of popup menu on tab - * with given index. Incoming actions are default set by winsys - */ - public Action[] getPopupActions(Action[] defaultActions, int tabIndex); - - /** Returns bounds of tab with given index */ - public Rectangle getTabBounds(int tabIndex); - - public boolean isTransparent(); - - public void setTransparent( boolean transparent ); - - /** Interface for simple accessing of Tabbed instance */ - public interface Accessor { - - public Tabbed getTabbed (); - - } // end of Accessor - -} - diff --git a/core.windows/src/org/netbeans/core/windows/view/ui/TabbedHandler.java b/core.windows/src/org/netbeans/core/windows/view/ui/TabbedHandler.java --- a/core.windows/src/org/netbeans/core/windows/view/ui/TabbedHandler.java +++ b/core.windows/src/org/netbeans/core/windows/view/ui/TabbedHandler.java @@ -43,6 +43,7 @@ package org.netbeans.core.windows.view.ui; +import org.netbeans.swing.tabcontrol.customtabs.Tabbed; import org.netbeans.core.windows.Constants; import org.netbeans.core.windows.actions.ActionUtils; import org.netbeans.core.windows.actions.MaximizeWindowAction; diff --git a/core.windows/src/org/netbeans/core/windows/view/ui/slides/SlideBar.java b/core.windows/src/org/netbeans/core/windows/view/ui/slides/SlideBar.java --- a/core.windows/src/org/netbeans/core/windows/view/ui/slides/SlideBar.java +++ b/core.windows/src/org/netbeans/core/windows/view/ui/slides/SlideBar.java @@ -72,7 +72,7 @@ import org.netbeans.core.windows.Constants; import org.netbeans.core.windows.Switches; import org.netbeans.core.windows.WindowManagerImpl; -import org.netbeans.core.windows.view.ui.Tabbed; +import org.netbeans.swing.tabcontrol.customtabs.Tabbed; import org.netbeans.core.windows.view.ui.tabcontrol.TabbedAdapter; import org.netbeans.swing.tabcontrol.SlideBarDataModel; import org.netbeans.swing.tabcontrol.SlidingButton; diff --git a/core.windows/src/org/netbeans/core/windows/view/ui/slides/SlideBarContainer.java b/core.windows/src/org/netbeans/core/windows/view/ui/slides/SlideBarContainer.java --- a/core.windows/src/org/netbeans/core/windows/view/ui/slides/SlideBarContainer.java +++ b/core.windows/src/org/netbeans/core/windows/view/ui/slides/SlideBarContainer.java @@ -65,7 +65,7 @@ import org.netbeans.core.windows.view.ui.AbstractModeContainer; import org.netbeans.core.windows.view.ui.ModeComponent; import org.netbeans.core.windows.view.dnd.TopComponentDroppable; -import org.netbeans.core.windows.view.ui.Tabbed; +import org.netbeans.swing.tabcontrol.customtabs.Tabbed; import org.openide.windows.TopComponent; diff --git a/core.windows/src/org/netbeans/core/windows/view/ui/slides/TabbedSlideAdapter.java b/core.windows/src/org/netbeans/core/windows/view/ui/slides/TabbedSlideAdapter.java --- a/core.windows/src/org/netbeans/core/windows/view/ui/slides/TabbedSlideAdapter.java +++ b/core.windows/src/org/netbeans/core/windows/view/ui/slides/TabbedSlideAdapter.java @@ -62,7 +62,7 @@ import org.netbeans.core.windows.Switches; import org.netbeans.core.windows.WindowManagerImpl; import org.netbeans.core.windows.actions.ActionUtils; -import org.netbeans.core.windows.view.ui.Tabbed; +import org.netbeans.swing.tabcontrol.customtabs.Tabbed; import org.netbeans.swing.tabcontrol.DefaultTabDataModel; import org.netbeans.core.windows.view.dnd.DragAndDropFeedbackVisualizer; import org.netbeans.swing.tabcontrol.SlideBarDataModel; diff --git a/core.windows/src/org/netbeans/core/windows/view/ui/tabcontrol/TabbedAdapter.java b/core.windows/src/org/netbeans/core/windows/view/ui/tabcontrol/TabbedAdapter.java --- a/core.windows/src/org/netbeans/core/windows/view/ui/tabcontrol/TabbedAdapter.java +++ b/core.windows/src/org/netbeans/core/windows/view/ui/tabcontrol/TabbedAdapter.java @@ -49,7 +49,7 @@ import org.netbeans.core.windows.Constants; import org.netbeans.core.windows.Debug; import org.netbeans.core.windows.WindowManagerImpl; -import org.netbeans.core.windows.view.ui.Tabbed; +import org.netbeans.swing.tabcontrol.customtabs.Tabbed; import org.netbeans.swing.tabcontrol.ComponentConverter; import org.netbeans.swing.tabcontrol.TabData; import org.netbeans.swing.tabcontrol.TabbedContainer; @@ -89,8 +89,8 @@ private PropertyChangeListener tooltipListener, weakTooltipListener; /** Creates a new instance of TabbedAdapter */ - public TabbedAdapter (int type) { - super (null, type, new WinsysInfo(type)); + public TabbedAdapter (int type, WinsysInfoForTabbedContainer info) { + super (null, type, info); getSelectionModel().addChangeListener(new ChangeListener() { public void stateChanged (ChangeEvent ce) { int idx = getSelectionModel().getSelectedIndex(); @@ -515,7 +515,7 @@ /********* implementation of WinsysInfoForTabbed ********/ - static class WinsysInfo extends WinsysInfoForTabbedContainer { + public static class WinsysInfo extends WinsysInfoForTabbedContainer { private int containerType; public WinsysInfo( int containerType ) { this.containerType = containerType; diff --git a/o.n.swing.tabcontrol/nbproject/project.xml b/o.n.swing.tabcontrol/nbproject/project.xml --- a/o.n.swing.tabcontrol/nbproject/project.xml +++ b/o.n.swing.tabcontrol/nbproject/project.xml @@ -74,6 +74,7 @@ org.netbeans.swing.popupswitcher org.netbeans.swing.tabcontrol + org.netbeans.swing.tabcontrol.customtabs org.netbeans.swing.tabcontrol.event org.netbeans.swing.tabcontrol.plaf