/**
* <p>Copyright: Copyright (c) 2009</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.ui.page;
import java.util.List;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.widgets.Section;
import com.hundsun.ares.studio.core.model.extendable.IExtendAbleModel;
import com.hundsun.ares.studio.core.model.extendable.UserConfigMap;
import com.hundsun.ares.studio.core.util.StringUtil;
import com.hundsun.ares.studio.ui.control.CheckButtonAdaptor;
import com.hundsun.ares.studio.ui.control.ComboAdaptor;
import com.hundsun.ares.studio.ui.control.TextAdaptor;
import com.hundsun.ares.studio.ui.userdialog.DialogInterfaceGroup;
import com.hundsun.ares.studio.ui.userdialog.DialogInterfaceItem;
import com.hundsun.ares.studio.ui.userdialog.DialogInterfaceXml;
import com.hundsun.ares.studio.ui.util.ImporveControlWithDitryStateContext;
/**
*
* @author maxh
*/
public class UserConfigPage extends ExtendSectionScrolledFormPage {
DialogInterfaceXml xmlDialog;
/**
*
*/
public UserConfigPage(FormEditor editor, String id, String title,DialogInterfaceXml xmlDialog) {
super(editor, id, title);
this.xmlDialog = xmlDialog;
}
UserConfigMap map;
/* (non-Javadoc)
* @see com.hundsun.ares.studio.ui.page.ExtendSectionScrolledFormPage#createSections(org.eclipse.ui.forms.IManagedForm)
*/
@Override
protected void createSections(IManagedForm managedForm) {
if(info instanceof IExtendAbleModel){
String id = xmlDialog.getFileId().equals("")?getEditor().getSite().getId():xmlDialog.getFileId();
Object o = ((IExtendAbleModel)info).getMap().get(id);
if((o == null) || (!(o instanceof UserConfigMap))){
map = new UserConfigMap();
((IExtendAbleModel)info).getMap().put(id, map);
}
map = (UserConfigMap)((IExtendAbleModel)info).getMap().get(id);
for (int groupIndex = 0; groupIndex < xmlDialog.getLstMenuInterfaceGroup().size (); groupIndex++) {
DialogInterfaceGroup group = xmlDialog.getLstMenuInterfaceGroup().get (groupIndex);
final List<DialogInterfaceItem> lstItem = group.getLstMenuInterfaceItem ();
if (group.isUse ()) {
Section section = createCompositeSection(group.getGroupName(),true);
ImporveControlWithDitryStateContext context = createContext((Composite)section.getClient(), managedForm);
for (int i = 0; i < lstItem.size (); i++) {
final DialogInterfaceItem item = lstItem.get (i);
if (item.getSwtType ().equalsIgnoreCase ("CHECK")) {
CheckButtonAdaptor adaptor = new CheckButtonAdaptor(item.getLableName (),SWT.CHECK,context){
@Override
public void syncControl() {
if(getControl() != null){
setValue(StringUtil.getStringSafely(map.get(item.getId())));
}
}
@Override
public void syncModel() {
if(getControl() != null){
map.put(item.getId(), getValue().toString());
}
}
};
Button but = adaptor.getControl();
but.setData (item.getId());
}else if (item.getSwtType ().equalsIgnoreCase ("TEXT")) {
TextAdaptor adaptor = new TextAdaptor(item.getLableName (),SWT.BORDER,context){
@Override
public void syncControl() {
if(getControl() != null){
setValue(StringUtil.getStringSafely(map.get(item.getId())));
}
}
@Override
public void syncModel() {
if(getControl() != null){
map.put(item.getId(), getValue());
}
}
};
Text text = adaptor.getControl();
text.setData (item.getId());
}else if (item.getSwtType ().equalsIgnoreCase ("COMBO")) {
String[] values = item.getValue ().split (",");
ComboAdaptor adaptor = new ComboAdaptor(item.getLableName (),SWT.BORDER|SWT.READ_ONLY,context,values){
/* (non-Javadoc)
* @see com.hundsun.ares.studio.ui.control.ControlWithDataBind#syncControl()
*/
@Override
public void syncControl() {
if(getControl() != null){
setValue(StringUtil.getStringSafely(map.get(item.getId())));
}
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.ui.control.ControlWithDataBind#syncModel()
*/
@Override
public void syncModel() {
if(getControl() != null){
map.put(item.getId(), getValue().toString());
}
}
};
Combo combo = adaptor.getControl();
combo.setData (item.getId());
}
}
}
}
}
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.ui.page.ExtendPageWithMyDirtySystem#shouldLoad()
*/
@Override
public boolean shouldLoad() {
return true;
}
}