code: private void showEndAnimation(Command callback, int top, int left, boolean isDrop) {
  
          if (!isAnimationEnabled() || (m_dragHelper == null)) {
              callback.execute();
              return;
          }
          switch (m_animationType) {
              case SPECIAL:
                  List<Element> overlays = CmsDomUtil.getElementsByClass(
                      I_CmsLayoutBundle.INSTANCE.generalCss().disablingOverlay(),
                      m_draggable.getElement());
                  Element overlay = overlays.size() > 0 ? overlays.get(0) : null;
                  m_currentAnimation = new SpecialAnimation(
                      m_dragHelper,
                      m_draggable.getElement(),
                      overlay,
                      callback,
                      isDrop);
  
                  break;
  
              case MOVE:
                  Element parentElement = m_dragHelper.getParentElement();
                  int endTop = top - parentElement.getAbsoluteTop();
                  int endLeft = left - parentElement.getAbsoluteLeft();
                  int startTop = CmsDomUtil.getCurrentStyleInt(m_dragHelper, Style.top);
                  int startLeft = CmsDomUtil.getCurrentStyleInt(m_dragHelper, Style.left);
                  m_currentAnimation = new CmsMoveAnimation(m_dragHelper, startTop, startLeft, endTop, endLeft, callback);
                  break;
  
              default:
                  // nothing to do
          }
          m_currentAnimation.run(400);
      }
docs: Shows the end animation on drop or cancel. Executes the given callback afterwards.<p>
  
  @param callback the callback to execute
  @param top absolute top of the animation end position
  @param left absolute left of the animation end position
  @param isDrop if the animation is done on drop