package com.hundsun.ares.studio.ui.editor.blocks; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.action.ToolBarManager; import org.eclipse.ui.forms.editor.FormPage; import com.hundsun.ares.studio.core.model.CorePackage; import com.hundsun.ares.studio.core.model.RevisionHistory; import com.hundsun.ares.studio.core.model.util.RevisionHistoryUtil; import com.hundsun.ares.studio.core.model.util.RevisionHistoryVersion; import com.hundsun.ares.studio.ui.editor.actions.AddRevisionHistoryAction; import com.hundsun.ares.studio.ui.editor.actions.IActionIDConstant; import com.hundsun.ares.studio.ui.editor.editable.IEditableControl; import com.hundsun.ares.studio.ui.editor.editable.IEditableUnit; import com.hundsun.ares.studio.ui.validate.IProblemPool; /** * ��Ŀ�����е��޶���¼ * @author sundl */ public class ProjectRevisionHistoryListViewerBlock extends RevisionHistoryListViewerBlock { private AddRevisionHistoryAction increaseVersionAction; public ProjectRevisionHistoryListViewerBlock(FormPage page, EditingDomain editingDomain,IProblemPool pool) { super(page, editingDomain, page.getEditorSite(), null, pool); setEditableControl(new IEditableControl() { @Override public void refreshResourceReadonlyStatus() {} @Override public void refreshAllUnit(Map<Object, Object> context) {} @Override public void putUserStatus(String key, Object status) {} @Override public void notifyUserStatus(String key) {} @Override public boolean getResourceReadonlyStatus() {return false;} @Override public void addEditableUnit(IEditableUnit unit) {} }); } @Override protected void createActions() { super.createActions(); increaseVersionAction = new AddRevisionHistoryAction(getColumnViewer(), getEditingDomain(), null, CorePackage.Literals.PROJECT_REVISION_HISTORY_PROPERTY__HISTORIES) { @SuppressWarnings("unchecked") @Override protected String getVersion() { String maxVersion = RevisionHistoryUtil.getMaxVersion((List<RevisionHistory>)info.eGet(eReference)); String basicVer = ((ProjectRevisionHistoryPage)getFormPage()).getInfo().getVersion(); if (maxVersion == null) { if (StringUtils.isNotBlank(basicVer)) { return basicVer; } return "1.0.0.0"; }else { int res = RevisionHistoryUtil.compare(maxVersion, basicVer); if (res < 0) { maxVersion = basicVer; } } RevisionHistoryVersion version = new RevisionHistoryVersion(maxVersion); version = new RevisionHistoryVersion(version.getMajor(), version.getMinor(), version.getMicro(), version.getQualifier() + 1); return version.toString(); } }; increaseVersionAction.setId("project.increaseversion"); increaseVersionAction.setText("�Ӱ汾"); getActionRegistry().registerAction(increaseVersionAction); getSelectionActions().add("project.increaseversion"); getEditableControl().addEditableUnit(new HistoryActionEditableUnit(increaseVersionAction)); } /** * Ϊ�˸������block, ���ܻ����ڲ�ͬ�Ķ����ϣ�������Ҫ�������¶����޶���¼�б�����Ӧ��EMF���� * @return */ @Override protected EReference getReference() { return CorePackage.Literals.PROJECT_REVISION_HISTORY_PROPERTY__HISTORIES; } @Override public void setInput(Object input) { // �˴�����������super.setInput()����ΪsetInput��ˢ�¿���״̬������Ҫ��ˢ��֮ǰ��action�ı�Ҫ��Ϣ׼���á� increaseVersionAction.setInfo((EObject) input); super.setInput(input); } @Override protected void createRevisionActions() { } @Override protected void createToolbarItems(ToolBarManager buttonManager) { IAction action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_UP); buttonManager.add(action); action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_DOWN); buttonManager.add(action); action = getActionRegistry().getAction(IActionIDConstant.CV_DELETE); buttonManager.add(action); buttonManager.add(increaseVersionAction); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.pages.ColumnViewerListPage#createMenus(org.eclipse.jface.action.IMenuManager) */ @Override protected void createMenus(IMenuManager menuManager) { IAction action = getActionRegistry().getAction(IActionIDConstant.CV_INSERT); menuManager.add(action); action = getActionRegistry().getAction(IActionIDConstant.CV_DELETE); menuManager.add(action); menuManager.add(new Separator()); action = getActionRegistry().getAction(IActionIDConstant.CV_COPY); menuManager.add(action); action = getActionRegistry().getAction(IActionIDConstant.CV_PASTE); menuManager.add(action); menuManager.add(new Separator()); action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_UP); menuManager.add(action); action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_DOWN); menuManager.add(action); } }