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

📄 contractselectcomposite.java

📁 Eclipse RCP下编写的工作管理软件代码
💻 JAVA
字号:
package net.sf.pim.mail.compose;

import net.sf.component.table.BeanBindedTableModel;
import net.sf.component.table.BindedTableColumn;
import net.sf.component.table.BindedTableViewer;
import net.sf.component.table.IBindedTableModel;
import net.sf.component.table.TextBindedTableColumn;
import net.sf.util.ConfigHelper;
import net.sf.util.StringUtil;
import net.sf.util.persistence.DMFactory;
import net.sf.util.persistence.DataException;
import net.sf.util.persistence.IEntry;

import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.FocusAdapter;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
/**
 * 选择收件人
 * @author levin
 */
public class ContractSelectComposite extends Composite {
	private BindedTableViewer btv;	//联系人列表
	private Text to;	//收件人
	private Text cc;	//抄送
	private boolean isCc=false;	//是否抄送人
	private String toList="";
	private String ccList="";
	public ContractSelectComposite(Composite parent, int style) {
		super(parent, style);
	}
	public void create() {
		GridLayout layout = new GridLayout();
		layout.marginHeight = 0;
		layout.marginWidth = 0;
		layout.verticalSpacing = 1;
		layout.horizontalSpacing = 0;
		layout.numColumns=2;
		this.setLayout(layout);
		this.setLayoutData(new GridData(GridData.FILL_BOTH));
		
		initTableViewer(this);
		GridData gridData = new GridData(GridData.FILL_BOTH);
		gridData.horizontalSpan = 2;
		btv.setLayoutData(gridData);
		Label label=new Label(this,SWT.NULL);
		label.setText("收件人");
		
		to=new Text(this,SWT.WRAP|SWT.V_SCROLL);
		to.addFocusListener(new FocusAdapter(){
			@Override
			public void focusGained(FocusEvent e) {
				super.focusGained(e);
				isCc=false;
			}

			@Override
			public void focusLost(FocusEvent e) {
				super.focusLost(e);
				toList=to.getText();
			}});
		GridData textData=new GridData(GridData.FILL_BOTH);
		textData.minimumHeight=24;
		to.setLayoutData(textData);
		to.setText(toList);
		
		label=new Label(this,SWT.NULL);
		label.setText("抄送人");
		cc=new Text(this,SWT.WRAP|SWT.V_SCROLL);
		cc.addFocusListener(new FocusAdapter(){
			@Override
			public void focusGained(FocusEvent e) {
				super.focusGained(e);
				isCc=true;
			}

			@Override
			public void focusLost(FocusEvent e) {
				super.focusLost(e);
				ccList=cc.getText();
			}});
		cc.setLayoutData(textData);
		cc.setText(ccList);
	}
	//初始化联系人列表
	@SuppressWarnings("unchecked")
	private void initTableViewer(Composite parent) {
		java.util.List<IEntry> list=null;
		try {
			String[] filter=ConfigHelper.getStringArrayProperty("mail.contractfilter");
			list = DMFactory.getDataManager(Contract.class).readList(filter[0],filter[1]);
			for(int i=list.size()-1;i>=0;i--){
				Contract entry=(Contract) list.get(i);
				if(StringUtil.isNull(entry.mail))
					list.remove(i);
			}
		} catch (DataException e1) {
			e1.printStackTrace();
		}
		IBindedTableModel model = new BeanBindedTableModel(list){
			public Object createRow() {
				return new Contract();
			}};
		model.setEditable(false);
		IEntry entry=new Contract();
		String[] fieldNames = entry.getFieldNames();
		String[] fieldDescs = entry.getFieldDescs();
		for(int i=0;i<fieldNames.length;i++){
			BindedTableColumn btc=new TextBindedTableColumn(fieldNames[i]);
			btc.setEditable(false);
			btc.setEditor(null);
			btc.setShowName(fieldDescs[i]);
			model.addColumn(btc);
		}		
		
		btv=new BindedTableViewer(parent,SWT.NULL);
		btv.setModel(model);
		btv.setRowCreateRemovable( false);
		btv.setRowsOrderable( false);
		btv.setColsOrderable( false);
		btv.create();
		
		btv.getTableViewer().addSelectionChangedListener(new ISelectionChangedListener(){
			public void selectionChanged(SelectionChangedEvent event) {
				StructuredSelection ss=(StructuredSelection)event.getSelection();
				for(Object o:ss.toArray()){
					Contract c=(Contract)o;
					String mail=c.name+"<"+c.mail+">;";
					if(isCc){
						if(cc.getText().indexOf(mail) == -1)
							ccList=cc.getText()+mail;
							cc.setText(ccList);
					}else{
						if(to.getText().indexOf(mail) == -1)
							toList=to.getText()+mail;
							to.setText(toList);
					}
				}
			}});		
	}
	
	public String getToList(){
		return toList;
	}
	
	public String getCcList(){
		return ccList;
	}
	public void setToList(String toList) {
		this.toList = toList;
	}
	public void setCcList(String ccList) {
		this.ccList = ccList;
	}
}

⌨️ 快捷键说明

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