List of usage examples for org.springframework.ide.eclipse.boot.dash.model BootDashModel getRunTarget
RunTarget getRunTarget();
From source file:org.springframework.ide.eclipse.boot.dash.views.sections.BootDashUnifiedTreeSection.java
private void addDropSupport(final TreeViewer tv) { int ops = DND.DROP_COPY; final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer(); Transfer[] transfers = new Transfer[] { LocalSelectionTransfer.getTransfer() }; DropTarget dropTarget = new DropTarget(tv.getTree(), ops); dropTarget.setTransfer(transfers);/*from www . ja va2 s . c o m*/ dropTarget.addDropListener(new DropTargetAdapter() { @Override public void dragEnter(DropTargetEvent event) { checkDropable(event); } @Override public void dragOver(DropTargetEvent event) { checkDropable(event); event.feedback = DND.FEEDBACK_SELECT | DND.FEEDBACK_SCROLL; } @Override public void dropAccept(DropTargetEvent event) { checkDropable(event); } private void checkDropable(DropTargetEvent event) { if (canDrop(event)) { event.detail = DND.DROP_COPY & event.operations; } else { event.detail = DND.DROP_NONE; } } private boolean canDrop(DropTargetEvent event) { BootDashModel droppedOn = getDropTarget(event); if (droppedOn != null && droppedOn instanceof ModifiableModel) { ModifiableModel target = (ModifiableModel) droppedOn; if (transfer.isSupportedType(event.currentDataType)) { Object[] elements = getDraggedElements(); if (ArrayUtils.isNotEmpty(elements) && target.canBeAdded(Arrays.asList(elements))) { return true; } } } return false; } /** * Determines which BootDashModel a droptarget event represents (i.e. what thing * are we dropping or dragging onto? */ private BootDashModel getDropTarget(DropTargetEvent event) { Point loc = tv.getTree().toControl(new Point(event.x, event.y)); ViewerCell cell = tv.getCell(loc); if (cell != null) { Object el = cell.getElement(); if (el instanceof BootDashModel) { return (BootDashModel) el; } } //Not a valid place to drop return null; } @Override public void drop(DropTargetEvent event) { if (canDrop(event)) { BootDashModel model = getDropTarget(event); final Object[] elements = getDraggedElements(); if (model instanceof ModifiableModel) { final ModifiableModel modifiableModel = (ModifiableModel) model; Job job = new Job("Performing deployment to " + model.getRunTarget().getName()) { @Override protected IStatus run(IProgressMonitor monitor) { if (modifiableModel != null && selection != null) { try { modifiableModel.add(Arrays.asList(elements), ui); } catch (Exception e) { ui.errorPopup("Failed to Add Element", e.getMessage()); } } return Status.OK_STATUS; } }; job.schedule(); } } super.drop(event); } private Object[] getDraggedElements() { ISelection sel = transfer.getSelection(); if (sel instanceof IStructuredSelection) { return ((IStructuredSelection) sel).toArray(); } return NO_OBJECTS; } }); }