Eclipseplugins
OpenMergeToolHandler.java
1 package com.proalpha.pds.gitutils.common;
2 
3 import java.util.ArrayList;
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.swt.SWT;
13 import org.eclipse.swt.widgets.Shell;
14 import org.eclipse.ui.handlers.HandlerUtil;
15 
16 public class OpenMergeToolHandler<T extends RepositoryTreeNode<?>> extends AbstractHandler {
17 
18  @Override
19  public Object execute(ExecutionEvent event) throws ExecutionException {
20 
21  com.proalpha.pds.gitutils.common.Repository repository = com.proalpha.pds.gitutils.common.Repository
22  .getInstance();
23 
24  Object repo = getSelectedNodes(event).getFirstElement();
25  if (repo instanceof RepositoryTreeNode) {
26  repository.setRepositoryPath(((RepositoryTreeNode) repo).getRepository().getDirectory());
27  }
28 
29  List<String> fileList = repository.getConflictingFiles();
30  if (fileList == null) {
31  fileList = new ArrayList<String>();
32  }
33  FileToMergeSelectDialog dialog = new FileToMergeSelectDialog(new Shell(),
34  SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL, repository.getRepositoryPath(), fileList);
35  dialog.open();
36 
37  return null;
38  }
39 
40  private IStructuredSelection getSelectedNodes(ExecutionEvent event) throws ExecutionException {
41  ISelection selection = HandlerUtil.getCurrentSelectionChecked(event);
42  if (selection instanceof IStructuredSelection)
43  return ((IStructuredSelection) selection);
44  else
45  return null;
46  }
47 }