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

de.invation.code.toval.graphic.renderer.VerticalTableHeaderCellRenderer Maven / Gradle / Ivy

Go to download

TOVAL comprises a set of java classes for common programming issues. It includes utils for arrays, lists, sets and collections for convenient handling and modification, but also support for mathematic definitions concerning logic (clauses + resolution) together with some algorithms for permutations, powersets and resolution. Additionally it contains a number of types for multisets, matrices with object keys and much more.

The newest version!
package de.invation.code.toval.graphic.renderer;

import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.Icon;
import javax.swing.JTable;
import javax.swing.RowSorter.SortKey;
import javax.swing.SortOrder;
import javax.swing.UIManager;

import de.invation.code.toval.graphic.ui.VerticalLabelUI;

/**
 * A renderer for a JTableHeader with text rotated 90 degrees counterclockwise.
 * 

* Extends {@link DefaultTableHeaderCellRenderer}. * * @see VerticalLabelUI */ public class VerticalTableHeaderCellRenderer extends DefaultTableHeaderCellRenderer { private static final long serialVersionUID = 7949728965542160920L; /** * Constructs a VerticalTableHeaderCellRenderer. *

* The horizontal and vertical alignments and text positions are set as appropriate to a vertical table header cell. */ public VerticalTableHeaderCellRenderer() { setHorizontalAlignment(LEFT); setHorizontalTextPosition(CENTER); setVerticalAlignment(CENTER); setVerticalTextPosition(TOP); setUI(new VerticalLabelUI()); } /** * Overridden to return a rotated version of the sort icon. * * @param table * the JTable. * @param column * the colummn index. * @return the sort icon, or null if the column is unsorted. */ @Override protected Icon getIcon(JTable table, int column) { SortKey sortKey = getSortKey(table, column); if (sortKey != null && table.convertColumnIndexToView(sortKey.getColumn()) == column) { SortOrder sortOrder = sortKey.getSortOrder(); switch (sortOrder) { case ASCENDING: return VerticalSortIcon.ASCENDING; case DESCENDING: return VerticalSortIcon.DESCENDING; case UNSORTED: return VerticalSortIcon.ASCENDING; } } return null; } /** * An icon implementation to paint the contained icon rotated 90 degrees clockwise. *

* This implementation assumes that the L&F provides ascending and descending sort icons of identical size. */ private enum VerticalSortIcon implements Icon { ASCENDING(UIManager.getIcon("Table.ascendingSortIcon")), DESCENDING(UIManager.getIcon("Table.descendingSortIcon")); private final Icon icon;// = ; private VerticalSortIcon(Icon icon) { this.icon = icon; } /** * Paints an icon suitable for the header of a sorted table column, rotated by 90 degrees clockwise. This rotation is applied to compensate the rotation already applied to the passed in Graphics reference by the VerticalLabelUI. *

* The icon is retrieved from the UIManager to obtain an icon appropriate to the L&F. * * @param c * the component to which the icon is to be rendered * @param g * the graphics context * @param x * the X coordinate of the icon's top-left corner * @param y * the Y coordinate of the icon's top-left corner */ @Override public void paintIcon(Component c, Graphics g, int x, int y) { int maxSide = Math.max(getIconWidth(), getIconHeight()); Graphics2D g2 = (Graphics2D) g.create(x, y, maxSide, maxSide); g2.rotate((Math.PI / 2)); g2.translate(0, -maxSide); icon.paintIcon(c, g2, 0, 0); g2.dispose(); } /** * Returns the width of the rotated icon. * * @return the height of the contained icon */ @Override public int getIconWidth() { return icon.getIconHeight(); } /** * Returns the height of the rotated icon. * * @return the width of the contained icon */ @Override public int getIconHeight() { return icon.getIconWidth(); } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy