public EntryContentProposal(MapperManager mapperManager, AbstractNode entry) { this.mapperManager = mapperManager; this.entry = entry; if (entry instanceof TreeNode) { content = XmlMapUtil.convertToExpression(((TreeNode) entry).getXpath()); } else if (entry instanceof VarNode) { VarNode varNode = (VarNode) entry; VarTable varTabel = (VarTable) varNode.eContainer(); content = varTabel.getName() + XmlMapUtil.EXPRESSION_SEPARATOR + varNode.getName(); } }
/** * DOC talend Comment method "getTemplate". * * @param event * @return the validate drag able node list */ @Override protected Object getTemplate(DragSourceEvent event) { final RootEditPart rootEditPart = getViewer().getRootEditPart(); if (rootEditPart instanceof AbstractGraphicalEditPart) { AbstractGraphicalEditPart graphicPart = (AbstractGraphicalEditPart) rootEditPart; final IFigure figure = graphicPart.getFigure(); final IFigure findFigureAt = figure.findFigureAt(new Point(event.x, event.y)); if (findFigureAt instanceof ISash) { return findFigureAt; } } List<EditPart> filtedSelection = new ArrayList<EditPart>(); for (Object part : getViewer().getSelectedEditParts()) { if (part instanceof TreeNodeEditPart || part instanceof VarNodeEditPart) { filtedSelection.add((EditPart) part); } } if (filtedSelection == null || filtedSelection.isEmpty()) { return null; } List toTransfer = new ArrayList(); TransferdType type = null; List<TableEntityPart> partList = new ArrayList<TableEntityPart>(); EditPart lastSelection = filtedSelection.get(filtedSelection.size() - 1); if (lastSelection instanceof TreeNodeEditPart && !(lastSelection instanceof OutputTreeNodeEditPart)) { type = TransferdType.INPUT; } else if (lastSelection instanceof VarNodeEditPart) { type = TransferdType.VAR; } if (type != null) { if (filtedSelection.size() > 1) { partList.addAll(lastSelection.getParent().getChildren()); Map<EditPart, Integer> partAndIndex = new HashMap<EditPart, Integer>(); if (type == TransferdType.INPUT) { for (EditPart treePart : filtedSelection) { if (!XmlMapUtil.isDragable((TreeNode) treePart.getModel())) { return null; } } MapperTablePart abstractInOutTreePart = MapperUtils.getMapperTablePart((TableEntityPart) lastSelection); if (abstractInOutTreePart != null) { partList = MapperUtils.getFlatChildrenPartList(abstractInOutTreePart); } } else { partList.addAll(lastSelection.getParent().getChildren()); } for (EditPart selected : filtedSelection) { int indexOf = partList.indexOf(selected); if (indexOf != -1) { partAndIndex.put(selected, indexOf); int index = 0; for (int i = 0; i < toTransfer.size(); i++) { if (indexOf > partAndIndex.get(toTransfer.get(i))) { index = i + 1; } } toTransfer.add(index, selected); } } } else { if (lastSelection.getModel() instanceof TreeNode && !XmlMapUtil.isDragable((TreeNode) lastSelection.getModel())) { return null; } toTransfer.add(lastSelection); } return new TransferedObject(toTransfer, type); } return null; }