001 /*
002 * Copyright 2002-2006 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.dialog.support;
017
018 import javax.swing.JComponent;
019 import javax.swing.JLabel;
020
021 import junit.framework.TestCase;
022
023 import org.springframework.context.support.ClassPathXmlApplicationContext;
024 import org.springframework.richclient.application.Application;
025 import org.springframework.richclient.application.config.DefaultApplicationLifecycleAdvisor;
026 import org.springframework.richclient.command.ActionCommand;
027 import org.springframework.richclient.core.DefaultMessage;
028 import org.springframework.richclient.core.Guarded;
029 import org.springframework.richclient.core.Message;
030 import org.springframework.richclient.dialog.AbstractDialogPage;
031 import org.springframework.richclient.dialog.DefaultMessageAreaModel;
032 import org.springframework.richclient.dialog.DialogPage;
033 import org.springframework.richclient.dialog.TitlePane;
034
035 /**
036 * Tests for {@link DialogPageUtils}.
037 *
038 * @author Larry Streepy
039 */
040 public class DialogPageUtilsTests extends TestCase {
041
042 public void setUp() {
043 ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext(
044 "org/springframework/richclient/dialog/support/generic-application-ctx.xml");
045 Application.load(null);
046 Application app = new Application(new DefaultApplicationLifecycleAdvisor());
047 app.setApplicationContext(applicationContext);
048 }
049
050 public void testMessageMonitor() {
051 DialogPage page = new TestDialogPage();
052 TestMessagable monitor = new TestMessagable();
053 DialogPageUtils.addMessageMonitor(page, monitor);
054
055 monitor.resetMessageCount();
056 page.setMessage(new DefaultMessage("a message"));
057 assertEquals("Message text not equal", monitor.getMessage().getMessage(), "a message");
058
059 page.setMessage(new DefaultMessage("another message"));
060 assertEquals("Message text not equal", monitor.getMessage().getMessage(), "another message");
061
062 assertEquals("Message count incorrect", 2, monitor.getMessageCount());
063 }
064
065 public void testPageCompleteAdapter() {
066 TestDialogPage page = new TestDialogPage();
067 Guarded guarded = new TestGuarded();
068
069 DialogPageUtils.adaptPageCompletetoGuarded(page, guarded);
070
071 page.setPageComplete(false);
072 assertFalse("guarded should be disabled", guarded.isEnabled());
073
074 page.setPageComplete(true); // Change it
075 assertTrue("guarded should be enabled", guarded.isEnabled());
076 }
077
078 public void testStandardViewAdaptsOkCommand() {
079 TestDialogPage page = new TestDialogPage();
080
081 ActionCommand okCommand = new ActionCommand("okCommand") {
082 protected void doExecuteCommand() {
083 }
084 };
085 ActionCommand cancelCommand = new ActionCommand("cancelCommand") {
086 protected void doExecuteCommand() {
087 }
088 };
089
090 DialogPageUtils.createStandardView(page, okCommand, cancelCommand);
091
092 page.setPageComplete(false);
093 assertFalse("okCommand should be disabled", okCommand.isEnabled());
094
095 page.setPageComplete(true);
096 assertTrue("okCommand should be enabled", okCommand.isEnabled());
097 }
098
099 public void testCreateTitlePane() {
100 TestDialogPage page = new TestDialogPage();
101
102 TitlePane titlePane = DialogPageUtils.createTitlePane(page);
103
104 page.setMessage(new DefaultMessage("test message"));
105 assertEquals("Message text not equal", titlePane.getMessage().getMessage(), "test message");
106 }
107
108 /**
109 * Class to provide a concrete DialogPage for testing.
110 */
111 private class TestDialogPage extends AbstractDialogPage {
112
113 public TestDialogPage() {
114 super("MyPageId");
115 }
116
117 protected JComponent createControl() {
118 return new JLabel();
119 }
120 }
121
122 /**
123 * Class to inspect Messagable operations.
124 */
125 private class TestMessagable extends DefaultMessageAreaModel {
126
127 private int msgCount = 0;
128
129 public void setMessage( Message message ) {
130 msgCount += 1;
131 super.setMessage(message);
132 }
133
134 public int getMessageCount() {
135 return msgCount;
136 }
137
138 public void resetMessageCount() {
139 msgCount = 0;
140 }
141 }
142
143 /**
144 * Class to inspect Guarded operations.
145 */
146 private class TestGuarded implements Guarded {
147 private boolean enabled = false;
148
149 public boolean isEnabled() {
150 return enabled;
151 }
152
153 public void setEnabled( boolean enabled ) {
154 this.enabled = enabled;
155 }
156 }
157 }