mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
ExportSettings: do not show empty configurables
This commit is contained in:
+7
-7
@@ -33,6 +33,7 @@ import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.ui.FieldPanel;
|
||||
import com.intellij.util.Consumer;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -55,15 +56,14 @@ public class ChooseComponentsToExportDialog extends DialogWrapper {
|
||||
private final boolean myShowFilePath;
|
||||
private final String myDescription;
|
||||
|
||||
public ChooseComponentsToExportDialog(List<ExportableComponent> components,
|
||||
Map<File, Set<ExportableComponent>> fileToComponents,
|
||||
public ChooseComponentsToExportDialog(MultiMap<File, ExportableComponent> fileToComponents,
|
||||
boolean showFilePath, final String title, String description) {
|
||||
super(false);
|
||||
myDescription = description;
|
||||
myShowFilePath = showFilePath;
|
||||
Map<ExportableComponent, ComponentElementProperties> componentToContainingListElement = new LinkedHashMap<ExportableComponent, ComponentElementProperties>();
|
||||
|
||||
for (ExportableComponent component : components) {
|
||||
for (ExportableComponent component : fileToComponents.values()) {
|
||||
if (!addToExistingListElement(component, componentToContainingListElement, fileToComponents)) {
|
||||
ComponentElementProperties componentElementProperties = new ComponentElementProperties();
|
||||
componentElementProperties.addComponent(component);
|
||||
@@ -149,14 +149,14 @@ public class ChooseComponentsToExportDialog extends DialogWrapper {
|
||||
}
|
||||
|
||||
private static boolean addToExistingListElement(ExportableComponent component,
|
||||
Map<ExportableComponent,ComponentElementProperties> componentToContainingListElement,
|
||||
Map<File, Set<ExportableComponent>> fileToComponents) {
|
||||
Map<ExportableComponent, ComponentElementProperties> componentToContainingListElement,
|
||||
MultiMap<File, ExportableComponent> fileToComponents) {
|
||||
final File[] exportFiles = component.getExportFiles();
|
||||
File file = null;
|
||||
for (File exportFile : exportFiles) {
|
||||
final Set<ExportableComponent> tiedComponents = fileToComponents.get(exportFile);
|
||||
Collection<ExportableComponent> tiedComponents = fileToComponents.get(exportFile);
|
||||
|
||||
for (final ExportableComponent tiedComponent : tiedComponents) {
|
||||
for (ExportableComponent tiedComponent : tiedComponents) {
|
||||
if (tiedComponent == component) continue;
|
||||
final ComponentElementProperties elementProperties = componentToContainingListElement.get(tiedComponent);
|
||||
if (elementProperties != null && !FileUtil.filesEqual(exportFile, file)) {
|
||||
|
||||
@@ -35,7 +35,9 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import com.intellij.util.io.ZipUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
@@ -47,10 +49,18 @@ import java.util.jar.JarOutputStream;
|
||||
public class ExportSettingsAction extends AnAction implements DumbAware {
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
Project project = getEventProject(e);
|
||||
List<ExportableComponent> exportableComponents = new ArrayList<ExportableComponent>();
|
||||
Map<File,Set<ExportableComponent>> fileToComponents = getRegisteredComponentsAndFiles(exportableComponents);
|
||||
|
||||
final ChooseComponentsToExportDialog dialog = new ChooseComponentsToExportDialog(exportableComponents, fileToComponents, true,
|
||||
ApplicationManager.getApplication().saveSettings();
|
||||
|
||||
MultiMap<File, ExportableComponent> fileToComponents = getExportableComponentsMap();
|
||||
for (Iterator<File> it = fileToComponents.keySet().iterator(); it.hasNext(); ) {
|
||||
File file = it.next();
|
||||
if (!file.exists()) {
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
|
||||
final ChooseComponentsToExportDialog dialog = new ChooseComponentsToExportDialog(fileToComponents, true,
|
||||
IdeBundle.message("title.select.components.to.export"),
|
||||
IdeBundle.message(
|
||||
"prompt.please.check.all.components.to.export"));
|
||||
@@ -65,8 +75,6 @@ public class ExportSettingsAction extends AnAction implements DumbAware {
|
||||
ContainerUtil.addAll(exportFiles, markedComponent.getExportFiles());
|
||||
}
|
||||
|
||||
ApplicationManager.getApplication().saveSettings();
|
||||
|
||||
final File saveFile = dialog.getExportFile();
|
||||
try {
|
||||
if (saveFile.exists()) {
|
||||
@@ -121,24 +129,18 @@ public class ExportSettingsAction extends AnAction implements DumbAware {
|
||||
}
|
||||
}
|
||||
|
||||
public static Map<File, Set<ExportableComponent>> getRegisteredComponentsAndFiles(List<ExportableComponent> exportableComponents) {
|
||||
Map<File,Set<ExportableComponent>> fileToComponents = new HashMap<File, Set<ExportableComponent>>();
|
||||
@NotNull
|
||||
public static MultiMap<File, ExportableComponent> getExportableComponentsMap() {
|
||||
MultiMap<File, ExportableComponent> result = MultiMap.createSet();
|
||||
|
||||
final List<ExportableComponent> components = new ArrayList<ExportableComponent>(Arrays.asList(ApplicationManager.getApplication().getComponents(ExportableApplicationComponent.class)));
|
||||
ExportableApplicationComponent[] components1 = ApplicationManager.getApplication().getComponents(ExportableApplicationComponent.class);
|
||||
List<ExportableComponent> components2 = ServiceBean.loadServicesFromBeans(ExportableComponent.EXTENSION_POINT, ExportableComponent.class);
|
||||
|
||||
components.addAll(ServiceBean.loadServicesFromBeans(ExportableComponent.EXTENSION_POINT, ExportableComponent.class));
|
||||
|
||||
for (ExportableComponent component : components) {
|
||||
exportableComponents.add(component);
|
||||
for (ExportableComponent component : ContainerUtil.concat(Arrays.asList(components1), components2)) {
|
||||
for (File exportFile : component.getExportFiles()) {
|
||||
Set<ExportableComponent> componentsTied = fileToComponents.get(exportFile);
|
||||
if (componentsTied == null) {
|
||||
componentsTied = new HashSet<ExportableComponent>();
|
||||
fileToComponents.put(exportFile, componentsTied);
|
||||
}
|
||||
componentsTied.add(component);
|
||||
result.putValue(exportFile, component);
|
||||
}
|
||||
}
|
||||
return fileToComponents;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,13 +36,17 @@ import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.updateSettings.impl.UpdateSettings;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.util.Consumer;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import com.intellij.util.io.ZipUtil;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipException;
|
||||
import java.util.zip.ZipFile;
|
||||
@@ -77,10 +81,10 @@ public class ImportSettingsAction extends AnAction implements DumbAware {
|
||||
return;
|
||||
}
|
||||
|
||||
final ArrayList<ExportableComponent> registeredComponents = new ArrayList<ExportableComponent>();
|
||||
final Map<File, Set<ExportableComponent>> filesToComponents = ExportSettingsAction.getRegisteredComponentsAndFiles(registeredComponents);
|
||||
List<ExportableComponent> components = getComponentsStored(saveFile, registeredComponents);
|
||||
final ChooseComponentsToExportDialog dialog = new ChooseComponentsToExportDialog(components, filesToComponents, false,
|
||||
MultiMap<File, ExportableComponent> filesToComponents = ExportSettingsAction.getExportableComponentsMap();
|
||||
List<ExportableComponent> components = getComponentsStored(saveFile, ContainerUtil.newArrayList(filesToComponents.values()));
|
||||
filesToComponents.values().retainAll(components);
|
||||
final ChooseComponentsToExportDialog dialog = new ChooseComponentsToExportDialog(filesToComponents, false,
|
||||
IdeBundle.message("title.select.components.to.import"),
|
||||
IdeBundle.message("prompt.check.components.to.import"));
|
||||
dialog.show();
|
||||
|
||||
Reference in New Issue
Block a user