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

📄 search3action.java

📁 mywork是rcp开发的很好的例子
💻 JAVA
字号:
/*
 * Created on 2003-4-10
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
package net.sf.pim.contract.search;

import java.util.List;

import net.sf.component.table.BindedTableViewer;
import net.sf.pim.UiUtil;
import net.sf.pim.action.UiAction;
import net.sf.pim.contract.Contract;
import net.sf.util.StringUtil;

import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.BusyIndicator;
import org.eclipse.swt.widgets.Display;

/**
 * 查找联系人
 * @author lzhang
 */
public class Search3Action extends UiAction {
	public Search3Action() {
		super();
		name = "查找...";
		gif = "search3.gif";
	}

	public void run() {
		if (UiUtil.getActiveTableEditor().getName().equals("联系人")) {
			parent=UiUtil.getInstance();
			parent.checkSave();
			final InputDialog input=new InputDialog(parent.getTv().getControl().getShell(),"搜索联系人","请输入关键词","",null);
			if(input.open() == Dialog.OK ){
				resetResult();
				if(StringUtil.isNotNull(input.getValue())){
					final String key=input.getValue();
					BusyIndicator.showWhile(parent.getTv().getControl().getShell().getDisplay(), new Runnable() {
						public void run(){
							showResult(key);
						}
					});
				}
			}	
		}
	}
	private void showResult(final String key) {
		BindedTableViewer btv = UiUtil.getActiveTableEditor().getViewer();
		
		//开始过滤集合,搜中设前景色
		List rows = btv.getModel().getRows();
		int first=-1,count=0;
		for(int i=0;i<rows.size();i++){
			Contract o=(Contract) rows.get(i);
			if(o.toString().indexOf(key) != -1){
				if(first == -1)first=i;	//记住第一个
				count++;
				o.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_RED));
			}
		}
		btv.refresh(true);
		if(first != -1)
			btv.getTable().setSelection(first);
		UiUtil.setStatus("联系人 共"+rows.size()+"人 搜中"+count+"人");
	}

	private void resetResult() {
		BindedTableViewer btv = UiUtil.getActiveTableEditor().getViewer();
		List rows = btv.getModel().getRows();
		//清除底色
		boolean update=false;
		for(Object o:rows){
			Contract c=(Contract) o;
			if(c.getForeground(c)!= null){
				if(!update)update=true;
				c.setForeground(null);
			}
		}
		if(update)
			btv.refresh(true);
		UiUtil.setStatus("联系人 共"+rows.size()+"人");
	}
}

⌨️ 快捷键说明

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