/**
* <p>Copyright: Copyright (c) 2009</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.ui.editor.extend.user;
import org.apache.commons.lang.StringUtils;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ColumnViewer;
import org.eclipse.jface.viewers.EditingSupport;
import org.eclipse.swt.widgets.Composite;
import com.hundsun.ares.studio.core.model.ExtensibleModel;
import com.hundsun.ares.studio.ui.editor.extend.IExtensibleModelPropertyDescriptor;
/**
*
* @author sundl
*/
public class UserExtendedPropertyEditingSupport extends EditingSupport{
private IExtensibleModelPropertyDescriptor descriptor;
public UserExtendedPropertyEditingSupport(ColumnViewer viewer, IExtensibleModelPropertyDescriptor descriptor) {
super(viewer);
this.descriptor = descriptor;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.EditingSupport#getCellEditor(java.lang.Object)
*/
@Override
protected CellEditor getCellEditor(Object element) {
return descriptor.createPropertyEditor((Composite) getViewer().getControl());
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.EditingSupport#canEdit(java.lang.Object)
*/
@Override
protected boolean canEdit(Object element) {
return true;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.EditingSupport#getValue(java.lang.Object)
*/
@Override
protected Object getValue(Object element) {
// ��Ӧ����������������еĶ�Ӧ������������
if (descriptor instanceof IUserExtendedPropertyDescriptor
&& element instanceof ExtensibleModel) {
ExtensibleModel model = (ExtensibleModel) element;
IUserExtendedPropertyDescriptor userExtProDesc = (IUserExtendedPropertyDescriptor) descriptor;
return userExtProDesc.getValue(model);
}
return StringUtils.EMPTY;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.EditingSupport#setValue(java.lang.Object, java.lang.Object)
*/
@Override
protected void setValue(Object element, Object value) {
// ��Ӧ����������������еĶ�Ӧ������������
if (descriptor instanceof IUserExtendedPropertyDescriptor
&& element instanceof ExtensibleModel) {
ExtensibleModel model = (ExtensibleModel) element;
IUserExtendedPropertyDescriptor userExtProDesc = (IUserExtendedPropertyDescriptor) descriptor;
userExtProDesc.setValue(model, value == null? null : String.valueOf(value));
}
getViewer().update(element, null);
}
}