/**
* Դ�������ƣ�ExtensibleModelComposite.java
* �������Ȩ���������ӹɷ�����˾ ��Ȩ����
* ϵͳ���ƣ�JRES Studio
* ģ�����ƣ�com.hundsun.ares.studio.jres.ui
* ����˵����$desc
* ����ĵ���
* ���ߣ���Ҷ��
*/
package com.hundsun.ares.studio.ui.editor.extend;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.TreeViewerColumn;
import org.eclipse.jface.window.ToolTip;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.dialogs.FilteredTree;
import org.eclipse.ui.forms.widgets.FormToolkit;
import com.hundsun.ares.studio.core.IARESElement;
import com.hundsun.ares.studio.core.model.ExtensibleModel;
import com.hundsun.ares.studio.ui.editor.blocks.FormWidgetUtils;
import com.hundsun.ares.studio.ui.editor.viewers.ColumnViewerPatternFilter;
import com.hundsun.ares.studio.ui.editor.viewers.EObjectColumnViewerProblemView;
import com.hundsun.ares.studio.ui.editor.viewers.RefreshViewerJob;
import com.hundsun.ares.studio.ui.validate.IProblemPool;
import com.hundsun.ares.studio.ui.validate.ProblemPoolChangeEvent;
/**
* @author gongyf
*
*/
public class ExtensibleModelComposite extends Composite {
private TreeViewer viewer;
private IProblemPool problemPool;
private EObjectColumnViewerProblemView problemView;
private ExtensibleModelProblemView formProblemView ;
private ExtensibleModelTreeContentProvider contentProvider;
/**
* @param parent
* @param style
*/
public ExtensibleModelComposite(Composite parent, FormToolkit toolkit) {
super(parent, SWT.NONE);
create(toolkit);
}
public void setInput(IARESElement resource, ExtensibleModel model) {
if (this.problemPool != null && formProblemView != null) {
this.problemPool.removeView(formProblemView);
}
formProblemView = new ExtensibleModelProblemView(model);
viewer.setInput(new ExtensibleModelEditingRoot(resource, model));
if (this.problemPool != null ) {
this.problemPool.addView(formProblemView);
}
}
/**
* ˢ������
*/
public void refresh() {
RefreshViewerJob.refresh(viewer);
}
private void create(FormToolkit toolkit) {
FilteredTree ft = new FilteredTree(this, FormWidgetUtils.getDefaultTreeStyles(), new ColumnViewerPatternFilter(), true);
toolkit.adapt(ft);
viewer = ft.getViewer();
viewer.setAutoExpandLevel(TreeViewer.ALL_LEVELS);
viewer.getTree().setHeaderVisible(true);
viewer.getTree().setLinesVisible(true);
// �������tooltip��ʾ
ColumnViewerToolTipSupport.enableFor(viewer, ToolTip.RECREATE);
contentProvider = new ExtensibleModelTreeContentProvider();
viewer.setContentProvider(contentProvider);
TreeViewerColumn keyColumn = new TreeViewerColumn(viewer, SWT.LEFT);
keyColumn.setLabelProvider(new PropertyNameColumnLabelProvider());
keyColumn.getColumn().setWidth(200);
keyColumn.getColumn().setText("������");
TreeViewerColumn valueColumn = new TreeViewerColumn(viewer, SWT.LEFT);
valueColumn.getColumn().setWidth(200);
valueColumn.getColumn().setText("ֵ");
PropertyValueColumnLabelProvider lableProvider = new PropertyValueColumnLabelProvider();
problemView = new EObjectColumnViewerProblemView(viewer) {
protected void doRefresh(ProblemPoolChangeEvent event) {
RefreshViewerJob.refresh(getViewer());
};
};
lableProvider.setDiagnosticProvider(problemView);
valueColumn.setLabelProvider(lableProvider);
valueColumn.setEditingSupport(new PropertyValueEditingSupport(viewer));
GridLayoutFactory.fillDefaults().applyTo(this);
GridDataFactory.fillDefaults().grab(true, true).hint(100, 300).applyTo(ft);
}
/**
* @param problemPool the problemPool to set
*/
public void setProblemPool(IProblemPool problemPool) {
if (this.problemPool != null) {
this.problemPool.removeView(problemView);
if (formProblemView != null) {
this.problemPool.removeView(formProblemView);
}
}
this.problemPool = problemPool;
if (this.problemPool != null) {
this.problemPool.addView(problemView);
if (formProblemView != null) {
this.problemPool.addView(formProblemView);
}
}
}
}