package com.hundsun.ares.studio.ui.editor.blocks;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.eclipse.jface.action.Action;
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.IStructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.TreeViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import com.hundsun.ares.studio.core.IARESProject;
import com.hundsun.ares.studio.core.model.CoreFactory;
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.ui.editor.ARESEditorPlugin;
import com.hundsun.ares.studio.ui.editor.actions.IActionIDConstant;
import com.hundsun.ares.studio.ui.editor.editingsupport.LongTextEditingSupport;
import com.hundsun.ares.studio.ui.editor.editingsupport.TextEditingSupport;
import com.hundsun.ares.studio.ui.editor.viewers.ArrayTreeContentProvider;
import com.hundsun.ares.studio.ui.editor.viewers.EObjectColumnLabelProvider;
public class BatchAddModifyLogBlock extends TreeViewerBlock {
IARESProject project;
@Override
protected String getID() {
return getClass().getName();
}
public void setProject(IARESProject project) {
this.project = project;
}
@Override
protected IContentProvider getColumnViewerContentProvider() {
return ArrayTreeContentProvider.getInstance();
}
@Override
protected void createMenus(IMenuManager 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);
}
@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);
action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_UP);
manager.add(action);
action = getActionRegistry().getAction(IActionIDConstant.CV_MOVE_DOWN);
manager.add(action);
}
@Override
protected void createColumns(TreeViewer viewer) {
//����У���ʱ�䡢���汾�������š������ˡ������ˡ���ԭ��������
/**��ʱ��*/
{
TreeViewerColumn comlumn = new TreeViewerColumn(viewer, SWT.LEFT);
comlumn.getColumn().setText("��ʱ��");
comlumn.getColumn().setWidth(130);
EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(CorePackage.Literals.REVISION_HISTORY__MODIFIED_DATE);
comlumn.setLabelProvider(provider);
comlumn.setEditingSupport(new TextEditingSupport(viewer, CorePackage.Literals.REVISION_HISTORY__MODIFIED_DATE));
}
/**���汾*/
{
TreeViewerColumn comlumn = new TreeViewerColumn(viewer, SWT.LEFT);
comlumn.getColumn().setText("���汾");
comlumn.getColumn().setWidth(160);
EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(CorePackage.Literals.REVISION_HISTORY__VERSION);
comlumn.setLabelProvider(provider);
comlumn.setEditingSupport(new TextEditingSupport(viewer, CorePackage.Literals.REVISION_HISTORY__VERSION));
comlumn.getColumn().setMoveable(true);
}
/**������*/
{
TreeViewerColumn comlumn = new TreeViewerColumn(viewer, SWT.LEFT);
comlumn.getColumn().setText("������");
comlumn.getColumn().setWidth(160);
EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(CorePackage.Literals.REVISION_HISTORY__ORDER_NUMBER);
comlumn.setLabelProvider(provider);
comlumn.setEditingSupport(new TextEditingSupport(viewer, CorePackage.Literals.REVISION_HISTORY__ORDER_NUMBER));
comlumn.getColumn().setMoveable(true);
}
/**������*/
{
TreeViewerColumn comlumn = new TreeViewerColumn(viewer, SWT.LEFT);
comlumn.getColumn().setText("������");
comlumn.getColumn().setWidth(100);
EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(CorePackage.Literals.REVISION_HISTORY__MODIFIED_BY);
comlumn.setLabelProvider(provider);
comlumn.setEditingSupport(new TextEditingSupport(viewer, CorePackage.Literals.REVISION_HISTORY__MODIFIED_BY));
comlumn.getColumn().setMoveable(true);
}
/**������ */
{
TreeViewerColumn comlumn = new TreeViewerColumn(viewer, SWT.LEFT);
comlumn.getColumn().setText("������ ");
comlumn.getColumn().setWidth(100);
comlumn.setLabelProvider(new EObjectColumnLabelProvider(CorePackage.Literals.REVISION_HISTORY__CHARGER));
comlumn.setEditingSupport(new TextEditingSupport(viewer, CorePackage.Literals.REVISION_HISTORY__CHARGER));
comlumn.getColumn().setMoveable(true);
}
/**������*/
{
TreeViewerColumn comlumn = new TreeViewerColumn(viewer, SWT.LEFT);
comlumn.getColumn().setText("������");
comlumn.getColumn().setWidth(200);
comlumn.setLabelProvider(new EObjectColumnLabelProvider(CorePackage.Literals.REVISION_HISTORY__MODIFIED));
comlumn.setEditingSupport(new LongTextEditingSupport(viewer, CorePackage.Literals.REVISION_HISTORY__MODIFIED));
comlumn.getColumn().setMoveable(true);
}
/**��ԭ��*/
{
TreeViewerColumn comlumn = new TreeViewerColumn(viewer, SWT.LEFT);
comlumn.getColumn().setText("��ԭ��");
comlumn.getColumn().setWidth(200);
comlumn.setLabelProvider(new EObjectColumnLabelProvider(CorePackage.Literals.REVISION_HISTORY__MODIFIED_REASON));
comlumn.setEditingSupport(new LongTextEditingSupport(viewer, CorePackage.Literals.REVISION_HISTORY__MODIFIED_REASON));
comlumn.getColumn().setMoveable(true);
}
/**��ע*/
{
TreeViewerColumn comlumn = new TreeViewerColumn(viewer, SWT.LEFT);
comlumn.getColumn().setText("��ע");
comlumn.getColumn().setWidth(200);
EObjectColumnLabelProvider provider = new EObjectColumnLabelProvider(CorePackage.Literals.REVISION_HISTORY__COMMENT);
comlumn.setLabelProvider(provider);
comlumn.setEditingSupport(new LongTextEditingSupport(viewer, CorePackage.Literals.REVISION_HISTORY__COMMENT));
comlumn.getColumn().setMoveable(true);
}
}
@Override
protected void createActions() {
IAction action = new AddAction();
getActionRegistry().registerAction(action);
action = new DeleteAction();
getActionRegistry().registerAction(action);
action = new MoveupAction();
getActionRegistry().registerAction(action);
action = new MovedownAction();
getActionRegistry().registerAction(action);
}
public class MovedownAction extends Action{
public MovedownAction() {
setText("����");
setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin(ARESEditorPlugin.PLUGIN_ID, "icons/full/obj16/down.gif"));
setId(IActionIDConstant.CV_MOVE_DOWN);
}
@Override
public void run() {
IStructuredSelection selection = (IStructuredSelection) getColumnViewer().getSelection();
List<RevisionHistory>viewerInput = (List<RevisionHistory>) getColumnViewer().getInput();
if (selection != null && !selection.isEmpty()) {
Object[] objs = selection.toArray();
for (int i = objs.length - 1; i >= 0; i--) {
int oldIndex = viewerInput.indexOf(objs[i]);
// �Ѿ�����ˣ�����������
if (oldIndex == viewerInput.size() - 1) {
continue;
}
// ���ܳ���һ��ѡ�е�
if (i < objs.length - 1 && viewerInput.get(oldIndex + 1) == objs[i + 1]) {
continue;
}
RevisionHistory tmp = viewerInput.get(oldIndex + 1);
RevisionHistory item1 = CoreFactory.eINSTANCE.createRevisionHistory();
RevisionHistory item2 = CoreFactory.eINSTANCE.createRevisionHistory();
viewerInput.set(oldIndex + 1, item1);
viewerInput.set(oldIndex, item2);
viewerInput.set(oldIndex + 1, (RevisionHistory) objs[i]);
viewerInput.set(oldIndex, tmp);
}
}
getColumnViewer().setInput(viewerInput);
}
}
private class MoveupAction extends Action{
public MoveupAction() {
setText("����");
setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin(ARESEditorPlugin.PLUGIN_ID, "icons/full/obj16/up.gif"));
setId(IActionIDConstant.CV_MOVE_UP);
}
@Override
public void run() {
IStructuredSelection selection = (IStructuredSelection) getColumnViewer().getSelection();
List<RevisionHistory>viewerInput = (List<RevisionHistory>) getColumnViewer().getInput();
if (selection != null && !selection.isEmpty()) {
Object[] objs = selection.toArray();
for (int i = 0; i < objs.length; i++) {
int oldIndex = viewerInput.indexOf(objs[i]);
// �Ѿ���ˣ�����������
if (oldIndex == 0) {
continue;
}
// ���ܳ���һ��ѡ�е�
if (i > 0 && viewerInput.get(oldIndex - 1) == objs[i - 1]) {
continue;
}
RevisionHistory tmp = viewerInput.get(oldIndex - 1);
RevisionHistory item1 = CoreFactory.eINSTANCE.createRevisionHistory();
RevisionHistory item2 = CoreFactory.eINSTANCE.createRevisionHistory();
viewerInput.set(oldIndex - 1, item1);
viewerInput.set(oldIndex, item2);
viewerInput.set(oldIndex - 1, (RevisionHistory) objs[i]);
viewerInput.set(oldIndex, tmp);
}
}
getColumnViewer().setInput(viewerInput);
}
}
private class DeleteAction extends Action{
public DeleteAction() {
setText("ɾ��");
setId(IActionIDConstant.CV_DELETE);
ISharedImages sharedImages = PlatformUI.getWorkbench().getSharedImages();
setImageDescriptor(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE));
setDisabledImageDescriptor(sharedImages.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE_DISABLED));
}
@Override
public void run() {
IStructuredSelection select = (IStructuredSelection) getColumnViewer().getSelection();
List<RevisionHistory>viewerInput = (List<RevisionHistory>) getColumnViewer().getInput();
List<Object> selectObjs = select.toList();
viewerInput.removeAll(selectObjs);
getColumnViewer().refresh();
}
}
private class AddAction extends Action{
public AddAction() {
setText("����ļ�¼");
setId(IActionIDConstant.CV_ADD);
setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJ_ADD));
}
@Override
public void run() {
IStructuredSelection select = (IStructuredSelection) getColumnViewer().getSelection();
List<RevisionHistory>viewerInput = (List<RevisionHistory>) getColumnViewer().getInput();
RevisionHistory rev = CoreFactory.eINSTANCE.createRevisionHistory();
// ��Ŀ����
String version = RevisionHistoryUtil.getProjectPropertyVersion(project);
// ��һ���Ҳ����κμ�¼��ʱ��
if (StringUtils.isEmpty(version)) {
version = "1.0.0.0";
}
rev.setVersion(version);
Object obj = select.getFirstElement();
if(obj != null){
int index = viewerInput.indexOf(obj);
viewerInput.add(index, rev);
}else{
viewerInput.add(rev);
}
getColumnViewer().refresh();
}
}
}