/** Configure outline viewer. */ protected void configureOutlineViewer() { final EditPartViewer viewer = getViewer(); viewer.setEditDomain(editor.getEditDomain()); viewer.setEditPartFactory(getEditPartFactory()); ContextMenuProvider provider = getMenuContentProvider(); viewer.setContextMenu(provider); viewer.addDropTargetListener(new JSSTemplateTransferDropTargetListener(viewer)); viewer.addDragSourceListener( new TemplateTransferDragSourceListener(viewer) { @Override protected Object getTemplate() { List<Object> models = new ArrayList<Object>(); Object obj = super.getTemplate(); if (obj == null) { List<?> selection = getViewer().getSelectedEditParts(); for (Object it : selection) { if (it instanceof EditPart) { Object model = ((EditPart) it).getModel(); if (model instanceof IDragable) { models.add(model); } if (model instanceof MBand) { BandTypeEnum bandType = ((MBand) model).getBandType(); if (BandTypeEnum.DETAIL.equals(bandType) || BandTypeEnum.GROUP_FOOTER.equals(bandType) || BandTypeEnum.GROUP_HEADER.equals(bandType)) { models.add(model); } } } } } return models; } }); // Add images drop listeners viewer.addDropTargetListener( new ImageResourceDropTargetListener(viewer, ResourceTransfer.getInstance())); viewer.addDropTargetListener( new ImageResourceDropTargetListener(viewer, FileTransfer.getInstance())); viewer.addDropTargetListener( new ImageResourceDropTargetListener(viewer, ImageURLTransfer.getInstance())); IPageSite site = getSite(); site.registerContextMenu(provider.getId(), provider, site.getSelectionProvider()); IToolBarManager tbm = site.getActionBars().getToolBarManager(); registerToolbarAction(tbm); showPage(ID_ACTION_OUTLINE); }