001    /*
002     * Copyright 1999-2004 The Apache Software Foundation.
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of 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,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.springframework.richclient.command.config;
017    
018    import javax.swing.AbstractButton;
019    
020    import org.springframework.richclient.command.ActionCommand;
021    import org.springframework.richclient.test.SpringRichTestCase;
022    
023    /**
024     * MultiFacedEnablingTests was built to check up on the issue reported as <a
025     * href="http://opensource.atlassian.com/projects/spring/browse/RCP-73">RCP-73 </a>.
026     */
027    public class MultiFacedEnablingTests extends SpringRichTestCase
028    {
029        private static final String ALTERNATE_ID = "otherId";
030        private static final String MAIN_ID = "someid";
031    
032        /**
033         * Big idea of the test:
034         * <ol>
035         * <li>create silly command</li>
036         * <li>register additional command face to it, and create a button that uses that.</li>
037         * <li>disable/enable the command --> check if all buttons follow up on the changes</li>
038         * </ol>
039         */
040        public void testMultifacedCommandDisabling()
041        {
042            ActionCommand command = new ActionCommand(MAIN_ID)
043            {
044    
045                protected void doExecuteCommand()
046                {
047                    // does nothing during this test anyway
048                }
049            };
050    
051            AbstractButton standardButton = command.createButton();
052    
053            // test this dude's enabling
054            command.setEnabled(false);
055            assertFalse("standard face button didn't follow up on the command's disabling", standardButton
056                    .isEnabled());
057            command.setEnabled(true);
058            assertTrue("standard face button didn't follow up on the command's enabling", standardButton
059                    .isEnabled());
060    
061            // register an alternative face to this command
062            CommandFaceDescriptor face = new CommandFaceDescriptor();
063            command.setFaceDescriptor(ALTERNATE_ID, face);
064    
065            // and get us a button with that face
066            AbstractButton otherFacedButton = command.createButton(ALTERNATE_ID);
067    
068            // test this newly faced dude
069            command.setEnabled(false);
070            assertFalse("alternative face button didn't follow up on the command's disabling", otherFacedButton
071                    .isEnabled());
072            command.setEnabled(true);
073            assertTrue("alternative face button didn't follow up on the command's enabling", otherFacedButton
074                    .isEnabled());
075    
076        }
077    }