Java FolderSelectionDialog 选择workspace目录

  1. 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);
    
         }}
  2. 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;}
  3. 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;}
  4. 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值