`
yianpuodiaotu
  • 浏览: 241692 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Dialog:Select Container(容器选择)

阅读更多

1.在创建项目/文件的时候,我们通常需要选择项目/文件的存放位置:这就涉及到select Container

 

 

2.在java中我们使用org.eclipse.ui.dialogs.ContainerSelectionDialog 来处理“文件夹” 的选择问题。

 

具体代码如下:

//按钮代码
Button button = new Button(container, SWT.PUSH);
		button.setText(Messages.getString("NewFileWizardPage.BrowseButtonLabel")); 
		button.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent e) {
				handleBrowse();
			}
		});

//事件处理
private void handleBrowse() {
		ContainerSelectionDialog dialog = new ContainerSelectionDialog(
				getShell(),
				ResourcesPlugin.getWorkspace().getRoot(),
				false,
				Messages.getString("NewFileWizardPage.ContainerSelectionTitle")); //$NON-NLS-1$
		if (dialog.open() == ContainerSelectionDialog.OK) {
			Object[] result = dialog.getResult();
			if (result.length == 1) {
				containerText.setText(((Path) result[0]).toString());
			}
		}
	}

效果见下图:文件夹选择效果图

 

3.有时我们要选择的存放路径使用“文件夹”比较麻烦,而需要使用“package”来处理:

org.eclipse.ui.dialogs.SelectionDialog ;

示例代码如下:

protected IJavaProject project;
...... ……

       packageButton = new Button(container, SWT.PUSH);
       packageButton.setText("选择...");
       //--------------------------------------------------
       packageButton.addMouseListener(new MouseListener() {
       public void mouseDown(MouseEvent e) {
               if (project != null)
                   try {
                       SearchEngine.createWorkspaceScope();
                       SelectionDialog sd = JavaUI.createPackageDialog(getShell(), project, 32);
                       sd.open();
                       Object objects[] = sd.getResult();
                       if (objects != null && objects.length > 0) {
                           IPackageFragment pf = (IPackageFragment) objects[0];
                           packageText.setText(pf.getElementName());
                       }
                   } catch (JavaModelException jme) {
                       jme.printStackTrace();
                   }
           }

           public void mouseDoubleClick(MouseEvent mouseevent) {
           }

           public void mouseUp(MouseEvent mouseevent) {
           }

       });

另外在也在http://www.cntesting.com/bbs/simple/index.php?t2468.html的网站上见到一些常用的Dialog例子,摘抄如下:

A:ContainerSelectionDialog
其实这个Dialog并不属于jdt.internal.ui,属于eclipse.core.resources中的内容,但是他们在使用的过程中方式很类似,我就一并归纳于此。
   ContainerSelectionDialog用来提供一个资源容器的选择对话框。资源容器概念源于Eclipse的Resource透视图,它是 一个基本的通用视图集,用于管理项目以及查看和编辑项目中的文件。相信大家应该在切换Java透视图与Resource透视图的时候已经体会到 Resource的含义。ContainerSelectionDialog就是用来选择这些文件的容器。

  以下是一段示例代码:

ContainerSelectionDialog dialog =new ContainerSelectionDialog(...);
 if (dialog.open() == ContainerSelectionDialog.OK) {
    Object[] result = dialog.getResult();
    String containerFullName = ((Path)result[0]).toOSString();
     createFile();
  }

  public void createFile(){
      这里可以完成在选择的容器内创建文件的操作,这不属于本贴的范畴,以后再说
  }

效果如下:

B:TypeSelectionDialog
TypeSelectionDialog是JDT内核中的一个UI显示部件,是不鼓励使用的,不过我觉得很好用,拿来与大家分享,呵呵:)
TypeSelectionDialog提供一个在给定的搜索域内搜索Java Type的选择对话框。比如我们在新建Class时选择Super Class时那样。选择后得到了一个或多个Eclipse平台提供的针对Java Type的对象:IType。
所以在使用时,需要以下几步工作:
1、利用SearchEngine创建搜索域
2、指定搜索内容为Class还是Interface还是其它的什么
3、创建Dialog:

try{
        TypeSelectionDialog2 dialog = new TypeSelectionDialog2(...);
        dialog.setFilter(...);
        dialog.setTitle(...);
        dialog.setMessage(...);
       
        if (dialog.open() == IDialogConstants.CANCEL_ID)
          return;

        Object[] types= dialog.getResult();
        if (types == null || types.length == 0)
          return;
       
        IType type = (IType)types[0];
        IResource res = type.getResource();
    }catch(Exception e){
        ...
    }

效果如下:

C:ElementTreeSelectionDialog
ElementTreeSelectionDialog不属于JDT内核UI,但是我们构造了合适的validator和filter之后, ElementTreeSelectionDialog就可以提供出一个选择Java源文件容器的对话框,在Eclipse JDT 的概念中,Java程序中的每一个Package叫做IPackageFragment,那么这个Java源文件容器叫做 IPackageFragmentRoot。
示例代码:

ElementTreeSelectionDialog dialog= new ElementTreeSelectionDialog(...);
     dialog.setValidator(validator);//校验所选中的是否是合法的
    dialog.setSorter(new JavaElementSorter());
     dialog.setTitle("Select Java Source Container");
     dialog.setMessage("Select one of java source containers from workspace.");
     dialog.addFilter(filter);//对于选择操作的过滤
     dialog.setInput(IJavaModel)//将工作区的Java模型传入
     dialog.setInitialSelection(fWorkspaceRoot.getProject());//初始选择

效果图:

D:ElementListSelectionDialog
  ElementListSelectionDialog也不是JDT核心UI,但是我们通过构造这个Dialog中的元素列表,让其提供出一个Java 程序中Package选择列表对话框。

ElementListSelectionDialog dialog = new ElementListSelectionDialog(
                getShell(), new LabelProvider());
        dialog.setIgnoreCase(false);
        dialog.setElements(getAllPackages().toArray());
        String path = currentPackage();
        dialog.setInitialSelections(new Object[] { path });
        dialog.open();
        fPKName.setText((String) dialog.getFirstResult());
        
        public List getAllPackages() {
        	List list = new ArrayList();
        	IResource res = getFirstSelection();
        	IProject project = res.getProject();
        	File file = project.getFolder("src").getLocation().toFile();
        	File[] fs = file.listFiles();
        	for (int i = 0; i < fs.length; i++) {
        		if (fs[i].isDirectory())
        			iterator("", fs[i], list);
        	}
        	Collections.sort(list);
        	return list;
        }

效果图:

  • 描述: select Container效果图
  • 大小: 12.6 KB
  • 描述: ElementTreeSelectionDialog
  • 大小: 29.6 KB
  • 大小: 20.2 KB
分享到:
评论

相关推荐

    3dmax2012中英文对照表

    "Open Container Explorer"、"New Scene Explorer"、"Manage Scene Explorer"、"Save Scene Explorer" 等是关于容器资源管理的功能,用于组织和管理场景内容。 5. **图层管理**:"Manage Layer..." 提供了对图层的...

    ElementUI v2.15 使用手册.pdf

    - **Layout布局**:包括Container容器、Color色彩、Typography字体、Border边框、Icon图标、Button按钮、Link文字链接等。 - **Form表单组件**:包含Radio单选框、Checkbox多选框、Input输入框、InputNumber计数器、...

    Element-UI使用手册1

    - **Container布局容器**:提供Row和Col组件,帮助开发者实现响应式的栅格布局系统。 - **Color色彩**:定义了一套标准的颜色方案,便于统一应用中的色彩风格。 - **Typography字体**:包含文字相关的样式,如...

    CSS命名规则[参考].pdf

    - 常量命名:通常全大写,如`SQL_SELECT_CATEGORIES`。 3. **推荐的CSS命名方式**: - [模块前缀] + [功能标识] + [模块后缀] - 例如,`wrapperDetails`,`section01`,`btnSubmit02`等,这种命名方式清晰地表达...

    ElementUI v2.13 使用手册.pdf

    2. **Container 布局容器**:用于构建复杂的布局结构,包含 header、footer、aside、main 等多个区域。 3. **Color 色彩**:定义了 ElementUI 的标准色板及其应用规范。 4. **Typography 字体**:定义了文本的大小、...

    element-ui 离线中文文档api下载 版本2.4

    Container(容器)、Header(头部)、Main(主体)、Footer(底部)则用于构建页面结构。 3. **表单组件**:Input(输入框)、DatePicker(日期选择器)、TimePicker(时间选择器)、Cascader(级联选择)、Form...

    elementUI axsure 元件库

    3. **布局组件**(Layout Components):如栅格系统(Grid)、容器(Container)、内容(Content)和边栏(Aside),帮助设计师构建响应式页面布局。 4. **数据展示组件**(Data Display Components):如表格...

    Vue2+Element ui通用后台

    - **布局组件**:如`el-row`和`el-col`用于栅格布局,`el-container`用于容器管理。 - **表单组件**:`el-form`、`el-form-item`、`el-input`、`el-select`等,用于创建交互式的表单。 - **数据展示组件**:`el-...

    excel-vb常用词汇252个

    `Case`是`Select Case`语句的一部分,用于进行多分支选择。 #### CHchangedir 改变目录 `ChDir`函数用于改变当前工作目录。 #### Change 改变 `Change`通常用于描述状态或值的变化。 #### Character 字符 `...

    boostrap_learn

    例如,`.container`用于创建一个可调整宽度的容器,`.row`用于创建栅格系统的行,`.col-*`则用于定义列的数量。 3. **导航栏(Navbar)**:Bootstrap的导航栏组件是一个强大且灵活的工具,常用于网站顶部。它支持...

    Visual Basic 6编程技术大全 中译本扫描版带书签 2/2

    1.1.2 选择工程类型1 1.1.3 IDE窗口2 1.1.4 菜单5 1.1.5 工具栏6 1.1.6 Toolbox7 1.2 第一个VB应用程序9 1.2.1 向窗体添加代码9 1.2.2 设置控件的属性10 1.2.3 为控件命名12 1.2.4 移动及重新调整控件尺寸13 1.2.5 ...

    Visual Basic 6编程技术大全 中译本扫描版带书签 1/2

    1.1.2 选择工程类型1 1.1.3 IDE窗口2 1.1.4 菜单5 1.1.5 工具栏6 1.1.6 Toolbox7 1.2 第一个VB应用程序9 1.2.1 向窗体添加代码9 1.2.2 设置控件的属性10 1.2.3 为控件命名12 1.2.4 移动及重新调整控件尺寸13 1.2.5 ...

Global site tag (gtag.js) - Google Analytics