show course language level only in change course info dialog

This commit is contained in:
Ekaterina Tuzova
2016-07-25 18:33:27 +03:00
parent 8f42fbff7d
commit ef8d7bd938
7 changed files with 60 additions and 29 deletions
@@ -54,7 +54,7 @@
<add-to-group group-id="NewGroup" anchor="before" relative-to-action="NewFile"/>
</action>
<action id="ChangeCourseInfo" class="com.jetbrains.edu.coursecreator.actions.CCChangeCourseInfo"/>
<action id="ChangeCourseInfo" class="com.jetbrains.edu.coursecreator.PyCCChangeCourseInfo"/>
<group id="CCProjectViewGroup" popup="true" text="Course Creator">
<action id="AddTaskFile" class="com.jetbrains.edu.coursecreator.actions.CCAddAsTaskFile" text="Make Visible to Student"/>
@@ -19,7 +19,6 @@ import javax.swing.*;
import java.awt.*;
public class CCChangeCourseInfo extends DumbAwareAction {
private static final String ACTION_TEXT = "Change Course Information";
public CCChangeCourseInfo() {
@@ -61,15 +60,21 @@ public class CCChangeCourseInfo extends DumbAwareAction {
CCNewProjectPanel panel =
new CCNewProjectPanel(course.getName(), Course.getAuthorsString(course.getAuthors()), course.getDescription());
setupLanguageLevels(course, panel);
DialogBuilder builder = createChangeInfoDialog(project, panel);
if (builder.showAndGet()) {
course.setAuthors(panel.getAuthors());
course.setName(panel.getName());
course.setDescription(panel.getDescription());
setVersion(course, panel);
ProjectView.getInstance(project).refresh();
}
}
protected void setVersion(Course course, CCNewProjectPanel panel) {}
protected void setupLanguageLevels(Course course, CCNewProjectPanel panel) {}
private static DialogBuilder createChangeInfoDialog(Project project, @NotNull CCNewProjectPanel panel) {
DialogBuilder builder = new DialogBuilder(project);
@@ -15,7 +15,7 @@
</grid>
</constraints>
<properties>
<text value="Name:"/>
<text value="Title:"/>
</properties>
</component>
<component id="7e88" class="javax.swing.JTextField" binding="myName">
@@ -53,7 +53,7 @@
<component id="389a7" class="javax.swing.JTextArea" binding="myDescription">
<constraints>
<grid row="3" column="1" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="3" indent="0" use-parent-layout="false">
<preferred-size width="-1" height="50"/>
<preferred-size width="-1" height="150"/>
</grid>
</constraints>
<properties>
@@ -0,0 +1,47 @@
package com.jetbrains.edu.coursecreator;
import com.intellij.openapi.ui.ComboBox;
import com.jetbrains.edu.coursecreator.actions.CCChangeCourseInfo;
import com.jetbrains.edu.coursecreator.ui.CCNewProjectPanel;
import com.jetbrains.edu.learning.courseFormat.Course;
import com.jetbrains.python.PythonLanguage;
import javax.swing.*;
import static com.jetbrains.edu.learning.PyStudyLanguageManager.PYTHON_2;
import static com.jetbrains.edu.learning.PyStudyLanguageManager.PYTHON_3;
public class PyCCChangeCourseInfo extends CCChangeCourseInfo {
public static final String ALL_VERSIONS = "All versions";
public PyCCChangeCourseInfo() {
super();
}
protected void setVersion(Course course, CCNewProjectPanel panel) {
String version = panel.getLanguageVersion();
String language = PythonLanguage.getInstance().getID();
if (version != null && !ALL_VERSIONS.equals(version)) {
language += " " + version;
}
course.setLanguage(language);
}
protected void setupLanguageLevels(Course course, CCNewProjectPanel panel) {
JLabel languageLevelLabel = panel.getLanguageLevelLabel();
languageLevelLabel.setText("Python:");
languageLevelLabel.setVisible(true);
ComboBox<String> languageLevelCombobox = panel.getLanguageLevelCombobox();
languageLevelCombobox.addItem(ALL_VERSIONS);
languageLevelCombobox.addItem(PYTHON_3);
languageLevelCombobox.addItem(PYTHON_2);
languageLevelCombobox.setVisible(true);
final String version = course.getLanguageVersion();
if (version != null) {
languageLevelCombobox.setSelectedItem(version);
}
else {
languageLevelCombobox.setSelectedItem(ALL_VERSIONS);
}
}
}
@@ -12,7 +12,6 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.ComboBox;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.platform.DirectoryProjectGenerator;
@@ -28,7 +27,6 @@ import com.jetbrains.edu.learning.courseFormat.Course;
import com.jetbrains.edu.learning.statistics.EduUsagesCollector;
import com.jetbrains.python.PythonLanguage;
import com.jetbrains.python.newProject.PythonProjectGenerator;
import com.jetbrains.python.psi.LanguageLevel;
import icons.CourseCreatorPythonIcons;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
@@ -40,9 +38,6 @@ import java.io.File;
public class PyCCProjectGenerator extends PythonProjectGenerator implements DirectoryProjectGenerator {
private static final Logger LOG = Logger.getInstance(PyCCProjectGenerator.class);
public static final String ALL_VERSIONS = "All versions";
public static final String PYTHON_3 = "3x";
public static final String PYTHON_2 = "2x";
private CCNewProjectPanel mySettingsPanel;
@Nls
@@ -104,10 +99,6 @@ public class PyCCProjectGenerator extends PythonProjectGenerator implements Dire
course.setDescription(settingsPanel.getDescription());
String language = PythonLanguage.getInstance().getID();
String version = settingsPanel.getLanguageVersion();
if (version != null && !ALL_VERSIONS.equals(version)) {
language += " " + version;
}
course.setLanguage(language);
course.setCourseMode(CCUtils.COURSE_MODE);
@@ -134,7 +125,6 @@ public class PyCCProjectGenerator extends PythonProjectGenerator implements Dire
@Override
public JPanel extendBasePanel() throws ProcessCanceledException {
mySettingsPanel = new CCNewProjectPanel();
setupLanguageLevels(mySettingsPanel);
mySettingsPanel.registerValidators(new FacetValidatorsManager() {
public void registerValidator(FacetEditorValidator validator, JComponent... componentsToWatch) {
throw new UnsupportedOperationException();
@@ -147,17 +137,4 @@ public class PyCCProjectGenerator extends PythonProjectGenerator implements Dire
return mySettingsPanel.getMainPanel();
}
private static void setupLanguageLevels(CCNewProjectPanel panel) {
JLabel languageLevelLabel = panel.getLanguageLevelLabel();
languageLevelLabel.setText("Python:");
languageLevelLabel.setVisible(true);
ComboBox<String> languageLevelCombobox = panel.getLanguageLevelCombobox();
languageLevelCombobox.addItem(ALL_VERSIONS);
languageLevelCombobox.addItem(PYTHON_3);
languageLevelCombobox.addItem(PYTHON_2);
for (LanguageLevel level : LanguageLevel.values()) {
languageLevelCombobox.addItem(level.toString());
}
languageLevelCombobox.setVisible(true);
}
}
@@ -221,8 +221,8 @@ public class PyStudyDirectoryProjectGenerator extends PythonProjectGenerator imp
LanguageLevel baseLevel = LanguageLevel.PYTHON30;
if (course != null) {
final String version = course.getLanguageVersion();
if (version != null) {
baseLevel = LanguageLevel.fromPythonVersion(version);
if (PyStudyLanguageManager.PYTHON_2.equals(version)) {
baseLevel = LanguageLevel.PYTHON27;
}
}
final PythonSdkFlavor flavor = PythonSdkFlavor.getApplicableFlavors(false).get(0);
@@ -4,6 +4,8 @@ import com.jetbrains.edu.learning.core.EduNames;
import org.jetbrains.annotations.NotNull;
public class PyStudyLanguageManager implements StudyLanguageManager {
public static final String PYTHON_3 = "3.x";
public static final String PYTHON_2 = "2.x";
@NotNull
@Override