| /******************************************************************************* |
| * Copyright (c) 2004, 2005 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.jface.commands; |
| |
| /** |
| * <p> |
| * An event indicating that the image bindings have changed. |
| * </p> |
| * <p> |
| * Clients must neither instantiate nor extend. |
| * </p> |
| * <p> |
| * <strong>EXPERIMENTAL</strong>. This class or interface has been added as |
| * part of a work in progress. There is a guarantee neither that this API will |
| * work nor that it will remain the same. Please do not use this API without |
| * consulting with the Platform/UI team. |
| * </p> |
| * |
| * @since 3.2 |
| * @see ICommandImageManagerListener#commandImageManagerChanged(CommandImageManagerEvent) |
| */ |
| public final class CommandImageManagerEvent { |
| |
| /** |
| * The identifiers of the commands whose image bindings have changed. This |
| * value is never <code>null</code> and never empty. |
| */ |
| private final String[] changedCommandIds; |
| |
| /** |
| * The command image manager that has changed. This value is never |
| * <code>null</code>. |
| */ |
| private final CommandImageManager commandImageManager; |
| |
| /** |
| * The style of image that changed. |
| */ |
| private final String style; |
| |
| /** |
| * The type of image that changed. |
| */ |
| private final int type; |
| |
| /** |
| * Creates a new instance of this class. |
| * |
| * @param commandImageManager |
| * the instance of the manager that changed; must not be |
| * <code>null</code>. |
| * @param changedCommandIds |
| * The identifiers of the commands whose image bindings have |
| * changed; this value must not be <code>null</code> and must |
| * not be empty. This value is not copied. |
| */ |
| CommandImageManagerEvent(final CommandImageManager commandImageManager, |
| final String[] changedCommandIds, final int type, final String style) { |
| if (commandImageManager == null) { |
| throw new NullPointerException("An event must refer to its manager"); //$NON-NLS-1$ |
| } |
| |
| if ((changedCommandIds == null) || (changedCommandIds.length < 1)) { |
| throw new IllegalArgumentException( |
| "There must be at least one change command identifier"); //$NON-NLS-1$ |
| } |
| |
| this.commandImageManager = commandImageManager; |
| this.changedCommandIds = changedCommandIds; |
| this.type = type; |
| this.style = style; |
| } |
| |
| /** |
| * Returns the identifiers of the commands whose bindings have changed. |
| * |
| * @return The identifiers of the commands whose bindings have changed; |
| * neither <code>null</code> nor empty. |
| */ |
| public final String[] getChangedCommandIds() { |
| final String[] copy = new String[changedCommandIds.length]; |
| System.arraycopy(changedCommandIds, 0, copy, 0, |
| changedCommandIds.length); |
| return copy; |
| } |
| |
| /** |
| * Returns the instance of the interface that changed. |
| * |
| * @return the instance of the interface that changed. Guaranteed not to be |
| * <code>null</code>. |
| */ |
| public final CommandImageManager getCommandImageManager() { |
| return commandImageManager; |
| } |
| |
| /** |
| * Returns whether one of the images of the given command has changed. |
| * |
| * @param commandId |
| * The identifier of the command to check; must not be |
| * <code>null</code>. |
| * @return <code>true</code> if one of the command's images has changed; |
| * <code>false</code> otherwise. |
| */ |
| public final boolean isCommandIdChanged(final String commandId) { |
| // PERFORMANCE |
| for (int i = 0; i < changedCommandIds.length; i++) { |
| if (commandId.equals(changedCommandIds[i])) { |
| return true; |
| } |
| } |
| |
| return false; |
| } |
| |
| /** |
| * Returns whether the image for the command has changed. |
| * |
| * @param commandId |
| * The identifier of the command to check; must not be |
| * <code>null</code>. |
| * @return <code>true</code> if the command's image has changed |
| * @see CommandImageManager#getImageDescriptor(String) |
| */ |
| public final boolean isCommandImageChanged(final String commandId) { |
| return isCommandIdChanged(commandId) |
| && (type == CommandImageManager.TYPE_DEFAULT) |
| && (style == null); |
| } |
| |
| /** |
| * Returns whether the image of the given type for the command has changed. |
| * |
| * @param commandId |
| * The identifier of the command to check; must not be |
| * <code>null</code>. |
| * @param type |
| * The type of image, one of |
| * {@link CommandImageManager#TYPE_DEFAULT}, |
| * {@link CommandImageManager#TYPE_DISABLED} or |
| * {@link CommandImageManager#TYPE_HOVER}. |
| * @return <code>true</code> if the command's image of the given type has |
| * changed. |
| * @see CommandImageManager#getImageDescriptor(String, int) |
| */ |
| public final boolean isCommandImageChanged(final String commandId, |
| final int type) { |
| return isCommandIdChanged(commandId) |
| && ((type == CommandImageManager.TYPE_DEFAULT) || (type == this.type)) |
| && (style == null); |
| } |
| |
| /** |
| * Returns whether the image of the given type and style for the command has |
| * changed. |
| * |
| * @param commandId |
| * The identifier of the command to check; must not be |
| * <code>null</code>. |
| * @param type |
| * The type of image, one of |
| * {@link CommandImageManager#TYPE_DEFAULT}, |
| * {@link CommandImageManager#TYPE_DISABLED} or |
| * {@link CommandImageManager#TYPE_HOVER}. |
| * @param style |
| * The style of the image; may be anything. |
| * @return <code>true</code> if the command's image of the given type and |
| * style has changed. |
| * @see CommandImageManager#getImageDescriptor(String, int, String) |
| */ |
| public final boolean isCommandImageChanged(final String commandId, |
| final int type, final String style) { |
| return isCommandIdChanged(commandId) |
| && ((type == CommandImageManager.TYPE_DEFAULT) || (type == this.type)) |
| && ((style == null) || (style.equals(this.style))); |
| } |
| |
| /** |
| * Returns whether the image of the given style for the command has changed. |
| * |
| * @param commandId |
| * The identifier of the command to check; must not be |
| * <code>null</code>. |
| * @param style |
| * The style of the image; may be anything. |
| * @return <code>true</code> if the command's image of the given style has |
| * changed. |
| * @see CommandImageManager#getImageDescriptor(String, String) |
| */ |
| public final boolean isCommandImageChanged(final String commandId, |
| final String style) { |
| return isCommandIdChanged(commandId) |
| && (type == CommandImageManager.TYPE_DEFAULT) |
| && ((style == null) || (style.equals(this.style))); |
| } |
| } |