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}