[platform] minor optimization
[idea/community.git] / python / educational-core / course-creator / src / com / jetbrains / edu / coursecreator / ui / CreateTaskFileDialog.java
1 package com.jetbrains.edu.coursecreator.ui;
2
3 import com.intellij.openapi.fileTypes.FileType;
4 import com.intellij.openapi.fileTypes.FileTypeManager;
5 import com.intellij.openapi.fileTypes.impl.FileTypeRenderer;
6 import com.intellij.openapi.project.Project;
7 import com.intellij.openapi.ui.DialogWrapper;
8 import com.intellij.ui.DoubleClickListener;
9 import com.intellij.ui.ScrollingUtil;
10 import com.intellij.ui.components.JBList;
11 import com.jetbrains.edu.learning.courseFormat.Course;
12 import com.jetbrains.edu.coursecreator.CCLanguageManager;
13 import com.jetbrains.edu.coursecreator.CCUtils;
14 import org.jetbrains.annotations.NotNull;
15 import org.jetbrains.annotations.Nullable;
16
17 import javax.swing.*;
18 import java.awt.event.MouseEvent;
19
20 public class CreateTaskFileDialog extends DialogWrapper {
21   private final Course myCourse;
22   private JPanel myPanel;
23   private JBList myList;
24   private JTextField myTextField;
25
26   @SuppressWarnings("unchecked")
27   public CreateTaskFileDialog(@Nullable Project project, String generatedFileName, @NotNull final Course course) {
28     super(project);
29     myCourse = course;
30     FileType[] fileTypes = FileTypeManager.getInstance().getRegisteredFileTypes();
31
32     DefaultListModel model = new DefaultListModel();
33     for (FileType type : fileTypes) {
34       if (!type.isReadOnly() && !type.getDefaultExtension().isEmpty()) {
35         model.addElement(type);
36       }
37     }
38     myList.setModel(model);
39     myTextField.setText(generatedFileName);
40     setTitle("Create New Task File");
41     init();
42   }
43
44   @Nullable
45   @Override
46   protected JComponent createCenterPanel() {
47     myList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
48     myList.setCellRenderer(new FileTypeRenderer());
49
50     new DoubleClickListener() {
51       @Override
52       protected boolean onDoubleClick(MouseEvent e) {
53         doOKAction();
54         return true;
55       }
56     }.installOn(myList);
57
58     CCLanguageManager manager = CCUtils.getStudyLanguageManager(myCourse);
59     if (manager != null) {
60       String extension = manager.getDefaultTaskFileExtension();
61       ScrollingUtil.selectItem(myList, FileTypeManager.getInstance().getFileTypeByExtension(extension != null ? extension : "txt"));
62     }
63     return myPanel;
64   }
65
66   @Nullable
67   @Override
68   public JComponent getPreferredFocusedComponent() {
69     return myTextField;
70   }
71
72   public String getFileName() {
73     return myTextField.getText();
74   }
75
76   public FileType getFileType() {
77     return (FileType)myList.getSelectedValue();
78   }
79 }