summaryrefslogtreecommitdiff
path: root/platform/lang-impl/src/com/intellij/application/options/ModulesComboBox.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/lang-impl/src/com/intellij/application/options/ModulesComboBox.java')
-rw-r--r--platform/lang-impl/src/com/intellij/application/options/ModulesComboBox.java93
1 files changed, 93 insertions, 0 deletions
diff --git a/platform/lang-impl/src/com/intellij/application/options/ModulesComboBox.java b/platform/lang-impl/src/com/intellij/application/options/ModulesComboBox.java
new file mode 100644
index 000000000000..17434cb0c7ba
--- /dev/null
+++ b/platform/lang-impl/src/com/intellij/application/options/ModulesComboBox.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2000-2012 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 com.intellij.application.options;
+
+import com.intellij.openapi.module.Module;
+import com.intellij.openapi.module.ModuleManager;
+import com.intellij.openapi.module.ModuleType;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.roots.ui.configuration.ModulesAlphaComparator;
+import com.intellij.openapi.ui.ComboBox;
+import com.intellij.ui.ComboboxSpeedSearch;
+import com.intellij.ui.SortedComboBoxModel;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @author nik
+ */
+public class ModulesComboBox extends ComboBox {
+ private final SortedComboBoxModel<Module> myModel;
+
+ public ModulesComboBox() {
+ this(new SortedComboBoxModel<Module>(ModulesAlphaComparator.INSTANCE));
+ }
+
+ private ModulesComboBox(final SortedComboBoxModel<Module> model) {
+ super(model);
+ myModel = model;
+ new ComboboxSpeedSearch(this){
+ @Override
+ protected String getElementText(Object element) {
+ if (element instanceof Module) {
+ return ((Module)element).getName();
+ } else if (element == null) {
+ return "";
+ }
+ return super.getElementText(element);
+ }
+ };
+ setRenderer(new ModuleListCellRenderer());
+ }
+
+ public void setModules(@NotNull Collection<Module> modules) {
+ myModel.setAll(modules);
+ }
+
+ public void fillModules(@NotNull Project project) {
+ fillModules(project, null);
+ }
+
+ public void fillModules(@NotNull Project project, final @Nullable ModuleType moduleType) {
+ Module[] allModules = ModuleManager.getInstance(project).getModules();
+ if (moduleType == null) {
+ setModules(Arrays.asList(allModules));
+ }
+ else {
+ List<Module> modules = new ArrayList<Module>();
+ for (Module module : allModules) {
+ if (moduleType.equals(ModuleType.get(module))) {
+ modules.add(module);
+ }
+ }
+ setModules(modules);
+ }
+ }
+
+ public void setSelectedModule(@Nullable Module module) {
+ myModel.setSelectedItem(module);
+ }
+
+ @Nullable
+ public Module getSelectedModule() {
+ return myModel.getSelectedItem();
+ }
+}