/**
* <p>Copyright: Copyright (c) 2014</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.jres.script.util.wizard;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.ICheckStateListener;
import org.eclipse.jface.wizard.WizardPage;
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;
import org.eclipse.ui.forms.widgets.FormToolkit;
/**
* @author liaogc
*
*/
public class ScriptGenIntegratedPage extends WizardPage{
private CheckboxTreeViewerEx viewer;
private Button btnSelectAll;
private Button btnSelectNone;
private List<ScriptGenInteWizardModel> selectedHasXmlConfig = new ArrayList<ScriptGenInteWizardModel>();//�����õĽű�
private List<ScriptGenInteWizardModel> selectedElements = new ArrayList<ScriptGenInteWizardModel>();//ѡ��Ľű�
private List<ScriptGenInteWizardModel> inputElements = new ArrayList<ScriptGenInteWizardModel>();//���еĽű�
protected ScriptGenIntegratedPage(String pageName,List<ScriptGenInteWizardModel>inputElements) {
super(pageName);
setTitle("ѡ���ļ�");
setMessage("ѡ����Ҫ���ɵ��ļ�");
this.inputElements = inputElements;
}
@Override
public void createControl(Composite parent) {
Composite comps = new Composite(parent, SWT.None);
FormToolkit toolkit = new FormToolkit(comps.getDisplay());
viewer = new CheckboxTreeViewerEx(comps);
viewer.setContentProvider(new ScriptGenInteWizardContentProvider());
viewer.setLabelProvider(new ScriptGenInteWizardLabelProvider());
viewer.setInput(inputElements);
Composite btnComps = toolkit.createComposite(comps);
btnSelectAll = toolkit.createButton(btnComps, "ȫѡ", SWT.None);
btnSelectNone = toolkit.createButton(btnComps, "ȡ��ȫѡ", SWT.None);
GridLayoutFactory.swtDefaults().numColumns(2).applyTo(comps);
GridDataFactory.fillDefaults().span(2, -1).grab(true, true).applyTo(viewer.getControl());
GridDataFactory.fillDefaults().grab(false, false).applyTo(btnComps);
GridLayoutFactory.swtDefaults().numColumns(2).applyTo(btnComps);
GridDataFactory.fillDefaults().grab(false, false).applyTo(btnSelectAll);
GridDataFactory.fillDefaults().grab(false, false).applyTo(btnSelectNone);
setControl(comps);
viewer.addCheckStateListener(new ICheckStateListener() {
@Override
public void checkStateChanged(CheckStateChangedEvent event) {
refreshFinishState();
}
});
btnSelectAll.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
for(ScriptGenInteWizardModel node :inputElements){
viewer.setSubtreeChecked(node, true);
}
refreshFinishState();
}
});
btnSelectNone.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
for(ScriptGenInteWizardModel node :inputElements){
viewer.setSubtreeChecked(node, false);
}
refreshFinishState();
}
});
refreshFinishState();
}
protected void refreshFinishState() {
selectedElements.clear();
this.selectedHasXmlConfig.clear();
Object[] selections = viewer.getCheckedElements();
for(Object sel : selections){
if(sel instanceof ScriptGenInteWizardModel ){
ScriptGenInteWizardModel model = (ScriptGenInteWizardModel)sel;
if(!this.selectedElements.contains(model) && model.getRoot()!=null){
selectedHasXmlConfig.add(model);
}
selectedElements.add(model);
}
}
if((ScriptGenIntegratedDetailPage)getNextPage()!=null){
((ScriptGenIntegratedWizard)this.getWizard()).removePage((ScriptGenIntegratedDetailPage)getNextPage());
ScriptGenIntegratedDetailPage detailPage = new ScriptGenIntegratedDetailPage("������ϸ��Ϣ",((ScriptGenIntegratedWizard)this.getWizard()).getProject());
((ScriptGenIntegratedWizard)this.getWizard()).setDetailPage(detailPage);
((ScriptGenIntegratedWizard)this.getWizard()).addPage(detailPage);
((ScriptGenIntegratedDetailPage)getNextPage()).setSelectedHasXmlConfig(selectedHasXmlConfig);
}
setPageComplete(true);
}
@Override
public boolean canFlipToNextPage() {
return selectedHasXmlConfig.size() > 0;
}
/**
* @return the selectedHasXmlConfig
*/
public List<ScriptGenInteWizardModel> getSelectedHasXmlConfig() {
return selectedHasXmlConfig;
}
/**
* @param selectedHasXmlConfig the selectedHasXmlConfig to set
*/
public void setSelectedHasXmlConfig(
List<ScriptGenInteWizardModel> selectedHasXmlConfig) {
this.selectedHasXmlConfig = selectedHasXmlConfig;
}
/**
* @return the selectedElements
*/
public List<ScriptGenInteWizardModel> getSelectedElements() {
return selectedElements;
}
}