All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.netbeans.swing.tabcontrol.plaf.TabCellRenderer Maven / Gradle / Ivy

There is a newer version: RELEASE230
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
/*
 * TabCellRenderer.java
 *
 * Created on December 2, 2003, 6:25 PM
 */

package org.netbeans.swing.tabcontrol.plaf;

import org.netbeans.swing.tabcontrol.TabData;

import javax.swing.*;
import java.awt.*;

/**
 * Interface for a component that can render a tab and handle other aspects of
 * its functionality. Implementing this interface is the main aspect of implementing
 * an additional look and feel.
 * 

* Note: The component returned by getRendererComponent() should be capable of * painting itself properly without needing to be added into the AWT hierarchy - it * will be painted directly with a call to its paint() method, not by using * SwingUtilities.paintComponent(), for performance reasons. */ public interface TabCellRenderer { /** * Configures and returns a component which can appropriately paint the * passed tab in its current state */ public JComponent getRendererComponent(TabData data, Rectangle bounds, int state); /** * Get a command string which is identified with a region of the tab cell * renderer, such as TabbedContainer.COMMAND_CLOSE if the point is inside the * close button, or TabbedContainer.COMMAND_SELECT if the point is over the * tab title. The command returned should be the one that would be executed * were the default mouse button to be pressed. Primarily this method is used * to determine what, if any, visual feedback to show to the user as the mouse * is moved over tabs. * * @param p A point (presumably) within the bounds of the passed rectangle * @param tabState The state of the tab, such as selected, clip right, etc. * @param bounds The bounds of the tab, defining the coordinate space in which * the point parameter should be evaluated * @return A command string. TabDisplayer/TabbedContainer define a small number, * but other UIs can define whatever private contract they want. If the * action is performed, an action event with this string will be fired * from the tabbed container, so client code can handle the actual work * of the action as needed */ public String getCommandAtPoint (Point p, int tabState, Rectangle bounds); /** * Get a command string which is identified with a region of the tab cell * renderer, such as TabbedContainer.COMMAND_CLOSE if the point is inside the * close button, or TabbedContainer.COMMAND_SELECT if the point is over the * tab title. * * Note that this method may return a different result than * getCommandAtPoint (Point p, int tabState, Rectangle bounds) - * that method is primarily used for painting logic (such as whether to * draw a rectangle around a close button); this one is to determine the * actual action, if any to perform. So it is free to return null, some * other action, etc. * * @param p A point (presumably) within the bounds of the passed rectangle * @param tabState The state of the tab, such as selected, clip right, etc. * @param bounds The bounds of the tab, defining the coordinate space in which * the point parameter should be evaluated * @param mouseButton The mouse button used to produce the event, as defined in MouseEvent * @param eventType The event type, as defined in MouseEvent * @param modifiers The modifiers mask, as defined in MouseEvent * * @return A command string or null */ public String getCommandAtPoint (Point p, int tabState, Rectangle bounds, int mouseButton, int eventType, int modifiers); /** * Get the shape that represents those pixels actually occupied by the tab * on-screen. This is used for determining whether a mouse event really * occured on a tab, and for painting.

A note on painting of tab drag * and drop indication: AbstractTabsUI contains generic * support for drawing drag and drop target indications. If want to use it * rather than write your own, you need to specify the polygon returned by * this method with the following point order: The last two points in the * point array of the polygon must be the bottom left corner, * followed by the bottom right corner. In other words, start at * the upper left corner when constructing the polygon, and end at the * bottom right corner, using no more than one point for the bottom left and * right corners: *

     * start here -->    /---------
     *                            |
     * finish here -->   ----------
     * 
*/ public Polygon getTabShape(int tabState, Rectangle bounds); /** * Returns the number of pixels this renderer wants added to the base width * and height of the icon and text to fit decorations such as close butons, * drag indicators, etc. This method is called only once, * during initialization, if this renderer is the default renderer created * by TabsUI.createDefaultRenderer(). The values it returns * cannot be changed dynamically. The result will be passed as padX/padY * arguments to the constructor of DefaultTabLayoutModel (unless * createLayoutModel is overridden with some custom model - then all bets * are off). */ public Dimension getPadding(); /** * Returns the number of pixels to be added to the width of a cell if the * cell is the selected index. This method is also called only once, on * initialization, for the default renderer */ public int getPixelsToAddToSelection(); public Color getSelectedBackground(); //XXX delete me public Color getSelectedActivatedBackground(); //XXX delete me public boolean isShowCloseButton(); public void setShowCloseButton(boolean val); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy