//------------------------------------------------------------------------------ // Copyright (c) 2005, 2006 IBM Corporation and others. // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 // which accompanies this distribution, and is available at // http://www.eclipse.org/legal/epl-v10.html // // Contributors: // IBM Corporation - initial implementation //------------------------------------------------------------------------------ package org.eclipse.epf.library.ui.actions; import org.eclipse.epf.library.ui.LibraryUIUtil; import org.eclipse.epf.library.ui.wizards.OpenLibraryWizard; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IEditorReference; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; import org.eclipse.ui.PlatformUI; /** * Implements the Open Library action. * * @author Kelvin Low * @since 1.0 */ public class OpenLibraryAction implements IWorkbenchWindowActionDelegate { private IWorkbenchWindow window; /** * @see IWorkbenchWindowActionDelegate#init */ public void init(IWorkbenchWindow window) { this.window = window; } /** * @see IWorkbenchWindowActionDelegate#selectionChanged */ public void selectionChanged(IAction action, ISelection selection) { } /** * @see IWorkbenchWindowActionDelegate#run */ public void run(IAction action) { int dirtyCount = 0; IEditorReference[] list = PlatformUI.getWorkbench() .getActiveWorkbenchWindow().getActivePage() .getEditorReferences(); for (int i = 0; i < list.length; i++) { if (list[i].isDirty()) { dirtyCount++; } } if (dirtyCount == 1) { boolean rc = PlatformUI.getWorkbench().getActiveWorkbenchWindow() .getActivePage().closeAllEditors(true); if (!rc) { return; } } else if (dirtyCount > 1) { switch (LibraryUIUtil.displaySaveDirtyEditorsDialog()) { case SWT.YES: PlatformUI.getWorkbench().getActiveWorkbenchWindow() .getActivePage().closeAllEditors(true); break; case SWT.NO: PlatformUI.getWorkbench().getActiveWorkbenchWindow() .getActivePage().closeAllEditors(false); break; case SWT.CANCEL: return; } } else if (list.length > 0 ){ PlatformUI.getWorkbench().getActiveWorkbenchWindow() .getActivePage().closeAllEditors(false); } OpenLibraryWizard wizard = new OpenLibraryWizard(); wizard.init(window.getWorkbench(), null); Shell shell = Display.getCurrent().getActiveShell(); WizardDialog dialog = new WizardDialog(shell, wizard); dialog.create(); dialog.open(); } /** * @see IWorkbenchWindowActionDelegate#dispose */ public void dispose() { } }