Updating versions of project dependencies: jdkBuild->11_0_8b1098.1
[idea/community.git] / java / idea-ui / src / com / intellij / projectImport / ProjectFormatPanel.java
index 343022e861afee9e3ae56062582d52aea9a7e65b..c1281502057c14d80d6db7041aba66bc5eed0a96 100644 (file)
@@ -1,26 +1,34 @@
 // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
 package com.intellij.projectImport;
 
+import com.intellij.ide.JavaUiBundle;
 import com.intellij.ide.util.PropertiesComponent;
 import com.intellij.ide.util.projectWizard.WizardContext;
 import com.intellij.openapi.components.StorageScheme;
 import com.intellij.openapi.project.Project;
+import com.intellij.openapi.util.NlsContexts;
+import com.intellij.ui.SimpleListCellRenderer;
 import org.jetbrains.annotations.NotNull;
 
 import javax.swing.*;
 
 public class ProjectFormatPanel {
   private static final String STORAGE_FORMAT_PROPERTY = "default.storage.format";
-  public static final String DIR_BASED = Project.DIRECTORY_STORE_FOLDER + " (directory based)";
-  private static final String FILE_BASED = ".ipr (file based)";
 
-  private JComboBox<String> myStorageFormatCombo;
+  private JComboBox<StorageFormat> myStorageFormatCombo;
   private JPanel myWholePanel;
 
   public ProjectFormatPanel() {
-    myStorageFormatCombo.insertItemAt(DIR_BASED, 0);
-    myStorageFormatCombo.insertItemAt(FILE_BASED, 1);
-    myStorageFormatCombo.setSelectedItem(PropertiesComponent.getInstance().getValue(STORAGE_FORMAT_PROPERTY, DIR_BASED));
+    myStorageFormatCombo.insertItemAt(StorageFormat.DIR_BASED, 0);
+    myStorageFormatCombo.insertItemAt(StorageFormat.FILE_BASED, 1);
+
+    final PropertiesComponent instance = PropertiesComponent.getInstance();
+    final String savedValue = instance.getValue(STORAGE_FORMAT_PROPERTY, StorageFormat.DIR_BASED.getTag());
+    myStorageFormatCombo.setSelectedItem(StorageFormat.of(savedValue));
+
+    final SimpleListCellRenderer<StorageFormat> renderer = SimpleListCellRenderer.create(StorageFormat.FILE_BASED.getTitle(),
+                                                                                         LocalizationAware::getTitle);
+    myStorageFormatCombo.setRenderer(renderer);
   }
 
   public JPanel getPanel() {
@@ -28,14 +36,16 @@ public class ProjectFormatPanel {
   }
 
   @NotNull
-  public JComboBox getStorageFormatComboBox() {
+  public JComboBox<StorageFormat> getStorageFormatComboBox() {
     return myStorageFormatCombo;
   }
 
   public void updateData(@NotNull WizardContext context) {
-    StorageScheme format = FILE_BASED.equals(myStorageFormatCombo.getSelectedItem()) ? StorageScheme.DEFAULT : StorageScheme.DIRECTORY_BASED;
+    final StorageScheme format = isDefault() ? StorageScheme.DEFAULT : StorageScheme.DIRECTORY_BASED;
     context.setProjectStorageFormat(format);
-    PropertiesComponent.getInstance().setValue(STORAGE_FORMAT_PROPERTY, isDefault() ? FILE_BASED : DIR_BASED, DIR_BASED);
+    final StorageFormat storageFormat = StorageFormat.of(format);
+    final PropertiesComponent instance = PropertiesComponent.getInstance();
+    instance.setValue(STORAGE_FORMAT_PROPERTY, storageFormat.getTag(), StorageFormat.DIR_BASED.getTag());
   }
 
   public void setVisible(boolean visible) {
@@ -43,6 +53,52 @@ public class ProjectFormatPanel {
   }
 
   public boolean isDefault() {
-    return FILE_BASED.equals(myStorageFormatCombo.getSelectedItem());
+    final StorageFormat selectedItem = (StorageFormat)myStorageFormatCombo.getSelectedItem();
+    return StorageFormat.isDefault(selectedItem);
+  }
+
+  private interface LocalizationAware {
+    @NlsContexts.Label String getTitle();
+  }
+
+  public enum StorageFormat implements LocalizationAware {
+    DIR_BASED(".idea (directory based)") {
+      @Override public String getTitle(){
+        return JavaUiBundle.message("label.directory.based", Project.DIRECTORY_STORE_FOLDER);
+      }
+    },
+    FILE_BASED(".ipr (file based)") {
+      @Override public String getTitle(){
+        return JavaUiBundle.message("label.ipr.file.based");
+      }
+    };
+
+    private final String myTag;
+
+    StorageFormat(String tag) {
+      myTag = tag;
+    }
+
+    String getTag() {
+      return myTag;
+    }
+
+    private static @NotNull StorageFormat of(@NotNull final String tag) {
+      if (DIR_BASED.getTag().equals(tag)) return DIR_BASED;
+      return FILE_BASED;
+    }
+
+    private static @NotNull StorageFormat of(@NotNull final StorageScheme id) {
+      switch (id) {
+        case DIRECTORY_BASED: return DIR_BASED;
+        case DEFAULT: return FILE_BASED;
+        default:
+          throw new IllegalStateException("Unexpected value: " + id);
+      }
+    }
+
+    public static boolean isDefault(StorageFormat storageFormat) {
+      return FILE_BASED == storageFormat;
+    }
   }
 }
\ No newline at end of file