@Override protected void doRun() { RepositoryNode routineNode = getCurrentRepositoryNode(); if (isToolbar()) { if (routineNode != null && routineNode.getContentType() != ERepositoryObjectType.PIG_UDF) { routineNode = null; } if (routineNode == null) { routineNode = getRepositoryNodeForDefault(ERepositoryObjectType.PIG_UDF); } } RepositoryNode node = null; IPath path = null; if (!isToolbar()) { ISelection selection = getSelection(); Object obj = ((IStructuredSelection) selection).getFirstElement(); node = (RepositoryNode) obj; path = RepositoryNodeUtilities.getPath(node); } NewPigudfWizard routineWizard = new NewPigudfWizard(path); WizardDialog dlg = new WizardDialog(Display.getCurrent().getActiveShell(), routineWizard); if (dlg.open() == Window.OK) { try { openRoutineEditor(routineWizard.getPigudf(), false); } catch (PartInitException e) { MessageBoxExceptionHandler.process(e); } catch (SystemException e) { MessageBoxExceptionHandler.process(e); } } }
@Override public boolean select(Viewer viewer, Object parentElement, Object element) { if (element instanceof RepositoryNode) { RepositoryNode node = (RepositoryNode) element; if (ERepositoryObjectType.REFERENCED_PROJECTS.equals(node.getContentType())) { return true; } IRepositoryNode typeNode = node.getRoot().getRootRepositoryNode(repositoryType); if (typeNode == node) { return true; } if (repositoryType.equals(node.getContentType())) { return true; } return false; } return true; // if others, no filter }
/* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, * java.lang.Object) */ @Override public boolean select(Viewer viewer, Object parentElement, Object element) { if (element instanceof TreeItem) { Object data = ((TreeItem) element).getData(); if (parentElement instanceof TreeItem) { Object parentData = ((TreeItem) parentElement).getData(); return select(viewer, parentData, data); } return select(viewer, parentElement, data); } else if (element instanceof RepositoryNode) { RepositoryNode node = ((RepositoryNode) element); // only for folders , not for element nodes. if (!ENodeType.REPOSITORY_ELEMENT.equals(node.getType())) { // add all or only the content types if (contentTypes == null || contentTypes.contains(node.getContentType())) { return true; } } } return false; }