org.eclipse.jface.bindings.BindingManagerEvent Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.eclipse.jface Show documentation
Show all versions of org.eclipse.jface Show documentation
This is org.eclipse.jface jar used by Scout SDK
The newest version!
/*******************************************************************************
* Copyright (c) 2004, 2015 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.bindings;
import java.util.Collection;
import java.util.Map;
import org.eclipse.core.commands.ParameterizedCommand;
import org.eclipse.core.commands.common.AbstractBitSetEvent;
import org.eclipse.jface.util.Util;
/**
* An instance of this class describes changes to an instance of
* BindingManager
.
*
* This class is not intended to be extended by clients.
*
*
* @since 3.1
* @see IBindingManagerListener#bindingManagerChanged(BindingManagerEvent)
*/
public final class BindingManagerEvent extends AbstractBitSetEvent {
private final static TriggerSequence[] EMTPY_SEQUENCE = new TriggerSequence[0];
/**
* The bit used to represent whether the map of active bindings has changed.
*/
private static final int CHANGED_ACTIVE_BINDINGS = 1;
/**
* The bit used to represent whether the active scheme has changed.
*/
private static final int CHANGED_ACTIVE_SCHEME = 1 << 1;
/**
* The bit used to represent whether the active locale has changed.
*/
private static final int CHANGED_LOCALE = 1 << 2;
/**
* The bit used to represent whether the active platform has changed.
*/
private static final int CHANGED_PLATFORM = 1 << 3;
/**
* The bit used to represent whether the scheme's defined state has changed.
*/
private static final int CHANGED_SCHEME_DEFINED = 1 << 4;
/**
* The binding manager that has changed; this value is never
* null
.
*/
private final BindingManager manager;
/**
* The map of triggers (Collection
of
* TriggerSequence
) by parameterized command (ParameterizedCommand
)
* before the change occurred. This map may be empty and it may be
* null
.
*/
private final Map previousTriggersByParameterizedCommand;
/**
* The scheme that became defined or undefined. This value may be
* null
if no scheme changed its defined state.
*/
private final Scheme scheme;
/**
* Creates a new instance of this class.
*
* @param manager
* the instance of the binding manager that changed; must not be
* null
.
* @param activeBindingsChanged
* Whether the active bindings have changed.
* @param previousTriggersByParameterizedCommand
* The map of triggers (TriggerSequence
) by
* fully-parameterized command (ParameterizedCommand
)
* before the change occured. This map may be null
* or empty.
* @param activeSchemeChanged
* true, iff the active scheme changed.
* @param scheme
* The scheme that became defined or undefined; null
* if no scheme changed state.
* @param schemeDefined
* true
if the given scheme became defined;
* false
otherwise.
* @param localeChanged
* true
iff the active locale changed
* @param platformChanged
* true
iff the active platform changed
*/
public BindingManagerEvent(final BindingManager manager,
final boolean activeBindingsChanged,
final Map previousTriggersByParameterizedCommand,
final boolean activeSchemeChanged, final Scheme scheme,
final boolean schemeDefined, final boolean localeChanged,
final boolean platformChanged) {
if (manager == null) {
throw new NullPointerException(
"A binding manager event needs a binding manager"); //$NON-NLS-1$
}
this.manager = manager;
if (schemeDefined && (scheme == null)) {
throw new NullPointerException(
"If a scheme changed defined state, then there should be a scheme identifier"); //$NON-NLS-1$
}
this.scheme = scheme;
this.previousTriggersByParameterizedCommand = previousTriggersByParameterizedCommand;
if (activeBindingsChanged) {
changedValues |= CHANGED_ACTIVE_BINDINGS;
}
if (activeSchemeChanged) {
changedValues |= CHANGED_ACTIVE_SCHEME;
}
if (localeChanged) {
changedValues |= CHANGED_LOCALE;
}
if (platformChanged) {
changedValues |= CHANGED_PLATFORM;
}
if (schemeDefined) {
changedValues |= CHANGED_SCHEME_DEFINED;
}
}
/**
* Returns the instance of the manager that changed.
*
* @return the instance of the manager that changed. Guaranteed not to be
* null
.
*/
public final BindingManager getManager() {
return manager;
}
/**
* Returns the scheme that changed.
*
* @return The changed scheme
*/
public final Scheme getScheme() {
return scheme;
}
/**
* Returns whether the active bindings have changed.
*
* @return true
if the active bindings have changed;
* false
otherwise.
*/
public final boolean isActiveBindingsChanged() {
return ((changedValues & CHANGED_ACTIVE_BINDINGS) != 0);
}
/**
* Computes whether the active bindings have changed for a given command
* identifier.
*
* @param parameterizedCommand
* The fully-parameterized command whose bindings might have
* changed; must not be null
.
* @return true
if the active bindings have changed for the
* given command identifier; false
otherwise.
*/
public final boolean isActiveBindingsChangedFor(
final ParameterizedCommand parameterizedCommand) {
final TriggerSequence[] currentBindings = manager
.getActiveBindingsFor(parameterizedCommand);
final TriggerSequence[] previousBindings;
if (previousTriggersByParameterizedCommand != null) {
final Collection previousBindingCollection = (Collection) previousTriggersByParameterizedCommand
.get(parameterizedCommand);
if (previousBindingCollection == null) {
previousBindings = EMTPY_SEQUENCE;
} else {
previousBindings = (TriggerSequence[]) previousBindingCollection
.toArray(new TriggerSequence[previousBindingCollection
.size()]);
}
} else {
previousBindings = EMTPY_SEQUENCE;
}
return !Util.equals(currentBindings, previousBindings);
}
/**
* Returns whether or not the active scheme changed.
*
* @return true, iff the active scheme property changed.
*/
public final boolean isActiveSchemeChanged() {
return ((changedValues & CHANGED_ACTIVE_SCHEME) != 0);
}
/**
* Returns whether the locale has changed
*
* @return true
if the locale changed; false
* otherwise.
*/
public boolean isLocaleChanged() {
return ((changedValues & CHANGED_LOCALE) != 0);
}
/**
* Returns whether the platform has changed
*
* @return true
if the platform changed; false
* otherwise.
*/
public boolean isPlatformChanged() {
return ((changedValues & CHANGED_PLATFORM) != 0);
}
/**
* Returns whether the list of defined scheme identifiers has changed.
*
* @return true
if the list of scheme identifiers has
* changed; false
otherwise.
*/
public final boolean isSchemeChanged() {
return (scheme != null);
}
/**
* Returns whether or not the scheme became defined
*
* @return true
if the scheme became defined.
*/
public final boolean isSchemeDefined() {
return (((changedValues & CHANGED_SCHEME_DEFINED) != 0) && (scheme != null));
}
}