/** * Դ�������ƣ�BizPropertyControl.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�ARES Studio * ģ�����ƣ�com.hundsun.ares.studio.jres.script * ����˵����$desc * ����ĵ��� * ���ߣ�sundl */ package com.hundsun.ares.studio.jres.script.internal.useroption; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.ArrayUtils; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; /** * MultiSelection Check Control * @author sundl * */ public class MultiSelectionCheckControl extends Composite { private Object[] input; private ILabelProvider labelProvider; private List<Button> buttons = new ArrayList<Button>(); private List<Object> selection = new ArrayList<Object>(); /** * @param parent * @param style */ public MultiSelectionCheckControl(Composite parent, Object[] input, ILabelProvider labelProvider) { super(parent, SWT.NONE); this.input = input; this.labelProvider = labelProvider; init(); } private void init() { GridLayoutFactory.fillDefaults().applyTo(this); Composite topComposite = new Composite(this, SWT.NONE); GridLayoutFactory.fillDefaults().numColumns(6).applyTo(topComposite); GridDataFactory.fillDefaults().grab(true, true).applyTo(topComposite); for (Object obj : input) { Button button = new Button(topComposite, SWT.CHECK); buttons.add(button); GridDataFactory.fillDefaults().applyTo(button); button.setText(labelProvider.getText(obj)); button.setData("obj", obj); button.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { updateSelection(); } }); } Composite buttomComposite = new Composite(this, SWT.NONE); GridDataFactory.fillDefaults().grab(true, true).applyTo(buttomComposite); GridLayoutFactory.fillDefaults().numColumns(2).applyTo(buttomComposite); Button checkAll = new Button(buttomComposite, SWT.PUSH); checkAll.setText("ȫѡ"); GridDataFactory.fillDefaults().applyTo(checkAll); checkAll.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { for (Button button : buttons) { button.setSelection(true); } } }); Button unCheckAll = new Button(buttomComposite, SWT.PUSH); unCheckAll.setText("ȡ��ȫѡ"); GridDataFactory.fillDefaults().applyTo(unCheckAll); unCheckAll.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { for (Button button : buttons) { button.setSelection(false); } } }); } public void setSelection(Object[] array) { for (Button button : buttons) { if (ArrayUtils.contains(array, button.getData("obj"))) { button.setSelection(true); } } updateSelection(); } private void updateSelection() { selection.clear(); for (Button b : buttons) { if (b.getSelection()) { selection.add(b.getData("obj")); } } } public Object[] getSelected() { return selection.toArray(); } }