package info.u250.c2d.box2deditor.ui.controls; import info.u250.c2d.box2deditor.ui.Binder; import java.util.HashMap; import java.util.Map; import javax.swing.JComponent; import javax.swing.JPanel; public abstract class AbstractBindablePropertiesPanel extends JPanel{ private static final long serialVersionUID = -4111357230247774540L; Map<JComponent,Binder> bindMap = new HashMap<JComponent,Binder>(); protected void bind(final Object obj,final String name,final JComponent textField){ final Binder support = bindMap.get(textField); if(null!=support){ support.update(obj); }else{ bindMap.put(textField, getBinder(obj, name, textField)); } } protected Object object ; final public void bind(Object object){ this.object = object; doBinder(); for(Binder binder:bindMap.values()){ binder.enable(); } } public abstract void doBinder(); public abstract Class<?> getType(); public abstract Binder getBinder(Object obj,String name,final JComponent widget); }