/**
* <p>Copyright: Copyright (c) 2012</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.jres.metadata.ui.block;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.TreeViewerColumn;
import org.eclipse.swt.SWT;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.jres.model.metadata.MetadataPackage;
import com.hundsun.ares.studio.jres.model.metadata.provider.LongTextEditingSupport;
import com.hundsun.ares.studio.ui.editor.actions.ColumnViewerAddAction;
import com.hundsun.ares.studio.ui.editor.actions.ColumnViewerDeleteAction;
import com.hundsun.ares.studio.ui.editor.actions.ColumnViewerInsertAction;
import com.hundsun.ares.studio.ui.editor.actions.IActionIDConstant;
import com.hundsun.ares.studio.ui.editor.blocks.TreeViewerBlock;
import com.hundsun.ares.studio.ui.editor.editable.ActionEditableUnit;
import com.hundsun.ares.studio.ui.editor.editingsupport.TextEditingSupport;
import com.hundsun.ares.studio.ui.editor.extend.ExtensibleModelColumnViewerProblemView;
import com.hundsun.ares.studio.ui.editor.viewers.EObjectColumnLabelProvider;
import com.hundsun.ares.studio.ui.editor.viewers.EObjectColumnViewerProblemView;
import com.hundsun.ares.studio.ui.editor.viewers.ReferenceTreeContentProvider;
import com.hundsun.ares.studio.ui.validate.IProblemPool;
/**
* @author yanyl
*
*/
public class GeneralDataConfigDefineBlock extends TreeViewerBlock {
private EditingDomain editingDomain;
private IARESResource resource;
private IProblemPool problemPool;
private ColumnViewerAddAction addAction;
private ColumnViewerInsertAction insertAction;
/**
* @param editingDomain
* @param resource
* @param problemPool
*/
public GeneralDataConfigDefineBlock(EditingDomain editingDomain,
IARESResource resource, IProblemPool problemPool) {
super();
this.editingDomain = editingDomain;
this.resource = resource;
this.problemPool = problemPool;
}
/**
* @return the editingDomain
*/
public EditingDomain getEditingDomain() {
return editingDomain;
}
/**
* @return the resource
*/
public IARESResource getResource() {
return resource;
}
/**
* @return the problemPool
*/
public IProblemPool getProblemPool() {
return problemPool;
}
/*
* (non-Javadoc)
*
* @see com.hundsun.ares.studio.jres.ui.pages.ColumnViewerBlock#
* getColumnViewerContentProvider()
*/
@Override
protected IContentProvider getColumnViewerContentProvider() {
return new ReferenceTreeContentProvider(
MetadataPackage.Literals.GENERAL_DATA_CONFIG_LIST__ITEMS);
}
/*
* (non-Javadoc)
*
* @see
* com.hundsun.ares.studio.jres.ui.pages.ColumnViewerBlock#createMenus(org
* .eclipse.jface.action.IMenuManager)
*/
@Override
protected void createMenus(IMenuManager menuManager) {
}
/*
* (non-Javadoc)
*
* @see
* com.hundsun.ares.studio.jres.ui.pages.ColumnViewerBlock#createColumns
* (org.eclipse.jface.viewers.ColumnViewer)
*/
@Override
protected void createColumns(TreeViewer viewer) {
final TreeViewer treeViewer = (TreeViewer) viewer;
// ����һ�����
EObjectColumnViewerProblemView problemView = new EObjectColumnViewerProblemView(
treeViewer);
// ������չ��
EObjectColumnViewerProblemView exProblemView = new ExtensibleModelColumnViewerProblemView(
treeViewer);
// ����
{
EAttribute attribute = MetadataPackage.Literals.GENERAL_DATA_CONFIG_ITEM__ID;
final TreeViewerColumn tvColumn = new TreeViewerColumn(treeViewer,
SWT.LEFT);
tvColumn.getColumn().setWidth(80);
tvColumn.getColumn().setText("����");
EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(
attribute);
provider.setDiagnosticProvider(problemView);
tvColumn.setLabelProvider(provider);
tvColumn.setEditingSupport(new TextEditingSupport(treeViewer,
attribute));
}
// ����
{
EAttribute attribute = MetadataPackage.Literals.GENERAL_DATA_CONFIG_ITEM__CHINESE_NAME;
final TreeViewerColumn tvColumn = new TreeViewerColumn(treeViewer,
SWT.LEFT);
tvColumn.getColumn().setWidth(80);
tvColumn.getColumn().setText("������");
EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(
attribute);
provider.setDiagnosticProvider(problemView);
tvColumn.setLabelProvider(provider);
tvColumn.setEditingSupport(new TextEditingSupport(treeViewer,
attribute));
}
// ����
{
EAttribute attribute = MetadataPackage.Literals.GENERAL_DATA_CONFIG_ITEM__TYPE;
final TreeViewerColumn tvColumn = new TreeViewerColumn(treeViewer,
SWT.LEFT);
tvColumn.getColumn().setWidth(80);
tvColumn.getColumn().setText("����");
EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(
attribute);
provider.setDiagnosticProvider(problemView);
tvColumn.setLabelProvider(provider);
tvColumn.setEditingSupport(new TextEditingSupport(treeViewer,
attribute));
}
// ����
{
EAttribute attribute = MetadataPackage.Literals.GENERAL_DATA_CONFIG_ITEM__VALUE;
final TreeViewerColumn tvColumn = new TreeViewerColumn(treeViewer,
SWT.LEFT);
tvColumn.getColumn().setWidth(150);
tvColumn.getColumn().setText("����");
EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(
attribute);
provider.setDiagnosticProvider(problemView);
tvColumn.setLabelProvider(provider);
tvColumn.setEditingSupport(new LongTextEditingSupport(treeViewer,
attribute));
}
// ����
{
EAttribute attribute = MetadataPackage.Literals.GENERAL_DATA_CONFIG_ITEM__DISCRIPTION;
final TreeViewerColumn tvColumn = new TreeViewerColumn(treeViewer,
SWT.LEFT);
tvColumn.getColumn().setWidth(300);
tvColumn.getColumn().setText("����");
EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(
attribute);
provider.setDiagnosticProvider(problemView);
tvColumn.setLabelProvider(provider);
tvColumn.setEditingSupport(new LongTextEditingSupport(treeViewer,
attribute));
}
getProblemPool().addView(problemView);
getProblemPool().addView(exProblemView);
// getEditableControl().addEditableUnit(
// new JresDefaultEditableUnit(viewer.getControl()));
}
/*
* (non-Javadoc)
*
* @see
* com.hundsun.ares.studio.jres.ui.pages.ColumnViewerBlock#createActions()
*/
@Override
protected void createActions() {
super.createActions();
addAction = new ColumnViewerAddAction(getColumnViewer(),
getEditingDomain(), null,
MetadataPackage.Literals.GENERAL_DATA_CONFIG_LIST__ITEMS,
MetadataPackage.Literals.GENERAL_DATA_CONFIG_ITEM);
getActionRegistry().registerAction(addAction);
getSelectionActions().add(addAction.getId());
insertAction = new ColumnViewerInsertAction(getColumnViewer(),
getEditingDomain(), null,
MetadataPackage.Literals.GENERAL_DATA_CONFIG_LIST__ITEMS,
MetadataPackage.Literals.GENERAL_DATA_CONFIG_ITEM);
getActionRegistry().registerAction(insertAction);
getSelectionActions().add(insertAction.getId());
IAction delAction = new ColumnViewerDeleteAction(getColumnViewer(),
getEditingDomain());
getActionRegistry().registerAction(delAction);
getSelectionActions().add(delAction.getId());
// ֻ������
getEditableControl().addEditableUnit(new ActionEditableUnit(addAction));
getEditableControl().addEditableUnit(new ActionEditableUnit(delAction));
}
/*
* (non-Javadoc)
*
* @see
* com.hundsun.ares.studio.jres.ui.pages.ColumnViewerBlock#setInput(java
* .lang.Object)
*/
@Override
public void setInput(Object input) {
addAction.setOwner((EObject) input);
insertAction.setOwner((EObject) input);
super.setInput(input);
}
/*
* (non-Javadoc)
*
* @see
* com.hundsun.ares.studio.jres.ui.pages.ColumnViewerBlock#createButtons
* (com.hundsun.ares.studio.jres.ui.actions.ButtonGroupManager)
*/
@Override
protected void createToolbarItems(ToolBarManager manager) {
// ������ť�б�
IAction action = getActionRegistry()
.getAction(IActionIDConstant.CV_ADD);
manager.add(action);
action = getActionRegistry().getAction(IActionIDConstant.CV_DELETE);
manager.add(action);
}
/*
* (non-Javadoc)
*
* @see com.hundsun.ares.studio.jres.ui.pages.ColumnViewerBlock#getID()
*/
@Override
protected String getID() {
return getClass().getName();
}
}