コード例 #1
0
    public AppCommand getCommand(
        KeySequence keys, int editorMode, Map<AppCommand, Boolean> maskedCommands) {
      if (!bindings_.containsKey(keys)) return null;

      List<AppCommandBinding> commands = bindings_.get(keys);
      for (AppCommandBinding binding : commands) {
        int disableModes = binding.getShortcut().getDisableModes();
        AppCommand command = binding.getCommand();

        // If this command is masked by another command, skip it.
        if (maskedCommands != null && maskedCommands.containsKey(command)) continue;

        // Check to see whether this command is enabled for the current
        // editor mode.
        boolean enabled = command.isEnabled() && (disableModes & editorMode) == 0;

        if (enabled) return command;
      }

      return null;
    }
コード例 #2
0
  private boolean dispatch(
      KeyboardShortcut shortcut,
      Map<KeyboardShortcut, ArrayList<AppCommand>> bindings,
      NativeEvent event,
      Map<AppCommand, Boolean> maskedCommandsMap) {
    if (!bindings.containsKey(shortcut) || bindings.get(shortcut) == null) return false;

    AppCommand command = null;
    for (int i = 0; i < bindings.get(shortcut).size(); i++) {
      command = bindings.get(shortcut).get(i);
      if (command != null) {
        boolean enabled = isEnabled() && command.isEnabled();

        // some commands want their keyboard shortcut to pass through
        // to the browser when they are disabled (e.g. Cmd+W)
        if (!enabled && !command.preventShortcutWhenDisabled()) return false;

        // if we've remapped an AppCommand to a new binding, it's
        // implicitly disabled
        if (maskedCommandsMap != null && maskedCommandsMap.containsKey(command)) {
          command = null;
          continue;
        }

        event.preventDefault();

        // if this command is enabled, execute it and stop looking
        if (enabled) {
          command.executeFromShortcut();
          break;
        }
      }
    }

    return command != null;
  }