public NativeStackPresentation(Composite parent, IStackPresentationSite stackSite) {
    super(stackSite);

    tabFolder = new TabFolder(parent, tabPos);

    // listener to switch between visible tabItems
    tabFolder.addListener(SWT.Selection, selectionListener);

    // listener to resize visible components
    tabFolder.addListener(SWT.Resize, resizeListener);

    // listen for mouse down on tab to set focus.
    tabFolder.addMouseListener(mouseListener);

    tabFolder.addListener(SWT.MenuDetect, menuListener);

    dragListener =
        new Listener() {
          public void handleEvent(Event event) {
            Point localPos = new Point(event.x, event.y);
            //				TabItem tabUnderPointer = tabFolder.getItem(localPos);
            TabItem tabUnderPointer = null;

            if (tabUnderPointer == null) {
              return;
            }

            IPresentablePart part = getPartForTab(tabUnderPointer);

            if (getSite().isPartMoveable(part)) {
              getSite().dragStart(part, tabFolder.toDisplay(localPos), false);
            }
          }
        };

    PresentationUtil.addDragListener(tabFolder, dragListener);
  }