@Override public void mousePressed(MouseEvent me) { if (me.getSource() instanceof ExpandCollapseFigure) { ExpandCollapseFigure ecFigure = (ExpandCollapseFigure) me.getSource(); EntitySelectManager manager = EntitySelectManager.getManager(); if (ecFigure.getParent().getParent() instanceof TableEntityElement) { TableEntityElement rowFigure = (TableEntityElement) ecFigure.getParent().getParent(); manager.setSelection(rowFigure); // select first TableTreeEntityFigure treeNodeFigure = ecFigure.getParent().getEntityFigure(); if (treeNodeFigure != null) { expanded = treeNodeFigure.isExpanded(); treeNodeFigure.doExpandCollapse(); } } } MapperTablePart tablePart = MapperUtils.getMapperTablePart((TableEntityPart) getHost()); if (tablePart instanceof OutputTablePart) { TableEntityPart host = (TableEntityPart) getHost(); host.refreshChildrenTargetConnections(host, expanded); } else if (getHost() instanceof InputTablePart) { TableEntityPart host = (TableEntityPart) getHost(); host.refreshChildrenSourceConnections(host, expanded); } }
/** * 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; }