/** * Դ�������ƣ�MetadataTreeListPage.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.jres.metadata.ui * ����˵����Ԫ�����û��༭��UIչ����ع��� * ����ĵ��� * ���ߣ� */ package com.hundsun.ares.studio.jres.metadata.ui.editors; import org.eclipse.emf.edit.ui.dnd.LocalTransfer; import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter; import org.eclipse.jface.viewers.ColumnViewer; import org.eclipse.jface.viewers.ColumnViewerEditor; import org.eclipse.jface.viewers.IContentProvider; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.TreeViewerEditor; import org.eclipse.swt.SWT; import org.eclipse.swt.dnd.DND; import org.eclipse.swt.dnd.Transfer; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.dialogs.FilteredTree; import org.eclipse.ui.forms.widgets.FormToolkit; import com.hundsun.ares.studio.jres.metadata.ui.editors.dnd.MetadataDropAdapter; import com.hundsun.ares.studio.jres.metadata.ui.viewer.MetadataTreeContentProvider; import com.hundsun.ares.studio.ui.editor.EMFFormEditor; import com.hundsun.ares.studio.ui.editor.viewers.ColumnViewerPatternFilter; import com.hundsun.ares.studio.ui.viewers.link.CellLinkColumnViewerEditorActivationStrategy; import com.hundsun.ares.studio.ui.viewers.link.CellLinkMouseListener; import com.hundsun.ares.studio.ui.viewers.link.ICellLinkProvider; /** * ��Ԫ���ݵı��ʹ�ô����˿��{@link FilteredTree}��ʵ��<br> * �������ṩ��ͳһʹ��{@link MetadataTreeContentProvider}<br> * �����˱���ϵ���ק֧�� * @author gongyf * */ public abstract class MetadataTreeListPage extends MetadataListPage implements ICellLinkProvider { /** * @param editor * @param id * @param title */ public MetadataTreeListPage(EMFFormEditor editor, String id, String title) { super(editor, id, title); } //����һ�������˿�ı�� protected Control createColumnViewer(Composite parent, FormToolkit toolkit) { FilteredTree tree = new FilteredTree(parent, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI, new ColumnViewerPatternFilter(), true); toolkit.adapt(tree); tree.getViewer().getTree().setHeaderVisible(true); tree.getViewer().getTree().setLinesVisible(true); setColumnViewer(tree.getViewer()); configureColumnViewer(getColumnViewer()); return tree; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.pages.ColumnViewerListPage#getColumnViewerContentProvider() */ @Override protected IContentProvider getColumnViewerContentProvider() { return new MetadataTreeContentProvider(); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.pages.ColumnViewerListPage#configureColumnViewer(org.eclipse.jface.viewers.ColumnViewer) */ @Override protected void configureColumnViewer(ColumnViewer viewer) { super.configureColumnViewer(viewer); int dndOperations = DND.DROP_COPY | DND.DROP_MOVE; Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() }; //�༭���б�֧����ק���� viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer)); viewer.addDropSupport(dndOperations, transfers, new MetadataDropAdapter((TreeViewer)viewer, getEditingDomain())); TreeViewer treeViewer = (TreeViewer) viewer; // ��ֹ��Ctrl���ֱ༭�� TreeViewerEditor.create(treeViewer, new CellLinkColumnViewerEditorActivationStrategy(treeViewer), ColumnViewerEditor.DEFAULT); treeViewer.getTree().addMouseListener(new CellLinkMouseListener(viewer, this)); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.metadata.ui.editors.MetadataListPage#getColumnViewer() */ @Override public TreeViewer getColumnViewer() { return (TreeViewer) super.getColumnViewer(); } }