Index: src/test/api/java.injected/javax/swing/plaf/multi/SyserrButtonUI.java =================================================================== --- src/test/api/java.injected/javax/swing/plaf/multi/SyserrButtonUI.java (revision 0) +++ src/test/api/java.injected/javax/swing/plaf/multi/SyserrButtonUI.java (revision 0) @@ -0,0 +1,20 @@ +package javax.swing.plaf.multi; + +import java.awt.Graphics; + +import javax.swing.JComponent; +import javax.swing.plaf.ButtonUI; +import javax.swing.plaf.ComponentUI; + +public class SyserrButtonUI extends ButtonUI { + + public static ComponentUI createUI(JComponent a) { + System.err.println("create"); + return new SyserrButtonUI(); + } + + @Override + public void paint(Graphics a, JComponent b) { + System.err.println("paint"); + } +} Index: src/test/api/java.injected/javax/swing/plaf/multi/SyserrLookAndFeel.java =================================================================== --- src/test/api/java.injected/javax/swing/plaf/multi/SyserrLookAndFeel.java (revision 0) +++ src/test/api/java.injected/javax/swing/plaf/multi/SyserrLookAndFeel.java (revision 0) @@ -0,0 +1,46 @@ +package javax.swing.plaf.multi; + +import javax.swing.LookAndFeel; +import javax.swing.UIDefaults; + +public class SyserrLookAndFeel extends LookAndFeel { + + UIDefaults uiDefaults; + + @Override + public String getName() { + return "SyserrLaf"; //$NON-NLS-1$ + } + + @Override + public String getID() { + return "SyserrLaf"; //$NON-NLS-1$ + } + + @Override + public String getDescription() { + return "Look and feel for testing Muttiplexing laf"; //$NON-NLS-1$ + } + + @Override + public boolean isNativeLookAndFeel() { + return false; + } + + @Override + public boolean isSupportedLookAndFeel() { + return true; + } + + @Override + public UIDefaults getDefaults() { + + return new UIDefaults(new Object[] { "ButtonUI", //$NON-NLS-1$ + "javax.swing.plaf.multi.SyserrButtonUI", }) {//$NON-NLS-1$ + @Override + protected void getUIError(String s) { + // Remove unneded mesage + } + }; + } +} Index: src/test/api/java.injected/javax/swing/plaf/multi/MultiLookAndFeelTest.java =================================================================== --- src/test/api/java.injected/javax/swing/plaf/multi/MultiLookAndFeelTest.java (revision 0) +++ src/test/api/java.injected/javax/swing/plaf/multi/MultiLookAndFeelTest.java (revision 0) @@ -0,0 +1,114 @@ +package javax.swing.plaf.multi; + +import java.util.Vector; + +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.LookAndFeel; +import javax.swing.UIManager; +import javax.swing.plaf.ComponentUI; + +import junit.framework.TestCase; + +public class MultiLookAndFeelTest extends TestCase { + + private MultiLookAndFeel mlaf = new MultiLookAndFeel(); + + /* + * Test method for + * 'javax.swing.plaf.multi.MultiLookAndFeel.isNativeLookAndFeel()' + */ + public void testIsNativeLookAndFeel() { + assertFalse(mlaf.isNativeLookAndFeel()); + } + + /* + * Test method for + * 'javax.swing.plaf.multi.MultiLookAndFeel.isSupportedLookAndFeel()' + */ + public void testIsSupportedLookAndFeel() { + assertTrue(mlaf.isSupportedLookAndFeel()); + } + + /* + * Test method for 'javax.swing.plaf.multi.MultiLookAndFeel.getName()' + */ + public void testGetName() { + assertEquals(mlaf.getName(), "Multiplexing Look and Feel"); //$NON-NLS-1$ + } + + /* + * Test method for 'javax.swing.plaf.multi.MultiLookAndFeel.getID()' + */ + public void testGetID() { + assertEquals(mlaf.getID(), "Multiplex"); //$NON-NLS-1$ + } + + /* + * Test method for + * 'javax.swing.plaf.multi.MultiLookAndFeel.createUIs(ComponentUI, Vector, + * JComponent)' + */ + public void testCreateUIs() { + + JButton button = new JButton(); + JLabel label = new JLabel(); + ComponentUI buttonUI = UIManager.getUI(button); + ComponentUI labelUI = UIManager.getUI(label); + MultiButtonUI multiButtonUI = new MultiButtonUI(); + MultiLabelUI multiLabelUI = new MultiLabelUI(); + LookAndFeel auxLaf = new SyserrLookAndFeel(); + + // without auxiliary look and feels createUIs returns UI fron default + // look and feel + assertEquals(buttonUI, MultiLookAndFeel.createUIs(multiButtonUI, + multiButtonUI.uis, button)); + + UIManager.addAuxiliaryLookAndFeel(auxLaf); + + // SyserrLookAndFeel contains UI for button so createUIs should return + // MultiButtonUI + assertEquals(multiButtonUI, MultiLookAndFeel.createUIs(multiButtonUI, + multiButtonUI.uis, button)); + // But SyserrLookAndFeel doesn't contain UI for JLabel so createUIs + // should return UI from default laf + assertEquals(labelUI, MultiLookAndFeel.createUIs(multiLabelUI, + multiLabelUI.uis, label)); + + UIManager.removeAuxiliaryLookAndFeel(auxLaf); + } + + /* + * Test method for 'javax.swing.plaf.multi.MultiLookAndFeel.getDefaults()' + * Defaults contains referenses to Multi classes only + */ + public void testGetDefaults() { + assertEquals(mlaf.getDefaults().get("ButtonUI"), //$NON-NLS-1$ + "javax.swing.plaf.multi.MultiButtonUI"); //$NON-NLS-1$ + assertNull(mlaf.getDefaults().get("Button.background")); //$NON-NLS-1$ + } + + /* + * Test method for + * 'javax.swing.plaf.multi.MultiLookAndFeel.uisToArray(Vector)' + */ + @SuppressWarnings("unchecked") + public void testUisToArray() { + + assertEquals(0, MultiLookAndFeel.uisToArray(null).length); + assertNull(MultiLookAndFeel.uisToArray(new Vector())); + + Vector v = new Vector(); + ComponentUI content = new SyserrButtonUI(); + v.add(content); + assertSame(content, MultiLookAndFeel.uisToArray(v)[0]); + + v.add(new Object()); + try { + MultiLookAndFeel.uisToArray(v); + fail(); + } catch (Exception e) { + // Correct behavior. The exception isn't described in spec + } + } +} Index: src/test/api/java.injected/javax/swing/UIManagerTest.java =================================================================== --- src/test/api/java.injected/javax/swing/UIManagerTest.java (revision 538907) +++ src/test/api/java.injected/javax/swing/UIManagerTest.java (working copy) @@ -26,6 +26,8 @@ import java.awt.Insets; import java.beans.PropertyChangeListener; import java.util.Locale; + +import javax.swing.UIManager; import javax.swing.UIManager.LookAndFeelInfo; import javax.swing.border.Border; import javax.swing.plaf.ComponentUI; @@ -261,7 +263,33 @@ } assertTrue(foundMetalLF); } + + public void testAuxillaryLafs() { + MetalLookAndFeel auxLaf1 = new MetalLookAndFeel(); + MetalLookAndFeel auxLaf2 = new MetalLookAndFeel(); + + assertEquals(UIManager.getAuxiliaryLookAndFeels().length, 0); + UIManager.addAuxiliaryLookAndFeel(auxLaf1); + assertEquals(UIManager.getAuxiliaryLookAndFeels().length, 1); + UIManager.addAuxiliaryLookAndFeel(auxLaf1); + assertEquals(UIManager.getAuxiliaryLookAndFeels().length, 1); + UIManager.addAuxiliaryLookAndFeel(auxLaf2); + assertEquals(UIManager.getAuxiliaryLookAndFeels().length, 2); + UIManager.addAuxiliaryLookAndFeel(createUnsupportedLF()); + assertEquals(UIManager.getAuxiliaryLookAndFeels().length, 2); + + assertTrue(UIManager.removeAuxiliaryLookAndFeel(auxLaf1)); + assertEquals(UIManager.getAuxiliaryLookAndFeels().length, 1); + assertFalse(UIManager.removeAuxiliaryLookAndFeel(auxLaf1)); + assertFalse(UIManager + .removeAuxiliaryLookAndFeel(new MetalLookAndFeel())); + assertEquals(UIManager.getAuxiliaryLookAndFeels().length, 1); + assertTrue(UIManager.removeAuxiliaryLookAndFeel(auxLaf2)); + assertEquals(UIManager.getAuxiliaryLookAndFeels().length, 0); + + } + private LookAndFeel createUnsupportedLF() { return new LookAndFeel() { @Override