/* $Id: TestDetailsPane.java 18978 2011-01-24 18:25:30Z linus $ ***************************************************************************** * Copyright (c) 2009 Contributors - see below * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * tfmorris ***************************************************************************** * * Some portions of this file was previously release using the BSD License: */ // Copyright (c) 1996-2008 The Regents of the University of California. All // Rights Reserved. Permission to use, copy, modify, and distribute this // software and its documentation without fee, and without a written // agreement is hereby granted, provided that the above copyright notice // and this paragraph appear in all copies. This software program and // documentation are copyrighted by The Regents of the University of // California. The software program and documentation are supplied "AS // IS", without any accompanying services from The Regents. The Regents // does not warrant that the operation of the program will be // uninterrupted or error-free. The end-user understands that the program // was developed for research purposes and is advised not to rely // exclusively on the program for any reason. IN NO EVENT SHALL THE // UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, // SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, // ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF // THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF // SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE // PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF // CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, // UPDATES, ENHANCEMENTS, OR MODIFICATIONS. package org.argouml.ui; import javax.swing.JPanel; import javax.swing.SwingUtilities; import junit.framework.TestCase; import org.argouml.application.api.AbstractArgoJPanel; import org.argouml.cognitive.checklist.ui.InitCheckListUI; import org.argouml.cognitive.ui.InitCognitiveUI; import org.argouml.cognitive.ui.TabToDo; import org.argouml.kernel.Project; import org.argouml.kernel.ProjectManager; import org.argouml.model.InitializeModel; import org.argouml.model.Model; import org.argouml.profile.init.InitProfileSubsystem; import org.argouml.ui.targetmanager.TargetEvent; import org.argouml.ui.targetmanager.TargetManager; import org.argouml.uml.diagram.activity.ui.InitActivityDiagram; import org.argouml.uml.diagram.collaboration.ui.InitCollaborationDiagram; import org.argouml.uml.diagram.deployment.ui.InitDeploymentDiagram; import org.argouml.uml.diagram.state.ui.InitStateDiagram; import org.argouml.uml.diagram.static_structure.ui.InitClassDiagram; import org.argouml.uml.diagram.static_structure.ui.UMLClassDiagram; import org.argouml.uml.diagram.ui.InitDiagramAppearanceUI; import org.argouml.uml.diagram.use_case.ui.InitUseCaseDiagram; import org.argouml.uml.ui.InitUmlUI; import org.argouml.uml.ui.TabProps; import org.tigris.swidgets.Horizontal; /** * @author jaap.branderhorst@xs4all.nl * Jul 21, 2003 */ public class TestDetailsPane extends TestCase { private Project project; /** * @param arg0 is the name of the test case. */ public TestDetailsPane(String arg0) { super(arg0); } /* * @see junit.framework.TestCase#setUp() */ public void setUp() throws Exception { super.setUp(); InitializeModel.initializeDefault(); new InitProfileSubsystem().init(); project = ProjectManager.getManager().makeEmptyProject(); new InitUmlUI().init(); new InitCheckListUI().init(); new InitCognitiveUI().init(); new InitDiagramAppearanceUI().init(); (new InitActivityDiagram()).init(); (new InitCollaborationDiagram()).init(); (new InitDeploymentDiagram()).init(); (new InitStateDiagram()).init(); (new InitClassDiagram()).init(); (new InitUseCaseDiagram()).init(); } @Override protected void tearDown() throws Exception { ProjectManager.getManager().removeProject(project); super.tearDown(); } /** * Test setting a target. * * @exception Exception if the intTestTargetSet() encounters an error. */ public void testTargetSet() throws Exception { // Make sure this test happens on the AWT event thread SwingUtilities.invokeAndWait(new Runnable() { public void run() { intTestTargetSet(); } }); } /** * Test setting a target. */ public void intTestTargetSet() { DetailsPane pane = new DetailsPane("South", Horizontal.getInstance()); for (AbstractArgoJPanel tab : new InitUmlUI().getDetailsTabs()) { pane.addTab(tab, false); } for (AbstractArgoJPanel tab : new InitCheckListUI().getDetailsTabs()) { pane.addTab(tab, false); } for (AbstractArgoJPanel tab : new InitCognitiveUI().getDetailsTabs()) { pane.addTab(tab, true); } JPanel todoPane = pane.getTab(TabToDo.class); JPanel propertyPane = pane.getTab(TabProps.class); // JPanel docPane = pane.getTab(TabDocumentation.class); assertNotNull(todoPane); assertNotNull(propertyPane); Object o = new Object(); TargetEvent e = new TargetEvent( this, TargetEvent.TARGET_SET, new Object[] { null, }, new Object[] { o, }); pane.targetSet(e); assertEquals("1:", todoPane, pane.getTabs().getSelectedComponent()); UMLClassDiagram diagram = new UMLClassDiagram(); e = new TargetEvent( this, TargetEvent.TARGET_SET, new Object[] { o, }, new Object[] { diagram, }); pane.getTabs().setSelectedComponent(todoPane); TargetManager.getInstance().setTarget(diagram); pane.targetSet(e); assertEquals("2:", todoPane, pane.getTabs().getSelectedComponent()); Object clazz = Model.getCoreFactory().createClass(); e = new TargetEvent(this, TargetEvent.TARGET_SET, new Object[] { diagram, }, new Object[] { clazz, }); TargetManager.getInstance().setTarget(clazz); pane.targetSet(e); assertEquals("3:", todoPane, pane.getTabs().getSelectedComponent()); pane.getTabs().setSelectedComponent(todoPane); pane.targetSet(e); assertEquals("4:", todoPane, pane.getTabs().getSelectedComponent()); // TODO: at the moment setSelectedComponent doesn't take into account // the rather complex tab selection mechanism of DetailsPane. The tab // selection mechanism must be refactored. /* * commented out next piece to remove failure of testcase. The testcase * is probably correct but the implementation of DetailsPane is not pane.getTabs().setSelectedComponent(docPane); pane.targetSet(e); assertEquals(docPane, pane.getTabs().getSelectedComponent()); */ } }