Substance client properties

View all API methods.

View all client properties.


Client property name

SubstanceLookAndFeel.TABBED_PANE_VERTICAL_ORIENTATION_ROTATE_ICONS

Description

Client property name for specifying that when a single tabbed pane / all tabbed panes is layed-out vertically, the tab icons remain unrotated. This property can be specified on a single tab component, on a JTabbedPane itself (will hold for all tab components that don't define this property) or on UIManager. The value should be either Boolean.TRUE or Boolean.FALSE. By default, the vertically oriented tabs will have the rotated icons. In case the icon internal layout has horizontal / vertical meaning, using this property with value Boolean.TRUE will preserve the icon orientation. Note that this setting is only relevant for tabs marked with SubstanceLookAndFeel.TABBED_PANE_VERTICAL_ORIENTATION property.


See also


Sample code

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

import org.jvnet.substance.SubstanceLookAndFeel;

import test.Check;

/**
 * Test application that shows the use of the
 {@link SubstanceLookAndFeel#TABBED_PANE_VERTICAL_ORIENTATION_ROTATE_ICONS}
 * client property.
 
 @author Kirill Grouchnikov
 @see SubstanceLookAndFeel#TABBED_PANE_VERTICAL_ORIENTATION_ROTATE_ICONS
 */
public class TabbedPaneVerticalOrientationRotateIcons extends JFrame {
  /**
   * Creates the main frame for <code>this</code> sample.
   */
  public TabbedPaneVerticalOrientationRotateIcons() {
    super("Tabbed pane vertical orientation");

    this.setLayout(new BorderLayout());

    // create tabbed pane with a few tabs
    final JTabbedPane jtp = new JTabbedPane();
    jtp.addTab("First", Check.getIcon("flag_mexico")new JPanel());
    jtp.addTab("Second", Check.getIcon("flag_sweden")new JPanel());
    jtp.addTab("Third", Check.getIcon("flag_hong_kong")new JPanel());
    // set tab placement to left
    jtp.setTabPlacement(JTabbedPane.LEFT);
    // mark tabbed pane to have tabs with vertical orientation
    jtp.putClientProperty(
        SubstanceLookAndFeel.TABBED_PANE_VERTICAL_ORIENTATION,
        Boolean.TRUE);

    this.add(jtp, BorderLayout.CENTER);

    JPanel controls = new JPanel(new FlowLayout(FlowLayout.RIGHT));
    final JCheckBox isOnLeft = new JCheckBox("Is on left");
    isOnLeft.setSelected(jtp.getTabPlacement() == JTabbedPane.LEFT);
    final JCheckBox isVerticalRotatedIcons = new JCheckBox("Icons rotated");
    isVerticalRotatedIcons
        .setSelected(Boolean.TRUE
            .equals(jtp
                .getClientProperty(SubstanceLookAndFeel.TABBED_PANE_VERTICAL_ORIENTATION_ROTATE_ICONS)));
    isOnLeft.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        // based on the checkbox selection, set tab placement to left
        // or right
        jtp.setTabPlacement(isOnLeft.isSelected() ? JTabbedPane.LEFT
            : JTabbedPane.RIGHT);
        jtp.revalidate();
        jtp.repaint();
      }
    });
    isVerticalRotatedIcons.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        // based on the checkbox selection, mark tabbed pane to have
        // icons oriented vertically as well
        jtp
            .putClientProperty(
                SubstanceLookAndFeel.TABBED_PANE_VERTICAL_ORIENTATION_ROTATE_ICONS,
                isVerticalRotatedIcons.isSelected() ? Boolean.TRUE
                    null);
        jtp.revalidate();
        jtp.repaint();
      }
    });

    controls.add(isOnLeft);
    controls.add(isVerticalRotatedIcons);
    this.add(controls, BorderLayout.SOUTH);

    this.setSize(400200);
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }

  /**
   * The main method for <code>this</code> sample. The arguments are
   * ignored.
   
   @param args
   *            Ignored.
   @throws Exception
   *             If some exception occured. Note that there is no special
   *             treatment of exception conditions in <code>this</code>
   *             sample code.
   */
  public static void main(String[] argsthrows Exception {
    UIManager.setLookAndFeel(new SubstanceLookAndFeel());
    JFrame.setDefaultLookAndFeelDecorated(true);
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        new TabbedPaneVerticalOrientationRotateIcons().setVisible(true);
      }
    });
  }
}

The screenshot below shows tabbed pane with left placement, vertically-oriented tabs and non-rotated icons - this property is not set:

The screenshot below shows tabbed pane with left placement, vertically-oriented tabs and rotated icons - this property is set to Boolean.TRUE:

The screenshot below shows tabbed pane with right placement, vertically-oriented tabs and rotated icons - this property is set to Boolean.TRUE: