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
-
-}
-
Index: core.windows/src/org/netbeans/core/windows/view/ui/TabbedHandler.java
--- core.windows/src/org/netbeans/core/windows/view/ui/TabbedHandler.java Base (BASE)
+++ core.windows/src/org/netbeans/core/windows/view/ui/TabbedHandler.java Locally Modified (Based On LOCAL)
@@ -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;
Index: core.windows/src/org/netbeans/core/windows/view/ui/slides/SlideBar.java
--- core.windows/src/org/netbeans/core/windows/view/ui/slides/SlideBar.java Base (BASE)
+++ core.windows/src/org/netbeans/core/windows/view/ui/slides/SlideBar.java Locally Modified (Based On LOCAL)
@@ -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;
Index: core.windows/src/org/netbeans/core/windows/view/ui/slides/SlideBarContainer.java
--- core.windows/src/org/netbeans/core/windows/view/ui/slides/SlideBarContainer.java Base (BASE)
+++ core.windows/src/org/netbeans/core/windows/view/ui/slides/SlideBarContainer.java Locally Modified (Based On LOCAL)
@@ -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;
Index: core.windows/src/org/netbeans/core/windows/view/ui/slides/TabbedSlideAdapter.java
--- core.windows/src/org/netbeans/core/windows/view/ui/slides/TabbedSlideAdapter.java Base (BASE)
+++ core.windows/src/org/netbeans/core/windows/view/ui/slides/TabbedSlideAdapter.java Locally Modified (Based On LOCAL)
@@ -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;
Index: core.windows/src/org/netbeans/core/windows/view/ui/tabcontrol/TabbedAdapter.java
--- core.windows/src/org/netbeans/core/windows/view/ui/tabcontrol/TabbedAdapter.java Base (BASE)
+++ core.windows/src/org/netbeans/core/windows/view/ui/tabcontrol/TabbedAdapter.java Locally Modified (Based On LOCAL)
@@ -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;
Index: o.n.swing.tabcontrol/apichanges.xml
--- o.n.swing.tabcontrol/apichanges.xml Base (BASE)
+++ o.n.swing.tabcontrol/apichanges.xml Locally Modified (Based On LOCAL)
@@ -104,6 +104,25 @@
Added new Service Provider Interface TabbedComponentFactory to make it possible to change the implementation of Tabbed +
+Refactor moved Interface Tabbed from core.windows to make it part of + a public API. Now it can be implemented by alternative controls to the default + implementation (TabbedAdapter). +
+SwitcherTable
and SwitcherTableItem
see a javadoc.
+ TabbedComponentFactory
needs to be registered
+ as a Service Provider via the ServiceProvider annotation. The implementation is used by core.windows to create Tabbed Components when required.TabbedComponentFactory
and Tabbed
see the javadoc.
+
+ TabbedContainer
.
+ *
+ * @author Peter Zavadsky
+ */
+public interface Tabbed {
+
+ /**
+ * Give a visual hint (e.g. blink) to draw attention to this TopComponent
+ * @param tc
+ */
+ 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
+
+}
+
Index: o.n.swing.tabcontrol/src/org/netbeans/swing/tabcontrol/customtabs/TabbedComponentFactory.java
--- o.n.swing.tabcontrol/src/org/netbeans/swing/tabcontrol/customtabs/TabbedComponentFactory.java Base (BASE)
+++ o.n.swing.tabcontrol/src/org/netbeans/swing/tabcontrol/customtabs/TabbedComponentFactory.java Locally New
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2009 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]"
+ *
+ * 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.
+ *
+ * Contributor(s):
+ *
+ * Portions Copyrighted 2009 Sun Microsystems, Inc.
+ */
+
+package org.netbeans.swing.tabcontrol.customtabs;
+
+import org.netbeans.swing.tabcontrol.WinsysInfoForTabbedContainer;
+
+/**
+ * Service Interface used by the Window System for creating NetBeans specific
+ * Tabbed Containers. Use this if you want to provide an alternative implementation
+ * (e.g. based on JTabbedPane).
+ * Implement to return your own implementation of Tabbed. Make it available by
+ * registering as a ServiceProvider using this annotation:
+ * @ServiceProvider(service=TabbedComponentFactory.class,supersedes="org.netbeans.core.windows.view.ui.DefaultTabbedComponentFactory" )
+ *
+ * @since 1.17
+ * @author maxnitribitt
+ */
+public interface TabbedComponentFactory {
+/**
+ * Get the Tabbed implementation for this type (Editor / View)
+ * @param type
+ * @return
+ */
+ public Tabbed getTabbedComponent(int type, WinsysInfoForTabbedContainer info);
+
+}