001    /*
002     * Copyright 2002-2007 the original author or authors.
003     * 
004     * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005     * use this file except in compliance with the License. You may obtain a copy of
006     * the License at
007     * 
008     * http://www.apache.org/licenses/LICENSE-2.0
009     * 
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012     * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013     * License for the specific language governing permissions and limitations under
014     * the License.
015     */
016    package org.springframework.richclient.util;
017    
018    import javax.swing.JButton;
019    import javax.swing.JMenu;
020    import javax.swing.JMenuItem;
021    import javax.swing.JSeparator;
022    import javax.swing.JToolBar;
023    
024    import junit.framework.TestCase;
025    
026    /**
027     * Testcase for <code>MenuElementUtils</code>
028     * 
029     * @author Peter De Bruycker
030     */
031    public class SeparatorUtilsTests extends TestCase {
032            public void testConsolidateSeparatorsInToolBar() {
033                    JToolBar toolBar = new JToolBar();
034    
035                    toolBar.add(createButton("button1", false));
036                    toolBar.addSeparator(); // index 1
037                    toolBar.add(createButton("button2", true));
038                    toolBar.addSeparator(); // index 3
039                    toolBar.add(createButton("button3", false));
040                    toolBar.addSeparator(); // index 5
041                    toolBar.add(createButton("button4",true));
042                    toolBar.addSeparator(); // index 7
043                    toolBar.add(createButton("button5", false));
044    
045                    SeparatorUtils.consolidateSeparators(toolBar);
046                    
047                    assertEquals(9, toolBar.getComponentCount());
048                    
049                    assertFalse(toolBar.getComponent(1).isVisible());
050                    assertFalse(toolBar.getComponent(3).isVisible());
051                    assertTrue(toolBar.getComponent(5).isVisible());
052                    assertFalse(toolBar.getComponent(7).isVisible());
053            }
054            
055            public void testConsolidateSeparatorsReset() {
056                    JMenu menu = new JMenu("test-menu");
057    
058                    menu.add(createMenuItem("item1", false));
059                    menu.addSeparator(); // index 1
060                    menu.add(createMenuItem("item2", true));
061                    menu.addSeparator(); // index 3
062                    menu.add(createMenuItem("item3", false));
063                    menu.addSeparator(); // index 5
064                    menu.add(createMenuItem("item4", true));
065                    menu.addSeparator(); // index 7
066                    menu.add(createMenuItem("item5", false));
067    
068                    SeparatorUtils.consolidateSeparators(menu);
069    
070                    menu.getMenuComponent(0).setVisible(true);
071    
072                    SeparatorUtils.consolidateSeparators(menu);
073    
074                    assertTrue(((JSeparator)menu.getMenuComponent(1)).isVisible());
075                    assertFalse(((JSeparator)menu.getMenuComponent(3)).isVisible());
076                    assertTrue(((JSeparator)menu.getMenuComponent(5)).isVisible());
077                    assertFalse(((JSeparator)menu.getMenuComponent(7)).isVisible());
078            }
079    
080            public void testConsolidateSeparatorsInMenu() {
081                    JMenu menu = new JMenu("test-menu");
082    
083                    menu.add(createMenuItem("item1", false));
084                    menu.addSeparator(); // index 1
085                    menu.add(createMenuItem("item2", true));
086                    menu.addSeparator(); // index 3
087                    menu.add(createMenuItem("item3", false));
088                    menu.addSeparator(); // index 5
089                    menu.add(createMenuItem("item4", true));
090                    menu.addSeparator(); // index 7
091                    menu.add(createMenuItem("item5", false));
092    
093                    SeparatorUtils.consolidateSeparators(menu);
094    
095                    assertEquals(9, menu.getMenuComponentCount());
096    
097                    assertFalse(menu.getMenuComponent(1).isVisible());
098                    assertFalse(menu.getMenuComponent(3).isVisible());
099                    assertTrue(menu.getMenuComponent(5).isVisible());
100                    assertFalse(menu.getMenuComponent(7).isVisible());
101            }
102    
103    
104            public void testConsolidateSeparatorsInSubMenu() {
105                    JMenu sub = new JMenu("sub-menu");
106                    sub.add(createMenuItem("sub-item1", true));
107                    sub.addSeparator();
108                    sub.add(createMenuItem("sub-item2", false));
109                    sub.addSeparator();
110                    sub.add(createMenuItem("sub-item3", true));
111    
112                    JMenu menu = new JMenu("test-menu");
113                    menu.add(sub);
114    
115                    SeparatorUtils.consolidateSeparators(menu);
116    
117                    assertFalse(sub.getMenuComponent(1).isVisible());
118                    assertTrue(sub.getMenuComponent(3).isVisible());
119            }
120    
121            private static JMenuItem createMenuItem(String text, boolean visible) {
122                    JMenuItem item = new JMenuItem(text);
123    
124                    item.setVisible(visible);
125    
126                    return item;
127            }
128    
129            private static JButton createButton(String text, boolean visible) {
130                    JButton button = new JButton(text);
131                    button.setVisible(visible);
132    
133                    return button;
134            }
135    }