001/** 002 * 003 */ 004package plugins.kernel.roi.descriptor.property; 005 006import icy.plugin.abstract_.Plugin; 007import icy.plugin.interface_.PluginROIDescriptor; 008import icy.roi.ROI; 009import icy.roi.ROIDescriptor; 010import icy.sequence.Sequence; 011 012import java.util.ArrayList; 013import java.util.HashMap; 014import java.util.List; 015import java.util.Map; 016 017/** 018 * This {@link PluginROIDescriptor} implements the properties ROI descriptors:<br/> 019 * <li>Name</li><br/> 020 * <li>Color</li><br/> 021 * <li>Opacity</li><br/> 022 * <li>Read only</li> 023 * 024 * @author Stephane 025 */ 026public class ROIPropertyDescriptorsPlugin extends Plugin implements PluginROIDescriptor 027{ 028 public static final String ID_ICON = ROIIconDescriptor.ID; 029 public static final String ID_NAME = ROINameDescriptor.ID; 030 public static final String ID_COLOR = ROIColorDescriptor.ID; 031 public static final String ID_OPACITY = ROIOpacityDescriptor.ID; 032 public static final String ID_READONLY = ROIReadOnlyDescriptor.ID; 033 034 public static final ROIIconDescriptor iconDescriptor = new ROIIconDescriptor(); 035 public static final ROINameDescriptor nameDescriptor = new ROINameDescriptor(); 036 public static final ROIGroupIdDescriptor groupIdDescriptor = new ROIGroupIdDescriptor(); 037 public static final ROIColorDescriptor colorDescriptor = new ROIColorDescriptor(); 038 public static final ROIOpacityDescriptor opacityDescriptor = new ROIOpacityDescriptor(); 039 public static final ROIReadOnlyDescriptor readOnlyDescriptor = new ROIReadOnlyDescriptor(); 040 041 @Override 042 public List<ROIDescriptor> getDescriptors() 043 { 044 final List<ROIDescriptor> result = new ArrayList<ROIDescriptor>(); 045 046 result.add(iconDescriptor); 047 result.add(nameDescriptor); 048 result.add(groupIdDescriptor); 049 result.add(colorDescriptor); 050 result.add(opacityDescriptor); 051 result.add(readOnlyDescriptor); 052 053 return result; 054 } 055 056 @Override 057 public Map<ROIDescriptor, Object> compute(ROI roi, Sequence sequence) throws UnsupportedOperationException 058 { 059 final Map<ROIDescriptor, Object> result = new HashMap<ROIDescriptor, Object>(); 060 061 try 062 { 063 // compute descriptors 064 result.put(iconDescriptor, ROIIconDescriptor.getIcon(roi)); 065 result.put(nameDescriptor, ROINameDescriptor.getName(roi)); 066 result.put(groupIdDescriptor, ROIGroupIdDescriptor.getGroupId(roi)); 067 result.put(colorDescriptor, ROIColorDescriptor.getColor(roi)); 068 result.put(opacityDescriptor, Float.valueOf(ROIOpacityDescriptor.getOpacity(roi))); 069 result.put(readOnlyDescriptor, Boolean.valueOf(ROIReadOnlyDescriptor.getReadOnly(roi))); 070 } 071 catch (Exception e) 072 { 073 final String mess = getClass().getSimpleName() + ": cannot compute descriptors for '" + roi.getName() + "'"; 074 throw new UnsupportedOperationException(mess, e); 075 } 076 077 return result; 078 } 079}