⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 emfselectdialog.java

📁 基于eclipse的工具开发代码
💻 JAVA
字号:
package com.cownew.studio.modelDev.propertiesSheet;

import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
import org.eclipse.ui.model.WorkbenchContentProvider;
import org.eclipse.ui.model.WorkbenchLabelProvider;
import org.eclipse.ui.views.navigator.ResourceSorter;

import com.cownew.studio.Activator;

public class EMFSelectDialog extends ElementTreeSelectionDialog
{
	private final String LAST_CONTAINER = "LAST_EMFSELECT_CONTAINER";

	public EMFSelectDialog(Shell parent, IProject project)
	{
		super(parent, new WorkbenchLabelProvider(),
				new WorkbenchContentProvider());

		setTitle("select");
		setMessage("select Entity Model File");
		// 从显示项目project中取得所有符合条件的数据
		setInput(project);
		// 按名称排序
		setSorter(new ResourceSorter(ResourceSorter.NAME));
	}

	protected Control createDialogArea(Composite parent)
	{
		Composite result = (Composite) super.createDialogArea(parent);

		// 取得上次选择的项的路径
		IDialogSettings settings = Activator.getDefault().getDialogSettings();
		String lastPath = settings.get(LAST_CONTAINER);
		if (lastPath != null)
		{
			IPath path = Path.fromPortableString(lastPath);

			// 取得工作空间根
			IWorkspaceRoot wsroot = ResourcesPlugin.getWorkspace().getRoot();

			// 将上次选择的项的路径转换为IResource类型
			IResource resource = wsroot.findMember(path);

			// 将上次选择的项设定为初始选择项
			setInitialSelection(resource);
		}

		addFilter(new ViewerFilter() {
			public boolean select(Viewer viewer, Object parent, Object element)
			{
				if (element instanceof IFile)
				{
					IFile file = (IFile) element;

					// 如果元素是文件并且后缀为emf则数据合法
					return file.getFileExtension().equals("emf");
				} else if (element instanceof IContainer)
				{
					// 如果元素是容器类型则视为合法,因为其下的子文件有可能有合法的
					return true;
				}
				return true;
			}
		});

		getTreeViewer().addSelectionChangedListener(
				new ISelectionChangedListener() {

					public void selectionChanged(SelectionChangedEvent event)
					{
						// 取得被选择的文件
						IStructuredSelection selection = (IStructuredSelection) event
								.getSelection();
						Object element = selection.getFirstElement();

						// 如果被选择的是文件则“确定”按钮可用
						boolean fileselected = element instanceof IFile;
						getOkButton().setEnabled(fileselected);
					}

				});
		return result;
	}

	public boolean close()
	{
		IDialogSettings settings = Activator.getDefault().getDialogSettings();

		Object[] result = getResult();
		if (result != null && result.length > 0)
		{
			IResource resource = (IResource) result[0];

			// 得到选择的文件的路径
			IPath parentPath = resource.getParent().getFullPath();
			String path = parentPath.toPortableString();

			// 将本次选择的文件保存到设置中去
			settings.put(LAST_CONTAINER, path);
		}
		return super.close();
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -