Eclipseplugins
CherryPickHandler.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.core.expressions.IEvaluationContext;
10 import org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode;
11 import org.eclipse.jface.viewers.ISelection;
12 import org.eclipse.jface.viewers.IStructuredSelection;
13 import org.eclipse.jface.window.Window;
14 import org.eclipse.jface.wizard.WizardDialog;
15 import org.eclipse.jgit.lib.Repository;
16 import org.eclipse.swt.widgets.Shell;
17 import org.eclipse.ui.ISources;
18 import org.eclipse.ui.handlers.HandlerUtil;
19 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory;
21 
22 @SuppressWarnings("restriction")
23 public class CherryPickHandler<T extends RepositoryTreeNode<?>> extends AbstractHandler {
24 
25  private final Logger logger = LoggerFactory.getLogger(this.getClass());
26 
27  private IEvaluationContext evaluationContext;
28 
29  @Override
30  public Object execute(ExecutionEvent event) throws ExecutionException {
31 
32  RepositoryTreeNode<?> treenode = (RepositoryTreeNode<?>) getSelectedNodes(event).get(0);
33 
34  Repository repository = treenode.getRepository();
35  CherryPickWizard wizz = new CherryPickWizard(repository);
36  WizardDialog wdl = new WizardDialog(getShell(event), wizz);
37  if (wdl.open() == Window.OK) {
38  logger.debug("Ok pressed");
39  } else {
40  logger.debug("Cancel pressed");
41  }
42 
43  return null;
44  }
45 
46  @SuppressWarnings("unchecked")
47  protected List<T> getSelectedRepo() {
48  if (evaluationContext != null) {
49  Object selection = evaluationContext.getVariable(ISources.ACTIVE_MENU_SELECTION_NAME);
50  if (selection == null || !(selection instanceof IStructuredSelection))
51  selection = evaluationContext.getVariable(ISources.ACTIVE_CURRENT_SELECTION_NAME);
52  if (selection instanceof IStructuredSelection) {
53  return ((IStructuredSelection) selection).toList();
54  }
55  }
56  return null;
57  }
58 
59  @SuppressWarnings("unchecked")
60  public List<T> getSelectedNodes(ExecutionEvent event)
61  throws ExecutionException {
62  ISelection selection = HandlerUtil.getCurrentSelectionChecked(event);
63  if (selection instanceof IStructuredSelection)
64  return ((IStructuredSelection) selection).toList();
65  else
66  return Collections.emptyList();
67  }
68 
69  public Shell getShell(ExecutionEvent event) {
70  return HandlerUtil.getActiveShell(event);
71  }
72 
73  @Override
74  public void setEnabled(Object evaluationContext) {
75  if (evaluationContext instanceof IEvaluationContext)
76  this.evaluationContext = (IEvaluationContext) evaluationContext;
77  else
78  this.evaluationContext = null;
79  }
80 
81 }