/* * Created on 16.03.2006 * */ package org.jdesktop.swingx; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.util.logging.Logger; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.SwingConstants; import javax.swing.UIManager; import javax.swing.border.Border; import javax.swing.border.TitledBorder; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @RunWith(JUnit4.class) public class JXTitledSeparatorTest extends InteractiveTestCase { @SuppressWarnings("unused") private static final Logger LOG = Logger .getLogger(JXTitledSeparatorTest.class.getName()); public static void main(String[] args) { setSystemLF(true); JXTitledSeparatorTest test = new JXTitledSeparatorTest(); try { test.runInteractiveTests(); // test.runInteractiveTests("interactive.*Highligh.*"); } catch (Exception ex) { } } /** * Issue #305-swingx: JXTitledSeparator prefSize should depend on title length. * * (to solve: never-ever call setPrefSize() - override getPrefSize() instead) * */ @Test public void testPrefSize() { JXTitledSeparator separator = new JXTitledSeparator(); Dimension dim = separator.getPreferredSize(); separator.setTitle("some title definitely longer than empty"); assertTrue(dim.width < separator.getPreferredSize().width); } /** * Issue #391-swingx: JXTitledSeparator does not respect getForeground/getFont */ @Test public void testForeground() { Color testColor = new Color(10, 213, 123); UIManager.put("TitledBorder.titleColor", testColor); JXTitledSeparator separator = new JXTitledSeparator(); assertSame(testColor, separator.getForeground()); } /** * Issue #??-swingx: JXTitledSeparator - no visual clue if disabled */ public void interactiveDisabled() { final JXTitledSeparator separator = new JXTitledSeparator("visual clue for disabled?... "); JXFrame frame = showInFrame(separator, "en/disabled"); Action action = new AbstractAction("toggleEnabled") { @Override public void actionPerformed(ActionEvent e) { separator.setEnabled(!separator.isEnabled()); } }; addAction(frame, action); show(frame, 400, 200); } /** * Issue #304-swingx: JXTitledSeparator should have same orientation * dependent behaviour as TitledBorder. * * Looking at bidi-compliance: LEFT/RIGHT should be absolute, * as opposed to LEADING/TRAILING which is orientation dependent. * * weird (unrelated to the titledSeparator) the dynamic update * of orientation isn't taken - only after resize. Problem of * panel, frame, ?? An equivalent check for jxtable which resides * in a scrollpane is okay. Revalidate doesn't help for border. * */ public void interactiveRToL() { JComponent box = Box.createVerticalBox(); JXTitledSeparator defaultAlign = new JXTitledSeparator(); // default is LEADING defaultAlign.setTitle("default"); // default is LEADING Border lineBorder = BorderFactory.createLineBorder(Color.MAGENTA); Border defaultBorder = new TitledBorder(lineBorder, "default"); defaultAlign.setBorder(defaultBorder); box.add(defaultAlign); JXTitledSeparator leading = new JXTitledSeparator(); leading.setTitle("leading"); leading.setHorizontalAlignment(SwingConstants.LEADING); Border leadingBorder = new TitledBorder(lineBorder, "leading", TitledBorder.LEADING, TitledBorder.TOP); leading.setBorder(leadingBorder); box.add(leading); JXTitledSeparator trailing = new JXTitledSeparator(); trailing.setTitle("trailing"); trailing.setHorizontalAlignment(SwingConstants.TRAILING); Border trailingBorder = new TitledBorder(lineBorder, "trailing", TitledBorder.TRAILING, TitledBorder.TOP); trailing.setBorder(trailingBorder); box.add(trailing); JXTitledSeparator left = new JXTitledSeparator(); left.setTitle("left"); left.setHorizontalAlignment(SwingConstants.LEFT); Border leftBorder = new TitledBorder(lineBorder, "left", TitledBorder.LEFT, TitledBorder.TOP); left.setBorder(leftBorder); box.add(left); final JXTitledSeparator right = new JXTitledSeparator(); right.setTitle("right"); right.setHorizontalAlignment(SwingConstants.RIGHT); Border rightBorder = new TitledBorder(lineBorder, "right", TitledBorder.RIGHT, TitledBorder.TOP); right.setBorder(rightBorder); box.add(right); final JXFrame frame = wrapInFrame(box, "Bidi-compliance"); Action action = new AbstractAction("toggleEnabled") { @Override public void actionPerformed(ActionEvent e) { right.setEnabled(!right.isEnabled()); } }; addAction(frame, action); addComponentOrientationToggle(frame); // titledSeparator freaks with prefSize, need to set fixed show(frame, 200, 400); } /** * Compares JXTitledSeparator props with corresponding TitledBorder props. * */ public void interactiveCompareAppearance() { JComponent box = Box.createVerticalBox(); JXTitledSeparator defaultAlign = new JXTitledSeparator(); // default is LEADING defaultAlign.setTitle("default"); // default is LEADING Border lineBorder = BorderFactory.createLineBorder(Color.MAGENTA); Border defaultBorder = new TitledBorder(lineBorder, "default"); defaultAlign.setBorder(defaultBorder); box.add(defaultAlign); Font font = new JLabel().getFont(); Font bigFont = font.deriveFont(Font.ITALIC, font.getSize() * 2.f); JXTitledSeparator leading = new JXTitledSeparator(); leading.setTitle("big font"); leading.setFont(bigFont); TitledBorder leadingBorder = new TitledBorder(lineBorder, "bigFont"); leadingBorder.setTitleFont(bigFont); leading.setBorder(leadingBorder); box.add(leading); JXTitledSeparator trailing = new JXTitledSeparator(); trailing.setTitle("colored"); trailing.setForeground(Color.BLUE); TitledBorder trailingBorder = new TitledBorder(lineBorder, "colored"); trailingBorder.setTitleColor(Color.BLUE); trailing.setBorder(trailingBorder); box.add(trailing); // JXTitledSeparator left = new JXTitledSeparator(); // left.setTitle("left"); // left.setHorizontalAlignment(SwingConstants.LEFT); // Border leftBorder = new TitledBorder(lineBorder, "left", TitledBorder.LEFT, TitledBorder.TOP); // left.setBorder(leftBorder); // box.add(left); final JXFrame frame = wrapInFrame(box, "Compare properties"); // titledSeparator freaks with prefSize, need to set fixed frame.setSize(200, 400); frame.setVisible(true); } }