| /******************************************************************************* |
| * Copyright (c) 2005, 2007 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.internal.commands; |
| |
| import java.net.URL; |
| |
| import org.eclipse.jface.resource.ImageDescriptor; |
| import org.eclipse.ui.commands.ICommandImageService; |
| import org.eclipse.ui.commands.ICommandService; |
| |
| /** |
| * <p> |
| * Provides services related to the command architecture within the workbench. |
| * This service can be used to access the set of commands and handlers. |
| * </p> |
| * |
| * @since 3.2 |
| */ |
| public final class CommandImageService implements ICommandImageService { |
| |
| /** |
| * The command image manager that supports this service. This value is never |
| * <code>null</code>. |
| */ |
| private final CommandImageManager commandImageManager; |
| |
| /** |
| * The class providing persistence for this service. |
| */ |
| private final CommandImagePersistence commandImagePersistence; |
| |
| /** |
| * Constructs a new instance of <code>CommandService</code> using a |
| * command image manager. |
| * |
| * @param commandImageManager |
| * The command image manager to use; must not be |
| * <code>null</code>. |
| * @param commandService |
| * The workbench command service; must not be <code>null</code>. |
| * This is used for checking whether a command is defined when |
| * reading the registry. |
| */ |
| public CommandImageService(final CommandImageManager commandImageManager, |
| final ICommandService commandService) { |
| if (commandImageManager == null) { |
| throw new NullPointerException( |
| "Cannot create a command image service with a null manager"); //$NON-NLS-1$ |
| } |
| if (commandService == null) { |
| throw new NullPointerException( |
| "Cannot create a command image service with a null command service"); //$NON-NLS-1$ |
| } |
| this.commandImageManager = commandImageManager; |
| this.commandImagePersistence = new CommandImagePersistence( |
| commandImageManager, commandService); |
| } |
| |
| /** |
| * Binds a particular image descriptor to a command id, type and style |
| * triple |
| * |
| * @param commandId |
| * The identifier of the command to which the image should be |
| * bound; must not be <code>null</code>. |
| * @param type |
| * The type of image to retrieve. This value must be one of the |
| * <code>TYPE</code> constants defined in this class. |
| * @param style |
| * The style of the image; may be <code>null</code>. |
| * @param descriptor |
| * The image descriptor. Should not be <code>null</code>. |
| */ |
| public final void bind(final String commandId, final int type, |
| final String style, final ImageDescriptor descriptor) { |
| commandImageManager.bind(commandId, type, style, descriptor); |
| } |
| |
| /** |
| * Binds a particular image path to a command id, type and style triple |
| * |
| * @param commandId |
| * The identifier of the command to which the image should be |
| * bound; must not be <code>null</code>. |
| * @param type |
| * The type of image to retrieve. This value must be one of the |
| * <code>TYPE</code> constants defined in this class. |
| * @param style |
| * The style of the image; may be <code>null</code>. |
| * @param url |
| * The URL to the image. Should not be <code>null</code>. |
| */ |
| public final void bind(final String commandId, final int type, |
| final String style, final URL url) { |
| commandImageManager.bind(commandId, type, style, url); |
| } |
| |
| public final void dispose() { |
| commandImagePersistence.dispose(); |
| } |
| |
| /** |
| * Generates a style tag that is not currently used for the given command. |
| * This can be used by applications trying to create a unique style for a |
| * new set of images. |
| * |
| * @param commandId |
| * The identifier of the command for which a unique style is |
| * required; must not be <code>null</code>. |
| * @return A style tag that is not currently used; may be <code>null</code>. |
| */ |
| public final String generateUnusedStyle(final String commandId) { |
| return commandImageManager.generateUnusedStyle(commandId); |
| } |
| |
| public final ImageDescriptor getImageDescriptor(final String commandId) { |
| return commandImageManager.getImageDescriptor(commandId); |
| } |
| |
| public final ImageDescriptor getImageDescriptor(final String commandId, |
| final int type) { |
| return commandImageManager.getImageDescriptor(commandId, type); |
| } |
| |
| public final ImageDescriptor getImageDescriptor(final String commandId, |
| final int type, final String style) { |
| return commandImageManager.getImageDescriptor(commandId, type, style); |
| } |
| |
| public final ImageDescriptor getImageDescriptor(final String commandId, |
| final String style) { |
| return commandImageManager.getImageDescriptor(commandId, style); |
| } |
| |
| public final void readRegistry() { |
| commandImagePersistence.read(); |
| } |
| } |