package com.hundsun.ares.studio.jres.basicdata.ui.extend;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Point;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.ui.editor.IDiagnosticProvider;
import com.hundsun.ares.studio.ui.editor.extend.ExtensibleModelUtils;
import com.hundsun.ares.studio.ui.editor.extend.IExtensibleModelEditingSupport;
import com.hundsun.ares.studio.ui.editor.extend.IExtensibleModelPropertyDescriptor;
public class BasicdataExtensibleModelUtil {
/**
* �������ö������չ������
* @param viewer
* @param resource
* @param eClass
* @param diagnosticProvider
*/
public static void createRefExtensibleModelTableViewerColumns(
TableViewer viewer, IARESResource resource, EClass eClass,
IDiagnosticProvider diagnosticProvider,EStructuralFeature infoReference) {
IExtensibleModelEditingSupport[] editingSupports = ExtensibleModelUtils
.getEndabledEditingSupports(resource, eClass);
GC gc = new GC(viewer.getControl());
try {
for (IExtensibleModelEditingSupport support : editingSupports) {
for (IExtensibleModelPropertyDescriptor descriptor : support
.getPropertyDescriptors(resource, eClass)) {
TableViewerColumn tvColumn = new TableViewerColumn(viewer,
SWT.LEFT);
// ���ȸ�����ʵ�����������
String displayName = descriptor.getDisplayName();
Point p = gc.stringExtent(displayName);
tvColumn.getColumn().setWidth(p.x + 20);
tvColumn.getColumn().setText(displayName);
RefExtensibleModelColumnLabelProvider provider = new RefExtensibleModelColumnLabelProvider(
support, descriptor , infoReference);
provider.setDiagnosticProvider(diagnosticProvider);
tvColumn.setLabelProvider(provider);
tvColumn.getColumn().setMoveable(true);
}
}
} finally {
gc.dispose();
}
}
}