📄 emfselectdialog.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 + -