@Override protected void validate( DockTitle resource ){ if( resource != null ){ if( resource.getDockable() != getTarget() ){ throw new IllegalArgumentException( "title.getDockable() does not return target"); } if( resource.getOrigin() != getVersion() ){ throw new IllegalArgumentException( "title.getOrigin() does not return version" ); } } } }
public MovingImage create( DockController controller, DockTitle snatched ) { if( snatched.getOrigin() != null ){ DockTitleVersion origin = snatched.getOrigin(); return new UpdatingTitleMovingImage( snatched.getDockable(), origin, snatched.getOrientation() ); } /* TODO find a way to use the preferred size */ Component c = snatched.getComponent(); BufferedImage image = new BufferedImage( Math.max( 1, c.getWidth()), Math.max( 1, c.getHeight()), BufferedImage.TYPE_INT_ARGB ); Graphics graphics = image.getGraphics(); c.paint( graphics ); graphics.dispose(); TrueMovingImage moving = new TrueMovingImage(); moving.setImage( image ); return moving; }