1 package com.jetbrains.edu.coursecreator.ui;
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.ListScrollingUtil;
10 import com.intellij.ui.components.JBList;
11 import com.jetbrains.edu.coursecreator.CCUtils;
12 import com.jetbrains.edu.coursecreator.StudyLanguageManager;
13 import com.jetbrains.edu.coursecreator.format.Course;
14 import org.jetbrains.annotations.NotNull;
15 import org.jetbrains.annotations.Nullable;
18 import java.awt.event.MouseEvent;
20 public class CreateTaskFileDialog extends DialogWrapper {
21 private final Course myCourse;
22 private JPanel myPanel;
23 private JBList myList;
24 private JTextField myTextField;
26 @SuppressWarnings("unchecked")
27 public CreateTaskFileDialog(@Nullable Project project, String generatedFileName, @NotNull final Course course) {
30 FileType[] fileTypes = FileTypeManager.getInstance().getRegisteredFileTypes();
32 DefaultListModel model = new DefaultListModel();
33 for (FileType type : fileTypes) {
34 if (!type.isReadOnly() && !type.getDefaultExtension().isEmpty()) {
35 model.addElement(type);
38 myList.setModel(model);
39 myTextField.setText(generatedFileName);
40 setTitle("Create New Task File");
46 protected JComponent createCenterPanel() {
47 myList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
48 myList.setCellRenderer(new FileTypeRenderer());
50 new DoubleClickListener() {
52 protected boolean onDoubleClick(MouseEvent e) {
58 StudyLanguageManager manager = CCUtils.getStudyLanguageManager(myCourse);
59 if (manager != null) {
60 String extension = manager.getDefaultTaskFileExtension();
61 ListScrollingUtil.selectItem(myList, FileTypeManager.getInstance().getFileTypeByExtension(extension != null ? extension : "txt"));
68 public JComponent getPreferredFocusedComponent() {
72 public String getFileName() {
73 return myTextField.getText();
76 public FileType getFileType() {
77 return (FileType)myList.getSelectedValue();