package com.yoursway.ide.undo; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.viewers.IBaseLabelProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.ListViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.part.ViewPart; public class UndoListViewPart extends ViewPart { private ListViewer viewer; public UndoListViewPart() { // nothing to do } @Override public void createPartControl(Composite parent) { viewer = new ListViewer(parent, SWT.SINGLE | SWT.V_SCROLL); IBaseLabelProvider labelProvider = new ILabelProvider() { public void addListener(ILabelProviderListener listener) { // nothing to do } public void dispose() { // nothing to do } public boolean isLabelProperty(Object element, String property) { return false; } public void removeListener(ILabelProviderListener listener) { // nothing to do } public Image getImage(Object element) { return null; } public String getText(Object element) { if (element instanceof IUndoableOperation) { IUndoableOperation operation = (IUndoableOperation) element; return operation.getLabel(); } else return "---"; //! } }; viewer.setLabelProvider(labelProvider); // viewer.setInput(OperationHistory.get()); OperationHistory history = OperationHistory.get(); for (IUndoableOperation operation : history.getUndoHistory()) { viewer.add(operation); } history.addListener(new IOperationHistoryListener() { public void add(IUndoableOperation operation) { viewer.add(operation); } public void remove(IUndoableOperation operation) { viewer.remove(operation); } }); IToolBarManager toolbarManager = getViewSite().getActionBars().getToolBarManager(); toolbarManager.add(new Action() { @Override public void run() { // MessageDialog.openInformation(null, "proga", "" + list.getSelectionIndex()); OperationHistory history = OperationHistory.get(); history.undoLastOperation(); } }); } @Override public void setFocus() { // TODO Auto-generated method stub } }