package org.xmind.ui.internal.handlers; import java.net.URI; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.handlers.HandlerUtil; import org.eclipse.ui.internal.IPreferenceConstants; import org.eclipse.ui.internal.WorkbenchPlugin; import org.xmind.ui.IEditorHistory.IEditorHistoryListener; import org.xmind.ui.internal.dialogs.DialogMessages; import org.xmind.ui.mindmap.MindMapUI; public class ClearWorkbookHistoryHandler extends AbstractHandler implements IEditorHistoryListener { public ClearWorkbookHistoryHandler() { MindMapUI.getEditorHistory().addEditorHistoryListener(this); setBaseEnabled(calcEnabledState()); } public Object execute(ExecutionEvent event) throws ExecutionException { doExecute(event); return null; } private void doExecute(ExecutionEvent event) { Shell shell = HandlerUtil.getActiveShell(event); if (shell == null || shell.isDisposed()) return; if (!MessageDialog.openConfirm(shell, DialogMessages.ConfirmClearRecentFileListDialog_title, DialogMessages.ConfirmClearRecentFileListDialog_message)) return; MindMapUI.getEditorHistory().clear(); } public void editorHistoryChanged() { setBaseEnabled(calcEnabledState()); } private boolean calcEnabledState() { int itemsToShow = WorkbenchPlugin.getDefault().getPreferenceStore() .getInt(IPreferenceConstants.RECENT_FILES); if (itemsToShow <= 0) return false; URI[] items = MindMapUI.getEditorHistory() .getRecentInputURIs(itemsToShow); if (items.length == 0) return false; return true; } }