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
--- a/core.windows/src/org/netbeans/core/windows/view/ui/Tabbed.java
+++ b/core.windows/src/org/netbeans/core/windows/view/ui/Tabbed.java
@@ -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