| /******************************************************************************* |
| * Copyright (c) 2007, 2009 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 API and implementation |
| ******************************************************************************/ |
| |
| package org.eclipse.ui.part; |
| |
| import org.eclipse.jface.resource.ImageDescriptor; |
| import org.eclipse.ui.IWorkbenchCommandConstants; |
| import org.eclipse.ui.IWorkbenchPart; |
| import org.eclipse.ui.handlers.IHandlerService; |
| import org.eclipse.ui.internal.handlers.CyclePageHandler; |
| |
| /** |
| * Provides the implementation for switching pages in a view. A view may track |
| * pages however it wishes. The view should subclass PageSwitcher to provide the |
| * abstract methods, and then instantiate their page switcher once. |
| * |
| * @since 1.1 |
| * |
| */ |
| public abstract class PageSwitcher { |
| |
| private static final String COMMAND_PREVIOUS_PAGE = "org.eclipse.ui.part.previousPage"; //$NON-NLS-1$ |
| private static final String COMMAND_NEXT_PAGE = "org.eclipse.ui.part.nextPage"; //$NON-NLS-1$ |
| |
| /** |
| * Register the handlers for page switching with this view or editor. |
| * |
| * @param part |
| * The part to register against. |
| */ |
| public PageSwitcher(IWorkbenchPart part) { |
| IHandlerService service = (IHandlerService) part.getSite().getService( |
| IHandlerService.class); |
| service.activateHandler(IWorkbenchCommandConstants.NAVIGATE_NEXT_PAGE, new CyclePageHandler(this)); |
| service.activateHandler(IWorkbenchCommandConstants.NAVIGATE_PREVIOUS_PAGE, new CyclePageHandler( |
| this)); |
| } |
| |
| /** |
| * Displays the given page in the view. The page must already exist in the |
| * view. |
| * |
| * @param page |
| * the page to display, never <code>null</code>. |
| */ |
| public abstract void activatePage(Object page); |
| |
| /** |
| * Returns an {@link ImageDescriptor} for the page. |
| * |
| * @param page |
| * the page to retrieve an {@link ImageDescriptor} |
| * @return An {@link ImageDescriptor} for the page, may be <code>null</code>. |
| */ |
| public abstract ImageDescriptor getImageDescriptor(Object page); |
| |
| /** |
| * Returns a readable name to identify the page. |
| * |
| * @param page |
| * the page to get the name |
| * @return the name of the page |
| */ |
| public abstract String getName(Object page); |
| |
| /** |
| * Returns the pages available in the view. These may be used for populating |
| * the pop-up dialog when switching pages. These are the objects that will |
| * be used in {@link #activatePage(Object)}. |
| * |
| * @return an array of pages |
| */ |
| public abstract Object[] getPages(); |
| |
| /** |
| * Returns the index of the currently active page. The default |
| * implementation returns 0. Subclasses can override. |
| * |
| * @return the 0-based index of the currently active page from |
| * {@link #getPages()}, or an arbitrary value if |
| * {@link #getPages()} is an empty array. |
| */ |
| public int getCurrentPageIndex() { |
| return 0; |
| } |
| |
| } |