1 /*==================================================================== 2 3 Objectweb Browser Framework 4 Copyright (C) 2000-2004 INRIA & USTL - LIFL - GOAL 5 Contact: openccm@objectweb.org 6 7 This library is free software; you can redistribute it and/or 8 modify it under the terms of the GNU Lesser General Public 9 License as published by the Free Software Foundation; either 10 version 2.1 of the License, or any later version. 11 12 This library is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 Lesser General Public License for more details. 16 17 You should have received a copy of the GNU Lesser General Public 18 License along with this library; if not, write to the Free Software 19 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 20 USA 21 22 Initial developer(s): Jerome Moroy. 23 Contributor(s): ______________________________________. 24 25 --------------------------------------------------------------------- 26 $Id: RemoveComponentAction.java,v 1.3 2004/11/15 16:44:24 moroy Exp $ 27 ====================================================================*/ 28 29 package org.objectweb.fractal.explorer.menu; 30 31 import org.objectweb.fractal.api.Component; 32 import org.objectweb.fractal.api.Interface; 33 import org.objectweb.fractal.api.NoSuchInterfaceException; 34 import org.objectweb.fractal.api.control.ContentController; 35 import org.objectweb.fractal.api.control.LifeCycleController; 36 import org.objectweb.fractal.explorer.FcExplorer; 37 import org.objectweb.util.explorer.api.MenuItem; 38 import org.objectweb.util.explorer.api.MenuItemTreeView; 39 import org.objectweb.util.explorer.api.TreeView; 40 41 /** 42 * This action allows to unbind an interface. 43 * 44 * @author <a HREF="mailto:Jerome.Moroy@lifl.fr">Jerome Moroy</a> 45 * @version 0.1 46 */ 47 public class RemoveComponentAction 48 implements MenuItem 49 { 50 //================================================================== 51 // 52 // No internal states. 53 // 54 //================================================================== 55 56 //================================================================== 57 // 58 // No constructor. 59 // 60 //================================================================== 61 62 //================================================================== 63 // 64 // No Internal method. 65 // 66 //================================================================== 67 68 //================================================================== 69 // 70 // Public methods for MenuItem interface. 71 // 72 //================================================================== 73 74 /* (non-Javadoc) 75 * @see org.objectweb.util.explorer.api.MenuItem#getStatus(org.objectweb.util.explorer.api.TreeView) 76 */ 77 public int getStatus(TreeView treeView) { 78 Object object = treeView.getSelectedObject(); 79 if(!(object instanceof Component)) { 80 return MenuItem.NOT_VISIBLE_STATUS; 81 } 82 Interface contentController = (Interface)treeView.getParentObject(); 83 Component component = contentController.getFcItfOwner(); 84 try { 85 LifeCycleController lcc = FcExplorer.getLifeCycleController(component); 86 String status = lcc.getFcState(); 87 if (status.equals(LifeCycleController.STARTED)) 88 // The component is started 89 return MenuItem.DISABLED_STATUS; 90 } catch (NoSuchInterfaceException e) { } 91 return MenuItem.ENABLED_STATUS; 92 } 93 94 /* (non-Javadoc) 95 * @see org.objectweb.util.explorer.api.MenuItem#actionPerformed(org.objectweb.util.explorer.api.MenuItemTreeView) 96 */ 97 public void actionPerformed(MenuItemTreeView e) throws Exception{ 98 ContentController contentInterface = (ContentController)e.getParentObject(); 99 Component component = (Component)e.getSelectedObject(); 100 contentInterface.removeFcSubComponent(component); 101 } 102 103 }