package org.korsakow.ide.ui.dnd; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.IOException; import java.util.Arrays; import org.korsakow.ide.resources.WidgetType; public class WidgetTypeTransferable implements Transferable { public static class IsAltDown{} public static final DataFlavor ALT_STATUS_FLAVOR = new DataFlavor(IsAltDown.class, "Is alt down"); private final boolean isAltDown; private final WidgetType widgetType; public WidgetTypeTransferable(WidgetType widgetType, boolean isAltDown) { this.widgetType = widgetType; this.isAltDown = isAltDown; } public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (flavor == DataFlavors.WidgetType) return widgetType; else if (flavor == ALT_STATUS_FLAVOR) return isAltDown; throw new UnsupportedFlavorException(flavor); } public DataFlavor[] getTransferDataFlavors() { return new DataFlavor[]{DataFlavors.WidgetType, ALT_STATUS_FLAVOR}; } public boolean isDataFlavorSupported(DataFlavor flavor) { return Arrays.asList(getTransferDataFlavors()).contains(flavor); } }