Package bndtools.release

Source Code of bndtools.release.ReleaseAction

/*******************************************************************************
* Copyright (c) 2010 Per Kr. Soreide.
* 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:
*     Per Kr. Soreide - initial API and implementation
*******************************************************************************/
package bndtools.release;

import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.ui.IActionDelegate;
import org.eclipse.ui.IObjectActionDelegate;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PlatformUI;

import aQute.bnd.build.Project;
import bndtools.central.Central;
import bndtools.release.nl.Messages;

public class ReleaseAction implements IObjectActionDelegate {
//  @SuppressWarnings("unused")
//  private IWorkbenchPart targetPart;

  private Map<Project, List<File>> bndFiles;

  public void run(IAction action) {

    if (bndFiles != null) {
            if (ReleaseHelper.getReleaseRepositories().length == 0) {
                Activator.message(Messages.noReleaseRepos);
                return;
            }

      if (!PlatformUI.getWorkbench().saveAllEditors(true)) {
        return;
      }

      for (Map.Entry<Project, List<File>> me : bndFiles.entrySet()) {

        Project project;
        try {
          project = me.getKey();
        } catch (Exception e) {
          throw new RuntimeException(e);
        }
        ReleaseDialogJob job;
        if (isBndBndSelected(me.getValue())) {
          job = new ReleaseDialogJob(project, null);
        } else {
          job = new ReleaseDialogJob(project, me.getValue());
        }
        job.schedule();
      }
    }
  }

  private static boolean isBndBndSelected(List<File> files) {
    for (File file : files) {
      if (Project.BNDFILE.equals(file.getName())) {
        return true;
      }
    }
    return false;
  }

  /**
   * @see IActionDelegate#selectionChanged(IAction, ISelection)
   */
  public void selectionChanged(IAction action, ISelection selection) {
    IFile[] locations = getLocations(selection);
    bndFiles = new LinkedHashMap<Project, List<File>>();
    for (IFile iFile : locations) {
      File file = iFile.getLocation().toFile();
      Project project;
      try {
          IProject iProject = iFile.getProject();
        project = Central.getWorkspace().getProject(iProject.getName());
        // .bnd files exists in cnf that are unreleasable
        if (project == null || project.isCnf()) {
            continue;
        }
      } catch (Exception e) {
        throw new RuntimeException(e);
      }
      List<File> projectFiles = bndFiles.get(project);
      if (projectFiles == null) {
        projectFiles = new ArrayList<File>();
        bndFiles.put(project, projectFiles);
      }
      projectFiles.add(file);
    }
  }

  static
  IFile[] getLocations(ISelection selection) {
    if (selection != null && (selection instanceof StructuredSelection)) {
      StructuredSelection ss = (StructuredSelection) selection;
      IFile[] result = new IFile[ss.size()];
      int n = 0;
      for (@SuppressWarnings("unchecked") Iterator<IFile> i = ss.iterator(); i.hasNext();) {
        result[n++] = i.next();
      }
      return result;
    }
    return null;
  }

  public void setActivePart(IAction action, IWorkbenchPart targetPart) {
    // this.targetPart = targetPart;
  }

}
TOP

Related Classes of bndtools.release.ReleaseAction

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.