Eclipseplugins
MultiCherryPickHandler.java
1 package com.proalpha.pds.gitutils.cherrypick;
2 
3 import java.util.Collections;
4 import java.util.List;
5 
6 import org.eclipse.core.commands.AbstractHandler;
7 import org.eclipse.core.commands.ExecutionEvent;
8 import org.eclipse.core.commands.ExecutionException;
9 import org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode;
10 import org.eclipse.jface.viewers.ISelection;
11 import org.eclipse.jface.viewers.IStructuredSelection;
12 import org.eclipse.jface.window.Window;
13 import org.eclipse.jface.wizard.WizardDialog;
14 import org.eclipse.jgit.lib.Repository;
15 import org.eclipse.swt.widgets.Shell;
16 import org.eclipse.ui.handlers.HandlerUtil;
17 import org.slf4j.Logger;
18 import org.slf4j.LoggerFactory;
19 
20 public class MultiCherryPickHandler<T extends RepositoryTreeNode<?>> extends AbstractHandler {
21 
22  private final Logger logger = LoggerFactory.getLogger(this.getClass());
23 
24  @Override
25  public Object execute(ExecutionEvent event) throws ExecutionException {
26 
27  RepositoryTreeNode<?> treenode = (RepositoryTreeNode<?>) getSelectedNodes(event).get(0);
28 
29  Repository repository = treenode.getRepository();
30  MultiCherryPickWizard wizz = new MultiCherryPickWizard(repository);
31  WizardDialog wdl = new WizardDialog(getShell(event), wizz);
32  if (wdl.open() == Window.OK) {
33  logger.debug("Ok pressed");
34  } else {
35  logger.debug("Cancel pressed");
36  }
37 
38  return null;
39  }
40 
41  @SuppressWarnings("unchecked")
42  public List<T> getSelectedNodes(ExecutionEvent event)
43  throws ExecutionException {
44  ISelection selection = HandlerUtil.getCurrentSelectionChecked(event);
45  if (selection instanceof IStructuredSelection)
46  return ((IStructuredSelection) selection).toList();
47  else
48  return Collections.emptyList();
49  }
50 
51  public Shell getShell(ExecutionEvent event) {
52  return HandlerUtil.getActiveShell(event);
53  }
54 }