Home | History | Annotate | Download | only in model
      1 /*
      2  * CDDL HEADER START
      3  *
      4  * The contents of this file are subject to the terms of the
      5  * Common Development and Distribution License (the "License").
      6  * You may not use this file except in compliance with the License.
      7  *
      8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
      9  * or http://www.opensolaris.org/os/licensing.
     10  * See the License for the specific language governing permissions
     11  * and limitations under the License.
     12  *
     13  * When distributing Covered Code, include this CDDL HEADER in each
     14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     15  * If applicable, add the following below this CDDL HEADER, with the
     16  * fields enclosed by brackets "[]" replaced with your own identifying
     17  * information: Portions Copyright [yyyy] [name of copyright owner]
     18  *
     19  * CDDL HEADER END
     20  */
     21 
     22 /*
     23  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
     24  * Use is subject to license terms.
     25  */
     26 
     27 package org.opensolaris.os.vp.panel.swing.model;
     28 
     29 import java.awt.Image;
     30 import java.util.List;
     31 import javax.swing.Icon;
     32 import org.opensolaris.os.vp.panel.common.ClientContext;
     33 import org.opensolaris.os.vp.panel.common.model.*;
     34 import org.opensolaris.os.vp.util.misc.IconUtil;
     35 import org.opensolaris.os.vp.util.swing.HasIcons;
     36 
     37 public abstract class AbstractSwingPanelDescriptor<C extends ManagedObject>
     38     extends AbstractPanelDescriptor<C> implements SwingPanelDescriptor<C>,
     39     HasIcons {
     40 
     41     //
     42     // Instance data
     43     //
     44 
     45     private List<Image> images;
     46 
     47     //
     48     // Constructors
     49     //
     50 
     51     public AbstractSwingPanelDescriptor(String id, ClientContext context) {
     52 	super(id, context);
     53     }
     54 
     55     //
     56     // HasIcon methods
     57     //
     58 
     59     /**
     60      * Default implementation that calls {@link IconUtil#getClosestIcon} with
     61      * the result of {@link #getIcons}.
     62      */
     63     @Override
     64     public Icon getIcon(int height) {
     65 	return IconUtil.getClosestIcon(getIcons(), height);
     66     }
     67 
     68     //
     69     // HasIcons methods
     70     //
     71 
     72     /**
     73      * Default implementation that returns {@code null}.
     74      */
     75     @Override
     76     public List<? extends Icon> getIcons() {
     77 	return null;
     78     }
     79 
     80     //
     81     // HasImages methods
     82     //
     83 
     84     /**
     85      * Default implementation that returns a list of {@code Image}s pulled from
     86      * any {@code ImageIcon}s in the {@link #getIcons Icon list}.
     87      */
     88     @Override
     89     public List<? extends Image> getImages() {
     90 	if (images == null) {
     91 	    images = IconUtil.getImages(getIcons());
     92 	}
     93 	return images;
     94     }
     95 }
     96