EDU-338 Add supported python versions info to the course.json
[idea/community.git] / python / educational-core / course-creator / src / com / jetbrains / edu / coursecreator / ui / CCNewProjectPanel.java
1 package com.jetbrains.edu.coursecreator.ui;
2
3 import com.intellij.facet.ui.FacetValidatorsManager;
4 import com.intellij.openapi.ui.ComboBox;
5 import com.intellij.openapi.util.text.StringUtil;
6 import com.intellij.ui.DocumentAdapter;
7 import com.intellij.ui.JBColor;
8 import org.jetbrains.annotations.NotNull;
9 import org.jetbrains.annotations.Nullable;
10
11 import javax.swing.*;
12 import javax.swing.event.DocumentEvent;
13
14 public class CCNewProjectPanel {
15   private JPanel myPanel;
16   private JTextArea myDescription;
17   private JTextField myName;
18   private JTextField myAuthorField;
19   private JLabel myLanguageLevelLabel;
20   private ComboBox<String> myLanguageLevelCombobox;
21   private FacetValidatorsManager myValidationManager;
22
23
24   public CCNewProjectPanel() {
25     myLanguageLevelLabel.setVisible(false);
26     myLanguageLevelCombobox.setVisible(false);
27     final String userName = System.getProperty("user.name");
28     if (userName != null) {
29       myAuthorField.setText(userName);
30     }
31     myName.getDocument().addDocumentListener(new MyValidator());
32     myDescription.getDocument().addDocumentListener(new MyValidator());
33     myAuthorField.getDocument().addDocumentListener(new MyValidator());
34
35     myDescription.setBorder(BorderFactory.createLineBorder(JBColor.border()));
36     myDescription.setFont(myAuthorField.getFont());
37   }
38
39   public CCNewProjectPanel(String name, String author, String description) {
40     this();
41     myName.setText(name);
42     myAuthorField.setText(author);
43     myDescription.setText(description);
44   }
45
46   public JPanel getMainPanel() {
47     return myPanel;
48   }
49
50   @NotNull
51   public String getName() {
52     return StringUtil.notNullize(myName.getText());
53   }
54
55   @NotNull
56   public String getDescription() {
57     return StringUtil.notNullize(myDescription.getText());
58   }
59
60   @NotNull
61   public String[] getAuthors() {
62     return StringUtil.splitByLines(StringUtil.notNullize(myAuthorField.getText()));
63   }
64
65   public void registerValidators(FacetValidatorsManager manager) {
66     myValidationManager = manager;
67   }
68
69   private class MyValidator extends DocumentAdapter {
70
71     @Override
72     protected void textChanged(DocumentEvent e) {
73       if (myValidationManager != null) {
74         myValidationManager.validate();
75       }
76     }
77   }
78
79   public JTextField getAuthorField() {
80     return myAuthorField;
81   }
82
83   public JTextArea getDescriptionField() {
84     return myDescription;
85   }
86
87   public JTextField getNameField() {
88     return myName;
89   }
90
91   public JLabel getLanguageLevelLabel() {
92     return myLanguageLevelLabel;
93   }
94
95   public ComboBox<String> getLanguageLevelCombobox() {
96     return myLanguageLevelCombobox;
97   }
98
99   @Nullable
100   public String getLanguageVersion() {
101     if (!myLanguageLevelCombobox.isVisible() || myLanguageLevelCombobox.getItemCount() == 0) {
102       return null;
103     }
104     return (String)myLanguageLevelCombobox.getSelectedItem();
105   }
106 }