code: @Override
      public void dragDropped(final DragEvent dragEvent) {
  
          // System.out.println("drag DROPPED");
  
          /* data dropped */
          /* if there is a string data on dragboard, read it and use it */
          final Dragboard db = dragEvent.getDragboard();
          boolean success = false;
  
          if (db.hasContent(CustomDataFormat.DOCKABLE)) {
  
              final Dockable serializedTab = (Dockable) db.getContent(CustomDataFormat.DOCKABLE);
              final ToggleButton b = controller().view().getButtonByTab(serializedTab);
  
              final Pane targetBox = controller().view().getBox();
  
              int idx = controller().view().removeMarker();
  
              System.out.println("Add tab " + serializedTab.name() + " at " + idx);
  
              if (targetBox.getChildren().contains(b)) {
  
                  final Dockable realTab = (Dockable) b.getUserData();
                  final int currentIdx = targetBox.getChildren().indexOf(b);
                  
                  // Same tab is moved at the end so we have to remove one to the marker position
                  if (currentIdx < idx) {
                  	 idx--;
                  }
                  // targetBox.getChildren().remove(b);
                  // targetBox.getChildren().add(idx, b);
                  // getController().getView().removeMarker();
                  if (currentIdx != idx) {
                      controller().model().object().tabs().remove(realTab);
  
                      controller().model().object().tabs().add(idx, realTab);
  
                      b.fire();
                  }
              } else {
  
                  final Node n = (Node) dragEvent.getGestureSource();
  
                  final ScaleTransition st = new ScaleTransition(Duration.millis(600));
                  st.setNode(n);
                  st.setFromX(1.0);
                  st.setToX(0.0);
                  st.setOnFinished(event -> ((Pane) n.getParent()).getChildren().remove(n));
  
                  st.play();
  
                  controller().model().doInsertTab(idx, serializedTab, null);
              }
              success = true;
          }
          /*
           * let the source know whether the string was successfully transferred and used
           */
          dragEvent.setDropCompleted(success);
  
          dragEvent.consume();
      }
docs: {@inheritDoc}