Package org.eclipse.ui.internal.quickaccess

Source Code of org.eclipse.ui.internal.quickaccess.CommandElement

/*******************************************************************************
* Copyright (c) 2006, 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.quickaccess;

import org.eclipse.core.commands.Command;
import org.eclipse.core.commands.ParameterizedCommand;
import org.eclipse.core.commands.common.NotDefinedException;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.handlers.IHandlerService;
import org.eclipse.ui.internal.misc.StatusUtil;
import org.eclipse.ui.statushandlers.StatusManager;

/**
* @since 3.3
*
*/
public class CommandElement extends QuickAccessElement {

  private static final String separator = " - "; //$NON-NLS-1$

  private ParameterizedCommand command;

  private String id;

  /* package */CommandElement(ParameterizedCommand command, String id,
      CommandProvider commandProvider) {
    super(commandProvider);
    this.id = id;
    this.command = command;
  }

  public void execute() {
    Object o = getProvider();
    if (o instanceof CommandProvider) {
      CommandProvider provider = (CommandProvider) o;
      if (provider.getRealHandlerService()!=null) {
        try {
          provider.getRealHandlerService().executeCommandInContext(
              command, null, provider.getContextSnapshot());
        } catch (Exception ex) {
          StatusUtil.handleStatus(ex, StatusManager.SHOW
              | StatusManager.LOG);
        }
        return;
      }
    }
   
    // let's try the old fashioned way
    IWorkbenchWindow window = PlatformUI.getWorkbench()
        .getActiveWorkbenchWindow();
    if (window != null) {
      IHandlerService handlerService = (IHandlerService) window
          .getWorkbench().getService(IHandlerService.class);
      try {
        handlerService.executeCommand(command, null);
      } catch (Exception ex) {
        StatusUtil.handleStatus(ex, StatusManager.SHOW
            | StatusManager.LOG);
      }
    }
  }

  public String getId() {
    return id;
  }

  public ImageDescriptor getImageDescriptor() {
    return null;
  }

  public String getLabel() {
    try {
      Command nestedCommand = command.getCommand();
      if (nestedCommand != null && nestedCommand.getDescription() != null
          && nestedCommand.getDescription().length() != 0) {
        return command.getName() + separator
            + nestedCommand.getDescription();
      }
      return command.getName();
    } catch (NotDefinedException e) {
      return command.toString();
    }
  }

  public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((command == null) ? 0 : command.hashCode());
    return result;
  }

  public boolean equals(Object obj) {
    if (this == obj)
      return true;
    if (obj == null)
      return false;
    if (getClass() != obj.getClass())
      return false;
    final CommandElement other = (CommandElement) obj;
    if (command == null) {
      if (other.command != null)
        return false;
    } else if (!command.equals(other.command))
      return false;
    return true;
  }
}
TOP

Related Classes of org.eclipse.ui.internal.quickaccess.CommandElement

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.