/** * <p>Copyright: Copyright 2010</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.ui.control; import org.apache.log4j.Logger; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Control; import com.hundsun.ares.studio.ui.util.EditorDirtyStatus; import com.hundsun.ares.studio.ui.util.ImporveControlWithDitryStateContext; import com.hundsun.ares.studio.ui.util.ReflectInvokeHelper; /** * Ϊ�ؼ��ṩ���ݰ󶨹��� * * @author maxh * @param <T> */ public abstract class ControlWithDataBind<T extends Control> extends ControlWithDitryState<T> { private static Logger logger = Logger.getLogger(ControlWithDataBind.class); public ControlWithDataBind(ImporveControlWithDitryStateContext context, int controlStyle) { super(context.getToolkit(), context.getParent(), controlStyle, context.getDirtyStatus()); addListener(); } public ControlWithDataBind(ImporveControlWithDitryStateContext context, int controlStyle, String beanFieldName) { super(context.getToolkit(), context.getParent(), controlStyle, context.getDirtyStatus()); try { refleckHelper = new ReflectInvokeHelper(context.getInfo(), beanFieldName); } catch (Exception e) { logger.debug("�ؼ����ݰ󶨷����쳣", e); refleckHelper = null; } addListener(); } public ControlWithDataBind(ImporveControlWithDitryStateContext context, int controlStyle, Object model, String beanFieldName) { super(context.getToolkit(), context.getParent(), controlStyle, context.getDirtyStatus()); try { refleckHelper = new ReflectInvokeHelper(model, beanFieldName); } catch (Exception e) { logger.debug("�ؼ����ݰ󶨷����쳣", e); refleckHelper = null; } addListener(); } public ControlWithDataBind(Control control, EditorDirtyStatus dirty, String beanFieldName) { super(control.getParent(), SWT.None, dirty); setControl((T) control); try { refleckHelper = new ReflectInvokeHelper(new Object(), beanFieldName); } catch (Exception e) { logger.debug("�ؼ����ݰ󶨷����쳣", e); refleckHelper = null; } addListener(); } public ControlWithDataBind(EditorDirtyStatus dirty, String beanFieldName) { super(null, null, SWT.None, dirty); try { refleckHelper = new ReflectInvokeHelper(new Object(), beanFieldName); } catch (Exception e) { logger.debug("�ؼ����ݰ󶨷����쳣", e); refleckHelper = null; } addListener(); } void addListener() { this.syncControl(); this.addModifyListener(); this.addFocusListener(); this.addMouseListener(); } /** * �ؼ���ֵ�����ı� 1.ˢ��ģ�� 2.������״̬ 3.������ */ protected void fireControlValueChange() { syncModel(); dirty.setValue(true); } /* * (non-Javadoc) * * @see * com.hundsun.ares.devtool.v2.ui.control.ControlWithDitryState#addFocusListener * () */ @Override protected void addFocusListener() { } protected ReflectInvokeHelper refleckHelper; public ReflectInvokeHelper getRefleckHelper() { return refleckHelper; } @Override public void syncControl() { if (refleckHelper != null) { Object value = refleckHelper.invokeGetMothod(); if (value != null) { setValue(value); } } } @Override public void syncModel() { if (refleckHelper != null) { Object value = getValue(); refleckHelper.invokeSetMothod(value); } } }