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): Romain Rouvoy______________________________________. 24 25 --------------------------------------------------------------------- 26 $Id: ClientInterfaceIconProvider.java,v 1.3 2004/11/15 16:44:24 moroy Exp $ 27 ====================================================================*/ 28 29 package org.objectweb.fractal.explorer.icon; 30 31 import javax.swing.Icon; 32 33 import org.objectweb.fractal.api.Component; 34 import org.objectweb.fractal.api.Interface; 35 import org.objectweb.fractal.api.NoSuchInterfaceException; 36 import org.objectweb.fractal.api.type.InterfaceType; 37 import org.objectweb.fractal.explorer.FcExplorer; 38 import org.objectweb.fractal.explorer.context.InterfaceWrapper; 39 40 /** 41 * Provides a specific icon for InterfaceReference if this one is : 42 * <br> 43 * <li>a client interface.</li> 44 * <li>not bound.</li> 45 * </br> 46 * 47 * @author <a HREF="mailto:Jerome.Moroy@lifl.fr">Jerome Moroy</a> 48 * @version 0.1 49 */ 50 public class ClientInterfaceIconProvider 51 extends InterfaceIconProvider 52 { 53 // ================================================================== 54 // 55 // Contructors. 56 // 57 // ================================================================== 58 59 /** Empty constructor. */ 60 public ClientInterfaceIconProvider() { 61 super(); 62 loadFc("Client"); 63 loadFc("ClientMandatory"); 64 loadFc("ClientOptional"); 65 } 66 67 // ================================================================== 68 // 69 // Public methods for IconProvider interface. 70 // 71 // ================================================================== 72 73 /** 74 * Provides the appropriate icon. 75 */ 76 public Object newIcon(Object obj) { 77 InterfaceWrapper ciw = (InterfaceWrapper) obj; 78 Interface itf = ciw.getItf(); 79 InterfaceType itft = (InterfaceType)itf.getFcItfType(); 80 81 if (itft.isFcOptionalItf()) 82 return (Icon) getIcons().get("ClientOptional"); 83 try { 84 Component cpt = itf.getFcItfOwner(); 85 return (Icon) (FcExplorer.getBindingController(cpt).lookupFc(itft.getFcItfName()) == null ? 86 getIcons().get("ClientMandatory") : getIcons().get("Client")); 87 } catch (NoSuchInterfaceException ex) { 88 return (Icon) getIcons().get("Client"); 89 } 90 } 91 }