blob: 32321c5c80ac041b6e3e4b72328b1b40ff452759 [file] [log] [blame]
/*******************************************************************************
* 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();
}
}