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 }