001 /*
002 * Copyright 2002-2004 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.settings.support;
017
018 import javax.swing.JLabel;
019 import javax.swing.JSplitPane;
020
021 import org.springframework.richclient.settings.TransientSettings;
022
023 import junit.framework.TestCase;
024
025 /**
026 * @author Peter De Bruycker
027 */
028 public class SplitPaneMementoTests extends TestCase {
029 private JSplitPane splitPane;
030
031 private TransientSettings settings;
032
033 public void testConstructor() {
034 try {
035 new SplitPaneMemento(null);
036 fail("Should throw IllegalArgumentException");
037 } catch (IllegalArgumentException e) {
038 // test passes
039 }
040
041 try {
042 splitPane.setName(null);
043 new SplitPaneMemento(splitPane, "");
044 fail("Should throw IllegalArgumentException: splitPane has no name");
045 } catch (Exception e) {
046 // test passes
047 }
048
049 splitPane.setName("splitPane0");
050
051 SplitPaneMemento memento = new SplitPaneMemento(splitPane);
052 assertEquals(splitPane, memento.getSplitPane());
053 assertEquals("splitPane0", memento.getKey());
054
055 memento = new SplitPaneMemento(splitPane, "key");
056 assertEquals(splitPane, memento.getSplitPane());
057 assertEquals("key", memento.getKey());
058 }
059
060 public void testSaveState() {
061 SplitPaneMemento memento = new SplitPaneMemento(splitPane, "split");
062
063 splitPane.setDividerLocation(333);
064
065 memento.saveState(settings);
066
067 assertEquals(333, settings.getInt("split.dividerLocation"));
068 }
069
070 public void testRestoreState() {
071 SplitPaneMemento memento = new SplitPaneMemento(splitPane, "split");
072
073 splitPane.setDividerLocation(333);
074 assertEquals(333, splitPane.getDividerLocation());
075
076 settings.setInt("split.dividerLocation", 250);
077
078 memento.restoreState(settings);
079
080 assertEquals(250, splitPane.getDividerLocation());
081 }
082
083 protected void setUp() throws Exception {
084 splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
085 splitPane.setLeftComponent(new JLabel("Left"));
086 splitPane.setRightComponent(new JLabel("Right"));
087 splitPane.setSize(800, 600);
088
089 settings = new TransientSettings();
090 }
091 }