/**
* <p>Copyright: Copyright (c) 2011</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.jres.clearinghouse.ui.page;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StackLayout;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.jres.clearinghouse.ui.action.IWizardComposite;
import com.hundsun.ares.studio.jres.clearinghouse.ui.util.HisModifyWizardFactory;
import com.hundsun.ares.studio.jres.clearinghouse.ui.util.HisModifyWizardFactory.MODIFYACTION_TYPE;
import com.hundsun.ares.studio.jres.model.chouse.ChouseFactory;
import com.hundsun.ares.studio.jres.model.chouse.Modification;
import com.hundsun.ares.studio.ui.editor.EMFFormEditor;
/**
* @author qinyuan
*
*/
public class HisModifyTypeChosePage extends WizardPage{
EMFFormEditor editorPart;
//������
Combo comboVersion;
//��ϸ����Ϣ����
Composite detailComp;
//����¼��action
Modification action = ChouseFactory.eINSTANCE.createModification();
IARESResource resource;
//�������������Ͷ�Ӧ������Ϣ����
List<Composite>detailComps = new ArrayList<Composite>();
//�����ĺ��modifyaction��Ϣ
Modification result;
//ѡ�е�����Ϣ����
Composite topComp;
//ѡ�е�������
MODIFYACTION_TYPE topVersion;
//����������
final MODIFYACTION_TYPE[] values = HisModifyWizardFactory.MODIFYACTION_TYPE.values();
final StackLayout layout=new StackLayout();
/**
* @param pageName
*/
public HisModifyTypeChosePage(String pageName,EMFFormEditor editorPart) {
super(pageName);
setTitle(pageName);
setDescription("��ѡ����Ҫ������");
this.editorPart = editorPart;
resource = editorPart.getARESResource();
}
public IWizardComposite getWizardComposite() {
return (IWizardComposite) topComp;
}
/* (non-Javadoc)
* @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
*/
@Override
public void createControl(Composite parent) {
Composite verComp = new Composite(parent, SWT.BORDER);
creatVersionComposite(verComp,action);
detailComp = new Composite(verComp, SWT.BORDER);
detailComp.setLayout(layout);
for(int i =0;i<values.length;i++){
MODIFYACTION_TYPE select = values[i];
detailComps.add(HisModifyWizardFactory.getDetailComposite(select,detailComp,action,editorPart));
}
GridDataFactory.fillDefaults().grab(true, true).applyTo(verComp);
GridDataFactory.fillDefaults().hint(800, 400).span(2, 1).grab(true, true).applyTo(detailComp);
setControl(verComp);
}
/**
* @param verComp
* @param action
*/
private void creatVersionComposite(Composite verComp, Modification action) {
String version = HisModifyWizardFactory.getActionName(action);
verComp.setLayout(new GridLayout(2, false));
Label lbVersion = new Label(verComp, SWT.None);
lbVersion.setText("��ѡ�������ͣ�");
comboVersion = new Combo(verComp, SWT.BORDER | SWT.READ_ONLY);
int select = 0;
comboVersion.removeAll();
for(int i = 0; i<values.length; i++){
comboVersion.add(values[i].name(), i);
if(version != null && version.equals(values[i].name())){
select = i;
}
}
comboVersion.select(select);
GridDataFactory.fillDefaults().grab(false, true).applyTo(lbVersion);
GridDataFactory.fillDefaults().grab(false, true).applyTo(comboVersion);
//������ѡ����������ʾ��Ӧ�Ľ���
comboVersion.addPaintListener(new PaintListener() {
@Override
public void paintControl(PaintEvent e) {
int i = comboVersion.getSelectionIndex();
topComp = detailComps.get(i);
topVersion = values[i];
layout.topControl = topComp;
detailComp.layout();
}
});
comboVersion.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
int i = comboVersion.getSelectionIndex();
topComp = detailComps.get(i);
topVersion = values[i];
layout.topControl = topComp;
detailComp.layout();
}
});
}
}