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); }