private void selectFromWorkspace(Shell shell) { FolderSelectionDialog dialog = new FolderSelectionDialog(shell, new WorkbenchLabelProvider(), new WorkbenchContentProvider()); IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot(); dialog.setInput(workspaceRoot); dialog.setTitle("Select path"); dialog.setMessage("Select a folder or archive of from your workspace"); ViewerFilter filter = new ArchiveFileFilter((List) null, false, false); dialog.addFilter(filter); // new TypedViewerFilter(new Class[] { IProject.class, IFolder.class, IFile.class })); String entryText = _entryText.getText(); if (!entryText.trim().isEmpty()) { try { // Try to find the resource in order to pre-select it in the dialog IStringVariableManager stringVariableManager = VariablesPlugin.getDefault().getStringVariableManager(); String resolved = stringVariableManager.performStringSubstitution(entryText.trim()); Path resolvedPath = new Path(resolved); IPath relativePath = resolvedPath.makeRelativeTo(workspaceRoot.getLocation()); IResource resource = workspaceRoot.findMember(relativePath); System.out.println("resource: " + resource); dialog.setInitialSelection(resource); } catch (CoreException ex) { ex.printStackTrace(); } } if (dialog.open() == Window.OK) { IResource resource = (IResource) dialog.getFirstResult(); // resource.getLocation(); String entry = FileBasedContentEditorUtils.getProjectRelativePath(resource); // format("{workspace_loc:%s}", resource.getLocation()); _entryText.setText(entry); }}
private IContainer chooseContainer(IPath outputPath) { Class<?>[] acceptedClasses= new Class[] { IProject.class, IFolder.class }; ISelectionStatusValidator validator= new TypedElementSelectionValidator(acceptedClasses, false); IProject[] allProjects= fWorkspaceRoot.getProjects(); ArrayList<IProject> rejectedElements= new ArrayList<IProject>(allProjects.length); IProject currProject= fCurrJProject.getProject(); for (int i= 0; i < allProjects.length; i++) { if (!allProjects[i].equals(currProject)) { rejectedElements.add(allProjects[i]); } } ViewerFilter filter= new TypedViewerFilter(acceptedClasses, rejectedElements.toArray()); ILabelProvider lp= new WorkbenchLabelProvider(); ITreeContentProvider cp= new WorkbenchContentProvider(); IResource initSelection= null; if (outputPath != null) { initSelection= fWorkspaceRoot.findMember(outputPath); } FolderSelectionDialog dialog= new FolderSelectionDialog(getShell(), lp, cp); dialog.setTitle(NewWizardMessages.BuildPathsBlock_ChooseOutputFolderDialog_title); dialog.setValidator(validator); dialog.setMessage(NewWizardMessages.BuildPathsBlock_ChooseOutputFolderDialog_description); dialog.addFilter(filter); dialog.setInput(fWorkspaceRoot); dialog.setInitialSelection(initSelection); dialog.setComparator(new ResourceComparator(ResourceComparator.NAME)); if (dialog.open() == Window.OK) { return (IContainer)dialog.getFirstResult(); } return null;}
private String handleBuildWorkbenchDirectorySelection( final Shell parent ) { ILabelProvider lp = new WorkbenchLabelProvider(); ITreeContentProvider cp = new WorkbenchContentProvider(); Class<?>[] acceptedClasses = new Class[] { IProject.class, IFolder.class }; ViewerFilter filter = new TypedViewerFilter( acceptedClasses ); FolderSelectionDialog dialog = new FolderSelectionDialog( parent, lp, cp ); dialog.setTitle( "Output directory" ); dialog.setMessage( "Select output directory" ); dialog.addFilter( filter ); dialog.setInput( ResourcesPlugin.getWorkspace().getRoot() ); if ( dialog.open() == Window.OK ) { IContainer c = (IContainer) dialog.getFirstResult(); return "${workspace}/" + c.getProject().getName() + "/" + c.getProjectRelativePath().toString(); } return null;}
private void selectFolder() { try { IProject currProject = getProject(); IWorkspaceRoot wsroot = ResourcesPlugin.getWorkspace().getRoot(); IResource init = null; if (params.getRoot() != null) { init = wsroot.findMember(currProject.getName() + params.getRoot()); } Class[] acceptedClasses = new Class[] { IProject.class, IFolder.class }; ISelectionStatusValidator validator = new TypedElementSelectionValidator(acceptedClasses, false); IProject[] allProjects = wsroot.getProjects(); ArrayList<IProject> rejectedElements = new ArrayList<IProject>(allProjects.length); for (int i = 0; i < allProjects.length; i++) { if (!allProjects[i].equals(currProject)) { rejectedElements.add(allProjects[i]); } } ViewerFilter filter = new TypedViewerFilter(acceptedClasses, rejectedElements.toArray()); FolderSelectionDialog dialog = new FolderSelectionDialog( getShell(), new WorkbenchLabelProvider(), new WorkbenchContentProvider()); dialog.setTitle(HTMLPlugin.getResourceString("HTMLProjectPropertyPage.WebRoot")); dialog.setMessage(HTMLPlugin.getResourceString("HTMLProjectPropertyPage.WebRoot")); dialog.setInput(wsroot); dialog.setValidator(validator); dialog.addFilter(filter); dialog.setInitialSelection(init); if (dialog.open() == Dialog.OK) { textWebAppRoot.setText(getFolderName(dialog.getFirstResult())); } } catch (Throwable t) { HTMLPlugin.openAlertDialog(t.toString()); }}
转载于:https://my.oschina.net/u/241688/blog/314743