1   /*
2    * Copyright 2002-2007 the original author or authors.
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5    * use this file except in compliance with the License. You may obtain a copy of
6    * the License at
7    * 
8    * http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13   * License for the specific language governing permissions and limitations under
14   * the License.
15   */
16  package org.springframework.richclient.util;
17  
18  import javax.swing.JButton;
19  import javax.swing.JMenu;
20  import javax.swing.JMenuItem;
21  import javax.swing.JSeparator;
22  import javax.swing.JToolBar;
23  
24  import junit.framework.TestCase;
25  
26  /**
27   * Testcase for <code>MenuElementUtils</code>
28   * 
29   * @author Peter De Bruycker
30   */
31  public class SeparatorUtilsTests extends TestCase {
32  	public void testConsolidateSeparatorsInToolBar() {
33  		JToolBar toolBar = new JToolBar();
34  
35  		toolBar.add(createButton("button1", false));
36  		toolBar.addSeparator(); // index 1
37  		toolBar.add(createButton("button2", true));
38  		toolBar.addSeparator(); // index 3
39  		toolBar.add(createButton("button3", false));
40  		toolBar.addSeparator(); // index 5
41  		toolBar.add(createButton("button4",true));
42  		toolBar.addSeparator(); // index 7
43  		toolBar.add(createButton("button5", false));
44  
45  		SeparatorUtils.consolidateSeparators(toolBar);
46  		
47  		assertEquals(9, toolBar.getComponentCount());
48  		
49  		assertFalse(toolBar.getComponent(1).isVisible());
50  		assertFalse(toolBar.getComponent(3).isVisible());
51  		assertTrue(toolBar.getComponent(5).isVisible());
52  		assertFalse(toolBar.getComponent(7).isVisible());
53  	}
54  	
55  	public void testConsolidateSeparatorsReset() {
56  		JMenu menu = new JMenu("test-menu");
57  
58  		menu.add(createMenuItem("item1", false));
59  		menu.addSeparator(); // index 1
60  		menu.add(createMenuItem("item2", true));
61  		menu.addSeparator(); // index 3
62  		menu.add(createMenuItem("item3", false));
63  		menu.addSeparator(); // index 5
64  		menu.add(createMenuItem("item4", true));
65  		menu.addSeparator(); // index 7
66  		menu.add(createMenuItem("item5", false));
67  
68  		SeparatorUtils.consolidateSeparators(menu);
69  
70  		menu.getMenuComponent(0).setVisible(true);
71  
72  		SeparatorUtils.consolidateSeparators(menu);
73  
74  		assertTrue(((JSeparator)menu.getMenuComponent(1)).isVisible());
75  		assertFalse(((JSeparator)menu.getMenuComponent(3)).isVisible());
76  		assertTrue(((JSeparator)menu.getMenuComponent(5)).isVisible());
77  		assertFalse(((JSeparator)menu.getMenuComponent(7)).isVisible());
78  	}
79  
80  	public void testConsolidateSeparatorsInMenu() {
81  		JMenu menu = new JMenu("test-menu");
82  
83  		menu.add(createMenuItem("item1", false));
84  		menu.addSeparator(); // index 1
85  		menu.add(createMenuItem("item2", true));
86  		menu.addSeparator(); // index 3
87  		menu.add(createMenuItem("item3", false));
88  		menu.addSeparator(); // index 5
89  		menu.add(createMenuItem("item4", true));
90  		menu.addSeparator(); // index 7
91  		menu.add(createMenuItem("item5", false));
92  
93  		SeparatorUtils.consolidateSeparators(menu);
94  
95  		assertEquals(9, menu.getMenuComponentCount());
96  
97  		assertFalse(menu.getMenuComponent(1).isVisible());
98  		assertFalse(menu.getMenuComponent(3).isVisible());
99  		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 }