/**
* <p>Copyright: Copyright (c) 2012</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.usermacro.ui.editors.pages;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.viewers.ColumnViewer;
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.IDetailsPage;
import org.eclipse.ui.forms.IManagedForm;
import com.hundsun.ares.studio.ui.editor.EMFFormPage;
import com.hundsun.ares.studio.ui.editor.IEMFFormPage;
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.ColumnViewerMoveDownAction;
import com.hundsun.ares.studio.ui.editor.actions.ColumnViewerMoveUpAction;
import com.hundsun.ares.studio.ui.editor.actions.IActionIDConstant;
import com.hundsun.ares.studio.ui.editor.blocks.JresBasicMasterDetailsBlock;
import com.hundsun.ares.studio.ui.editor.editable.ActionEditableUnit;
import com.hundsun.ares.studio.ui.editor.editable.IEditableControl;
import com.hundsun.ares.studio.ui.editor.editingsupport.TextEditingSupport;
import com.hundsun.ares.studio.ui.editor.viewers.ColumnViewerPatternFilter;
import com.hundsun.ares.studio.ui.editor.viewers.EObjectColumnLabelProvider;
import com.hundsun.ares.studio.ui.editor.viewers.ReferenceTreeContentProvider;
import com.hundsun.ares.studio.usermacro.UserMacro;
import com.hundsun.ares.studio.usermacro.UserMacroPackage;
import com.hundsun.ares.studio.usermacro.impl.UserMacroItemImpl;
/**
* �û��Զ����msterdetails
* @author qinyuan
*
*/
public class UserMacroMDBlock extends JresBasicMasterDetailsBlock {
private EObject info;
private TreeViewer viewer;
private ColumnViewerAddAction addAction;
private ColumnViewerMoveUpAction moveUpAction;
private ColumnViewerMoveDownAction moveDownAction;
/**
* @param page
* @param iEditableControl
* @param btnGroupManager
*/
public UserMacroMDBlock(EMFFormPage page, IEditableControl iEditableControl) {
super(page,iEditableControl);
}
public TreeViewer getViewer() {
return this.viewer;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.page.masterdetail.JresBasicMasterDetailsBlock#getPageHeadName()
*/
@Override
protected String getPageHeadName() {
return null;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.page.masterdetail.JresBasicMasterDetailsBlock#getSectionName()
*/
@Override
protected String getSectionName() {
return "���б�";
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.page.masterdetail.JresBasicMasterDetailsBlock#getDescription()
*/
@Override
protected String getDescription() {
return null;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.page.masterdetail.JresBasicMasterDetailsBlock#getElementTypes()
*/
@Override
protected Object[] getElementTypes() {
return new Object[]{UserMacroItemImpl.class};
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.page.masterdetail.JresBasicMasterDetailsBlock#getDetailPage(java.lang.Object)
*/
@Override
protected IDetailsPage getDetailPage(Object type) {
return new UserMacroDetailsPage();
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.page.masterdetail.JresBasicMasterDetailsBlock#createMenus(org.eclipse.jface.action.IMenuManager)
*/
@Override
protected void createMenus(IMenuManager manager) {
super.createMenus(manager);
IAction action = getActionRegistry().getAction(IActionIDConstant.CV_ADD);
manager.add(action);
action = getActionRegistry().getAction(IActionIDConstant.CV_DELETE);
manager.add(action);
action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_UP);
manager.add(action);
action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_DOWN);
manager.add(action);
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.page.masterdetail.JresBasicMasterDetailsBlock#createViewer(org.eclipse.swt.widgets.Composite, org.eclipse.ui.forms.IManagedForm, com.hundsun.ares.studio.jres.ui.form.IEMFFormPage)
*/
@Override
protected ColumnViewer createViewer(Composite client, IManagedForm managedForm,
IEMFFormPage page) {
//��ʼ��ģ��
info = page.getEditor().getInfo();
FilteredTree table = new FilteredTree(client, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI, new ColumnViewerPatternFilter(), true);
viewer = table.getViewer();//new TableViewer(parent, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI);
viewer.getTree().setHeaderVisible(true);
viewer.getTree().setLinesVisible(true);
createTableColumns();
fillTableContents();
// �������tooltip��ʾ
ColumnViewerToolTipSupport.enableFor(viewer, ToolTip.RECREATE);
return viewer;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.page.masterdetail.JresBasicMasterDetailsBlock#setMasterLayout(org.eclipse.swt.widgets.Composite)
*/
@Override
protected void setMasterLayout(Composite client) {
// ����
GridLayoutFactory.swtDefaults().numColumns(2).applyTo(client);
GridDataFactory.fillDefaults().hint(50, 50).grab(true, true).applyTo(viewer.getControl());
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.pages.ColumnViewerBlock#createActions()
*/
@Override
protected void createActions() {
super.createActions();
addAction = new ColumnViewerAddAction(viewer,
page.getEditingDomain(),
info,
UserMacroPackage.Literals.USER_MACRO__MACRO_ITEMS,
UserMacroPackage.Literals.USER_MACRO_ITEM);
getActionRegistry().registerAction(addAction);
getSelectionActions().add(addAction.getId());
IAction delAction = new ColumnViewerDeleteAction(getColumnViewer(), getEditingDomain());
getActionRegistry().registerAction(delAction);
getSelectionActions().add(delAction.getId());
moveUpAction = new ColumnViewerMoveUpAction(getColumnViewer(), getEditingDomain());
getActionRegistry().registerAction(moveUpAction);
getSelectionActions().add(moveUpAction.getId());
getStackActions().add(moveUpAction.getId());
moveDownAction = new ColumnViewerMoveDownAction(getColumnViewer(), getEditingDomain());
getActionRegistry().registerAction(moveDownAction);
getSelectionActions().add(moveDownAction.getId());
getStackActions().add(moveDownAction.getId());
//ֻ������
getEditableControl().addEditableUnit(new ActionEditableUnit(addAction));
getEditableControl().addEditableUnit(new ActionEditableUnit(delAction));
getEditableControl().addEditableUnit(new ActionEditableUnit(moveUpAction));
getEditableControl().addEditableUnit(new ActionEditableUnit(moveDownAction));
}
/* (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);
moveDownAction.setOwner((EObject) input);
moveDownAction.setReference(UserMacroPackage.Literals.USER_MACRO__MACRO_ITEMS);
moveUpAction.setOwner((EObject) input);
moveUpAction.setReference(UserMacroPackage.Literals.USER_MACRO__MACRO_ITEMS);
super.setInput(input);
}
/**
* @param buttonManager
*/
@Override
protected void createToolbarItems(ToolBarManager buttonManager) {
IAction action = getActionRegistry().getAction(IActionIDConstant.CV_ADD);
buttonManager.add(action);
action = getActionRegistry().getAction(IActionIDConstant.CV_DELETE);
buttonManager.add(action);
action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_UP);
buttonManager.add(action);
action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_DOWN);
buttonManager.add(action);
}
private void createTableColumns() {
//TODO#������#��Ԫ#��ͨ#����#����״̬ #���ʱ�� #������(�������հ��к�ע����) #��ʱ(��ȷ������) #��һ�����ؼ������û�������ע�����ϵͳ�ֶ���չ֧��
{
TreeViewerColumn column = new TreeViewerColumn(viewer, SWT.LEFT);
column.getColumn().setText("������");
column.getColumn().setWidth(250);
column.setLabelProvider(new EObjectColumnLabelProvider(UserMacroPackage.Literals.USER_MACRO_ITEM__NAME));
column.setEditingSupport(new TextEditingSupport(viewer, UserMacroPackage.Literals.USER_MACRO_ITEM__NAME));
}
{
TreeViewerColumn column = new TreeViewerColumn(viewer, SWT.LEFT);
column.getColumn().setText("��Χ");
column.getColumn().setWidth(100);
column.setLabelProvider(new EObjectColumnLabelProvider(UserMacroPackage.Literals.USER_MACRO_ITEM__TYPE));
column.setEditingSupport(new TextEditingSupport(viewer, UserMacroPackage.Literals.USER_MACRO_ITEM__TYPE));
}
}
private void fillTableContents() {
EReference reference = UserMacroPackage.Literals.USER_MACRO__MACRO_ITEMS;
viewer.setContentProvider(new ReferenceTreeContentProvider(reference));
if(info instanceof UserMacro) {
viewer.setInput(info);
}
}
/* (non-Javadoc)
* @see org.eclipse.ui.forms.MasterDetailsBlock#createToolBarActions(org.eclipse.ui.forms.IManagedForm)
*/
@Override
protected void createToolBarActions(IManagedForm managedForm) {
}
}