/* * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jetbrains.osgi.bnd.imp; import aQute.bnd.build.Workspace; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; import java.util.Collections; public class ReimportProjectsAction extends AnAction { @Override public void update(@NotNull AnActionEvent e) { Workspace workspace = BndProjectImporter.getWorkspace(e.getProject()); boolean available = workspace != null && !getProjectDirs(e.getData(CommonDataKeys.VIRTUAL_FILE_ARRAY)).isEmpty(); e.getPresentation().setEnabledAndVisible(available); } @Override public void actionPerformed(@NotNull AnActionEvent e) { Project project = e.getProject(); if (project != null) { Collection<String> projectDirs = getProjectDirs(e.getData(CommonDataKeys.VIRTUAL_FILE_ARRAY)); if (!projectDirs.isEmpty()) { BndProjectImporter.reimportProjects(project, projectDirs); } } } private static Collection<String> getProjectDirs(@Nullable VirtualFile[] files) { if (files == null || files.length <= 0) { return Collections.emptyList(); } Collection<String> projectDirs = ContainerUtil.newArrayListWithCapacity(files.length); for (VirtualFile file : files) { if (!file.isInLocalFileSystem()) { continue; } if (!file.isDirectory() && BndProjectImporter.BND_FILE.equals(file.getName())) { projectDirs.add(file.getParent().getPath()); } else if (file.isDirectory() && file.findChild(BndProjectImporter.BND_FILE) != null) { projectDirs.add(file.getPath()); } } return projectDirs; } }