combobox instead of buttons on the LogConsole panel
[fedora-idea.git] / platform / lang-impl / src / com / intellij / ui / StringComboboxEditor.java
blobf3bbca3f508f03955f1bc0e9c719273eeaeb22eb
1 package com.intellij.ui;
3 import com.intellij.openapi.application.Result;
4 import com.intellij.openapi.command.WriteCommandAction;
5 import com.intellij.openapi.diagnostic.Logger;
6 import com.intellij.openapi.editor.Document;
7 import com.intellij.openapi.fileTypes.FileType;
8 import com.intellij.openapi.fileTypes.StdFileTypes;
9 import com.intellij.openapi.project.Project;
10 import com.intellij.openapi.ui.ComboBox;
11 import com.intellij.openapi.util.Key;
12 import com.intellij.psi.PsiDocumentManager;
13 import com.intellij.psi.PsiFile;
14 import com.intellij.psi.PsiFileFactory;
16 import javax.swing.*;
18 /**
19 * ComboBox with Editor and Strings as item
20 * @author dsl
22 public class StringComboboxEditor extends EditorComboBoxEditor {
23 public static final Key<JComboBox> COMBO_BOX_KEY = Key.create("COMBO_BOX_KEY");
25 private static final Logger LOG = Logger.getInstance("#com.intellij.ui.StringComboboxEditor");
26 private final Project myProject;
28 public StringComboboxEditor(final Project project, final FileType fileType, ComboBox comboBox) {
29 super(project, fileType);
30 myProject = project;
31 final PsiFile file = PsiFileFactory.getInstance(project).createFileFromText("a.dummy", StdFileTypes.PLAIN_TEXT, "", 0, true);
32 final Document document = PsiDocumentManager.getInstance(project).getDocument(file);
33 assert document != null;
34 document.putUserData(COMBO_BOX_KEY, comboBox);
35 super.setItem(document);
38 public Object getItem() {
39 final String text = ((Document) super.getItem()).getText();
40 LOG.assertTrue(text != null);
41 return text;
44 public void setItem(Object anObject) {
45 if (anObject == null) anObject = "";
46 if (anObject.equals(getItem())) return;
47 final String s = (String)anObject;
48 new WriteCommandAction(myProject) {
49 protected void run(Result result) throws Throwable {
50 getDocument().setText(s);
52 }.execute();