blob: cef7cf6a998d445992fc136e9d84c3948b5ce540 [file] [log] [blame]
/*
* Copyright (c) 2004 - 2011 Eike Stepper (Berlin, Germany) 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:
* Eike Stepper - initial API and implementation
*/
package org.eclipse.emf.cdo.releng.wingit;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.ui.IObjectActionDelegate;
import org.eclipse.ui.IWorkbenchPart;
import java.io.File;
/**
* @author Eike Stepper
*/
public class GitAction implements IObjectActionDelegate
{
private IWorkbenchPart targetPart;
private Repository repository;
public GitAction()
{
}
public void setActivePart(IAction action, IWorkbenchPart targetPart)
{
this.targetPart = targetPart;
}
public void selectionChanged(IAction action, ISelection selection)
{
repository = null;
if (selection instanceof IStructuredSelection)
{
IStructuredSelection ssel = (IStructuredSelection)selection;
Object element = ssel.getFirstElement();
if (element instanceof IAdaptable)
{
IAdaptable adaptable = (IAdaptable)element;
repository = (Repository)adaptable.getAdapter(Repository.class);
}
}
}
public void run(IAction action)
{
if (repository != null)
{
String gitBash = WinGit.getGitBash(targetPart.getSite().getShell());
try
{
File workTree = repository.getWorkTree();
Runtime.getRuntime().exec(
"cmd /c cd \"" + workTree.getAbsolutePath() + "\" && start cmd.exe /c \"" + gitBash + "\" --login -i");
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
}