/** * */ package org.korsakow.ide.ui.controller.dnd; import java.awt.Dimension; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.dnd.DropTargetDragEvent; import java.io.IOException; import org.apache.log4j.Logger; import org.dsrg.soenea.domain.MapperException; import org.korsakow.domain.interf.ISnu; import org.korsakow.domain.mapper.input.SnuInputMapper; import org.korsakow.ide.Application; import org.korsakow.ide.resources.media.MediaFactory; import org.korsakow.ide.resources.media.Playable; import org.korsakow.ide.resources.widget.WidgetModel; import org.korsakow.ide.ui.dnd.DataFlavors; import org.korsakow.ide.ui.interfacebuilder.WidgetCanvas; import org.korsakow.ide.ui.interfacebuilder.widget.SnuFixedLink; public class SnuDropTarget extends AbstractWidgetDropTarget { public SnuDropTarget(WidgetCanvas canvas) { super(canvas); } @Override protected WidgetModel getTransferWidget(DropTargetDragEvent dtde) { try { ISnu snu = SnuInputMapper.map( (Long)dtde.getTransferable().getTransferData(DataFlavors.SnuFlavor) ); SnuFixedLink widget = new SnuFixedLink(); Playable playable = MediaFactory.getMediaNoThrow( snu.getMainMedia() ); Dimension preferredSize = playable.getComponent().getPreferredSize(); widget.setWidth(preferredSize.width); widget.setHeight(preferredSize.height); widget.setSnu(snu.getId()); return widget; } catch (UnsupportedFlavorException e) { Logger.getLogger(WidgetCanvas.class).error(e); return null; } catch (IOException e) { Logger.getLogger(WidgetCanvas.class).error(e); return null; } catch (MapperException e) { Application.getInstance().showUnhandledErrorDialog( e ); return null; } } }