package com.hundsun.ares.studio.jres.metadata.ui.utils; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Display; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.jres.model.metadata.Function; import com.hundsun.ares.studio.jres.model.metadata.FunctionProxy; import com.hundsun.ares.studio.ui.editor.extend.ExtensibleModelColumnLabelProvider; 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 MenuUtils extends com.hundsun.ares.studio.jres.model.metadata.util.MenuUtils{ /*** * �˵���Ӧ�Ĺ����б����չ�к͹����б�������б���һ�� */ public static void createFunctionProxyExtensibleModelColumns(TableViewer viewer, final IARESResource resource, EClass eClass) { IExtensibleModelEditingSupport[] editingSupports = ExtensibleModelUtils.getEndabledEditingSupports(resource, eClass); GC gc = new GC(viewer.getControl()); try { for (final 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); ExtensibleModelColumnLabelProvider provider = new ExtensibleModelColumnLabelProvider(support, descriptor , resource){ @Override protected EObject getOwner(Object element) { if(element instanceof FunctionProxy){ Function func = getFunctionByName(resource, ((FunctionProxy) element).getFunCode()); return func.getData2().get(support.getKey()); } return super.getOwner(element); } @Override public Color getBackground(Object element) { return Display.getDefault().getSystemColor(SWT.COLOR_GRAY); } }; tvColumn.setLabelProvider(provider); tvColumn.getColumn().setMoveable(true); } } } finally { gc.dispose(); } } }