org.eclipse.ui.keys.IBindingService Maven / Gradle / Ivy
Show all versions of workbench Show documentation
/*******************************************************************************
* Copyright (c) 2005, 2006 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.keys;
import java.io.IOException;
import java.util.Map;
import org.eclipse.core.commands.ParameterizedCommand;
import org.eclipse.jface.bindings.Binding;
import org.eclipse.jface.bindings.Scheme;
import org.eclipse.jface.bindings.TriggerSequence;
import org.eclipse.ui.commands.ICommandService;
import org.eclipse.ui.services.IDisposable;
/**
*
* Provides services related to the binding architecture (e.g., keyboard
* shortcuts) within the workbench. This service can be used to access the
* currently active bindings, as well as the current state of the binding
* architecture.
*
*
* This interface should not be implemented or extended by clients.
*
*
* @since 3.1
*/
public interface IBindingService extends IDisposable {
/**
* The default default value for the active scheme id. This value can be
* overridden using the "plugin_customization.ini" file. The
* BindingPersistence
code needs to know this value so it can
* try to decide if someone overrode the default.
*/
public static final String DEFAULT_DEFAULT_ACTIVE_SCHEME_ID = "org.eclipse.ui.defaultAcceleratorConfiguration"; //$NON-NLS-1$
/**
* Gets the active bindings for a given parameterized command.
*
* @param parameterizedCommand
* The fully-parameterized command for which the active bindings
* should be found; must not be null
.
* @return The array of all active bindings for the given command. This
* collection may be empty, but it is never null
.
*/
public TriggerSequence[] getActiveBindingsFor(
ParameterizedCommand parameterizedCommand);
/**
* Gets the active bindings for a given command identifier. It is assumed
* that the command has no parameters.
*
* @param commandId
* The id of the command for which the active bindings should be
* found; must not be null
.
* @return The array of all active bindings for the given command. This
* collection may be empty, but it is never null
.
*/
public TriggerSequence[] getActiveBindingsFor(String commandId);
/**
* Returns the currently active scheme.
*
* @return The currently active scheme. This value may (in certain rare
* circumstances) be null
.
*/
public Scheme getActiveScheme();
/**
* Gets the best active binding for a command. The best binding is the one
* that would be most appropriate to show in a menu. Bindings which belong
* to a child scheme are given preference over those in a parent scheme.
* Bindings which belong to a particular locale or platform are given
* preference over those that do not. The rest of the calculaton is based
* most on various concepts of "length", as well as giving some modifier
* keys preference (e.g., Alt
is less likely to appear than
* Ctrl
).
*
* @param commandId
* The identifier of the command for which the best active
* binding should be retrieved; must not be null
.
* @return The trigger sequence for the best binding; may be
* null
if no bindings are active for the given
* command.
* @since 3.2
*/
public TriggerSequence getBestActiveBindingFor(String commandId);
/**
* Gets the formatted string representing the best active binding for a
* command. The best binding is the one that would be most appropriate to
* show in a menu. Bindings which belong to a child scheme are given
* preference over those in a parent scheme. The rest of the calculaton is
* based most on various concepts of "length", as well as giving some
* modifier keys preference (e.g., Alt
is less likely to
* appear than Ctrl
).
*
* @param commandId
* The identifier of the command for which the best active
* binding should be retrieved; must not be null
.
* @return The formatted string for the best binding; may be
* null
if no bindings are active for the given
* command.
* @since 3.2
*/
public String getBestActiveBindingFormattedFor(String commandId);
/**
* Returns the current set of bindings.
*
* @return The current array of bindings (Binding
).
*/
public Binding[] getBindings();
/**
* Returns the current state of the key binding buffer. This will contain
* all of the keys currently awaiting processing. If the system is currently
* executing a command (as a result of a key press), then this will contain
* the trigger sequence used to execute the command. If the key binding
* architecture has seen part of multi-key binding, then this will contain
* the part that it has seen. Otherwise, this will return nothing.
*
* @return The trigger sequence indicating the current state of the key
* binding buffer; never null
, but may be empty if
* there is nothing in the buffer.
* @since 3.2
*/
public TriggerSequence getBuffer();
/**
* Returns the default scheme identifier for the currently running
* application.
*
* @return The default scheme identifier (String
); never
* null
, but may be empty or point to an undefined
* scheme.
*/
public String getDefaultSchemeId();
/**
* Returns the array of defined schemes in the workbench.
*
* @return The array of schemes (Scheme
) that are defined;
* it may be null
, and it may be empty.
*/
public Scheme[] getDefinedSchemes();
/**
* Returns the currently active locale.
*
* @return The current locale.
*/
public String getLocale();
/**
* Returns all of the possible bindings that start with the given trigger
* (but are not equal to the given trigger).
*
* @param trigger
* The prefix to look for; must not be null
.
* @return A map of triggers (TriggerSequence
) to bindings (Binding
).
* This map may be empty, but it is never null
.
*/
public Map getPartialMatches(TriggerSequence trigger);
/**
* Returns the command identifier for the active binding matching this
* trigger, if any.
*
* @param trigger
* The trigger to match; may be null
.
* @return The binding that matches, if any; null
otherwise.
*/
public Binding getPerfectMatch(TriggerSequence trigger);
/**
* Returns the currently active platform.
*
* @return The current platform.
*/
public String getPlatform();
/**
* Retrieves the scheme with the given identifier. If no such scheme exists,
* then an undefined scheme with the given id is created.
*
* @param schemeId
* The identifier to find; must not be null
.
* @return A scheme with the given identifier, either defined or undefined.
*/
public Scheme getScheme(String schemeId);
/**
* Tests whether the global key binding architecture is currently active.
*
* @return true
if the key bindings are active;
* false
otherwise.
*/
public boolean isKeyFilterEnabled();
/**
* Returns whether the given trigger sequence is a partial match for the
* given sequence.
*
* @param trigger
* The sequence which should be the prefix for some binding;
* should not be null
.
* @return true
if the trigger can be found in the active
* bindings; false
otherwise.
*/
public boolean isPartialMatch(TriggerSequence trigger);
/**
* Returns whether the given trigger sequence is a perfect match for the
* given sequence.
*
* @param trigger
* The sequence which should match exactly; should not be
* null
.
* @return true
if the trigger can be found in the active
* bindings; false
otherwise.
*/
public boolean isPerfectMatch(TriggerSequence trigger);
/**
* Opens the key assistant dialog positioned near the key binding entry in
* the status bar.
*/
public void openKeyAssistDialog();
/**
*
* Reads the binding information from the registry and the preferences. This
* will overwrite any of the existing information in the binding service.
* This method is intended to be called during start-up. When this method
* completes, this binding service will reflect the current state of the
* registry and preference store.
*
*
* @param commandService
* Ignored.
*/
public void readRegistryAndPreferences(ICommandService commandService);
/**
*
* Writes the given active scheme and bindings to the preference store. Only
* the bindings that are of the Binding.USER
type will be
* written; the others will be ignored. This should only be used by
* applications trying to persist user preferences. If you are trying to
* change the active scheme as an RCP application, then you should be using
* the plugin_customization.ini
file. If you are trying to
* switch between groups of bindings dynamically, you should be using
* contexts.
*
*
* This method also updates the active scheme and bindings in the system to
* match those written to the preference store.
*
*
* @param activeScheme
* The scheme which should be persisted; may be null
.
* @param bindings
* The bindings which should be persisted; may be
* null
.
* @throws IOException
* If something goes wrong while writing to the preference
* store.
* @see org.eclipse.ui.IWorkbenchPreferenceConstants
* @see org.eclipse.ui.contexts.IContextService
*/
public void savePreferences(Scheme activeScheme, Binding[] bindings)
throws IOException;
/**
*
* Enables or disables the global key binding architecture. The architecture
* should be enabled by default.
*
*
* When enabled, keyboard shortcuts are active, and that key events can
* trigger commands. This also means that widgets may not see all key events
* (as they might be trapped as a keyboard shortcut).
*
*
* When disabled, no key events will trapped as keyboard shortcuts, and that
* no commands can be triggered by keyboard events. (Exception: it is
* possible that someone listening for key events on a widget could trigger
* a command.)
*
*
* @param enabled
* Whether the key filter should be enabled.
*/
public void setKeyFilterEnabled(boolean enabled);
}