mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
EDU-900 Enable educator tools only if user confirmed that he/she is an educator
This commit is contained in:
@@ -83,6 +83,10 @@
|
||||
text="Fill Answer Placeholders">
|
||||
<add-to-group group-id="HelpMenu" anchor="before" relative-to-action="HelpTopics"/>
|
||||
</action>
|
||||
<action id="CCEnablePluginAction" class="com.jetbrains.edu.coursecreator.actions.CCPluginToggleAction"
|
||||
text="Enable Course Creator Features">
|
||||
<add-to-group group-id="HelpMenu" anchor="before" relative-to-action="HelpTopics"/>
|
||||
</action>
|
||||
<action id="StudySwitchPanel" class="com.jetbrains.edu.learning.actions.StudySwitchTaskPanelAction"
|
||||
text="Switch Task Description Panel">
|
||||
</action>
|
||||
@@ -170,7 +174,7 @@
|
||||
<refactoring.moveHandler implementation="com.jetbrains.edu.learning.StudyMoveDelegate" order="first"/>
|
||||
<statistics.usagesCollector implementation="com.jetbrains.edu.learning.statistics.EduUsagesCollector"/>
|
||||
<applicationService serviceImplementation="com.jetbrains.edu.learning.statistics.EduUsagesCollector"/>
|
||||
<applicationService serviceImplementation="com.jetbrains.edu.learning.stepic.StepicUpdateSettings"/>
|
||||
<applicationService serviceImplementation="com.jetbrains.edu.learning.StudySettings"/>
|
||||
<editorTabTitleProvider implementation="com.jetbrains.edu.learning.StudyTabTitleProvider"/>
|
||||
<typedHandler implementation="com.jetbrains.edu.learning.StudyTypeHandlerDelegate" order="first, before completionAutoPopup"/>
|
||||
|
||||
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package com.jetbrains.edu.coursecreator.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.ToggleAction;
|
||||
import com.jetbrains.edu.learning.StudySettings;
|
||||
|
||||
public class CCPluginToggleAction extends ToggleAction {
|
||||
@Override
|
||||
public boolean isSelected(AnActionEvent e) {
|
||||
return StudySettings.getInstance().isCourseCreatorEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(AnActionEvent e, boolean state) {
|
||||
StudySettings.getInstance().setCourseCreatorEnabled(state);
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package com.jetbrains.edu.coursecreator.settings;
|
||||
|
||||
import com.intellij.openapi.options.ConfigurationException;
|
||||
import com.intellij.openapi.wm.IdeFocusManager;
|
||||
import com.jetbrains.edu.learning.StudySettings;
|
||||
import com.jetbrains.edu.learning.settings.StudyOptionsProvider;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -15,6 +16,7 @@ public class CCOptions implements StudyOptionsProvider {
|
||||
@Nullable
|
||||
@Override
|
||||
public JComponent createComponent() {
|
||||
if (!StudySettings.getInstance().isCourseCreatorEnabled()) return null;
|
||||
if (CCSettings.getInstance().useHtmlAsDefaultTaskFormat()) {
|
||||
myHtmlRadioButton.setSelected(true);
|
||||
IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> {
|
||||
|
||||
+17
-7
@@ -1,19 +1,21 @@
|
||||
package com.jetbrains.edu.learning.stepic;
|
||||
package com.jetbrains.edu.learning;
|
||||
|
||||
import com.intellij.openapi.components.PersistentStateComponent;
|
||||
import com.intellij.openapi.components.ServiceManager;
|
||||
import com.intellij.openapi.components.State;
|
||||
import com.intellij.openapi.components.Storage;
|
||||
import com.intellij.util.xmlb.XmlSerializerUtil;
|
||||
import com.jetbrains.edu.learning.stepic.StepicUser;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@State(name = "StepicUpdateSettings", storages = @Storage("other.xml"))
|
||||
public class StepicUpdateSettings implements PersistentStateComponent<StepicUpdateSettings> {
|
||||
public class StudySettings implements PersistentStateComponent<StudySettings> {
|
||||
private StepicUser myUser;
|
||||
public long LAST_TIME_CHECKED = 0;
|
||||
private boolean myEnableTestingFromSamples = false;
|
||||
private boolean isCourseCreatorEnabled = false;
|
||||
|
||||
public StepicUpdateSettings() {
|
||||
public StudySettings() {
|
||||
}
|
||||
|
||||
public long getLastTimeChecked() {
|
||||
@@ -26,17 +28,17 @@ public class StepicUpdateSettings implements PersistentStateComponent<StepicUpda
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public StepicUpdateSettings getState() {
|
||||
public StudySettings getState() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadState(StepicUpdateSettings state) {
|
||||
public void loadState(StudySettings state) {
|
||||
XmlSerializerUtil.copyBean(state, this);
|
||||
}
|
||||
|
||||
public static StepicUpdateSettings getInstance() {
|
||||
return ServiceManager.getService(StepicUpdateSettings.class);
|
||||
public static StudySettings getInstance() {
|
||||
return ServiceManager.getService(StudySettings.class);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -55,4 +57,12 @@ public class StepicUpdateSettings implements PersistentStateComponent<StepicUpda
|
||||
public void setEnableTestingFromSamples(boolean enableTestingFromSamples) {
|
||||
myEnableTestingFromSamples = enableTestingFromSamples;
|
||||
}
|
||||
|
||||
public boolean isCourseCreatorEnabled() {
|
||||
return isCourseCreatorEnabled;
|
||||
}
|
||||
|
||||
public void setCourseCreatorEnabled(boolean courseCreatorEnabled) {
|
||||
isCourseCreatorEnabled = courseCreatorEnabled;
|
||||
}
|
||||
}
|
||||
@@ -74,7 +74,6 @@ import com.jetbrains.edu.learning.courseFormat.tasks.TaskWithSubtasks;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.TheoryTask;
|
||||
import com.jetbrains.edu.learning.courseGeneration.StudyProjectGenerator;
|
||||
import com.jetbrains.edu.learning.editor.StudyEditor;
|
||||
import com.jetbrains.edu.learning.stepic.StepicUpdateSettings;
|
||||
import com.jetbrains.edu.learning.stepic.StepicUser;
|
||||
import com.jetbrains.edu.learning.ui.StudyToolWindow;
|
||||
import com.jetbrains.edu.learning.ui.StudyToolWindowFactory;
|
||||
@@ -616,7 +615,7 @@ public class StudyUtils {
|
||||
public static File getCourseDirectory(Course course) {
|
||||
final File courseDirectory;
|
||||
if (course.isAdaptive()) {
|
||||
StepicUser user = StepicUpdateSettings.getInstance().getUser();
|
||||
StepicUser user = StudySettings.getInstance().getUser();
|
||||
String email = user == null ? "" : user.getEmail();
|
||||
|
||||
courseDirectory = new File(StudyProjectGenerator.OUR_COURSES_DIR,
|
||||
|
||||
@@ -19,14 +19,16 @@ import com.jetbrains.edu.learning.*;
|
||||
import com.jetbrains.edu.learning.actions.StudyRunAction;
|
||||
import com.jetbrains.edu.learning.core.EduNames;
|
||||
import com.jetbrains.edu.learning.core.EduUtils;
|
||||
import com.jetbrains.edu.learning.courseFormat.*;
|
||||
import com.jetbrains.edu.learning.courseFormat.AnswerPlaceholder;
|
||||
import com.jetbrains.edu.learning.courseFormat.Course;
|
||||
import com.jetbrains.edu.learning.courseFormat.StudyStatus;
|
||||
import com.jetbrains.edu.learning.courseFormat.TaskFile;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.ChoiceTask;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.Task;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.TaskWithSubtasks;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.TheoryTask;
|
||||
import com.jetbrains.edu.learning.stepic.EduAdaptiveStepicConnector;
|
||||
import com.jetbrains.edu.learning.stepic.EduStepicConnector;
|
||||
import com.jetbrains.edu.learning.stepic.StepicUpdateSettings;
|
||||
import com.jetbrains.edu.learning.stepic.StepicUser;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -109,7 +111,7 @@ public class StudyCheckTask extends com.intellij.openapi.progress.Task.Backgroun
|
||||
runAfterTaskCheckedActions();
|
||||
final Course course = StudyTaskManager.getInstance(myProject).getCourse();
|
||||
if (course != null && EduNames.STUDY.equals(course.getCourseMode())) {
|
||||
StepicUser user = StepicUpdateSettings.getInstance().getUser();
|
||||
StepicUser user = StudySettings.getInstance().getUser();
|
||||
if (user != null) {
|
||||
EduStepicConnector.postSolution(myTask, testsOutput.isSuccess(), myProject);
|
||||
}
|
||||
@@ -149,7 +151,7 @@ public class StudyCheckTask extends com.intellij.openapi.progress.Task.Backgroun
|
||||
}
|
||||
|
||||
private void checkForAdaptiveCourse(@NotNull ProgressIndicator indicator) {
|
||||
final StepicUser user = StepicUpdateSettings.getInstance().getUser();
|
||||
final StepicUser user = StudySettings.getInstance().getUser();
|
||||
if (user == null) {
|
||||
LOG.warn("User is null");
|
||||
ApplicationManager.getApplication().invokeLater(() ->
|
||||
@@ -185,7 +187,7 @@ public class StudyCheckTask extends com.intellij.openapi.progress.Task.Backgroun
|
||||
if (testOutput != null) {
|
||||
// As tests in adaptive courses are created from
|
||||
// samples and stored in task, to disable it we should ignore local testing results
|
||||
if (StepicUpdateSettings.getInstance().isEnableTestingFromSamples() && !testOutput.isSuccess()) {
|
||||
if (StudySettings.getInstance().isEnableTestingFromSamples() && !testOutput.isSuccess()) {
|
||||
onTaskFailed(testOutput.getMessage());
|
||||
}
|
||||
else {
|
||||
|
||||
+4
-4
@@ -23,6 +23,7 @@ import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.jetbrains.edu.learning.StudySerializationUtils;
|
||||
import com.jetbrains.edu.learning.StudySettings;
|
||||
import com.jetbrains.edu.learning.StudyTaskManager;
|
||||
import com.jetbrains.edu.learning.StudyUtils;
|
||||
import com.jetbrains.edu.learning.core.EduNames;
|
||||
@@ -35,7 +36,6 @@ import com.jetbrains.edu.learning.courseFormat.tasks.Task;
|
||||
import com.jetbrains.edu.learning.editor.StudyEditor;
|
||||
import com.jetbrains.edu.learning.statistics.EduUsagesCollector;
|
||||
import com.jetbrains.edu.learning.stepic.EduStepicConnector;
|
||||
import com.jetbrains.edu.learning.stepic.StepicUpdateSettings;
|
||||
import com.jetbrains.edu.learning.stepic.StepicUser;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -65,7 +65,7 @@ public class StudyProjectGenerator {
|
||||
}
|
||||
|
||||
public boolean isLoggedIn() {
|
||||
final StepicUser user = StepicUpdateSettings.getInstance().getUser();
|
||||
final StepicUser user = StudySettings.getInstance().getUser();
|
||||
return user != null;
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ public class StudyProjectGenerator {
|
||||
return getCourseFromStepic(project);
|
||||
}
|
||||
else {
|
||||
final StepicUser user = StepicUpdateSettings.getInstance().getUser();
|
||||
final StepicUser user = StudySettings.getInstance().getUser();
|
||||
if (user != null) {
|
||||
final File adaptiveCourseFile = new File(new File(OUR_COURSES_DIR, ADAPTIVE_COURSE_PREFIX +
|
||||
mySelectedCourseInfo.getName() + "_" +
|
||||
@@ -405,7 +405,7 @@ public class StudyProjectGenerator {
|
||||
myCourses = getCoursesFromCache();
|
||||
}
|
||||
if (force || myCourses.isEmpty()) {
|
||||
myCourses = execCancelable(() -> EduStepicConnector.getCourses(StepicUpdateSettings.getInstance().getUser()));
|
||||
myCourses = execCancelable(() -> EduStepicConnector.getCourses(StudySettings.getInstance().getUser()));
|
||||
flushCache(myCourses);
|
||||
}
|
||||
if (myCourses.isEmpty() || (myCourses.size() == 1 && myCourses.contains(CourseInfo.INVALID_COURSE))) {
|
||||
|
||||
+3
-2
@@ -20,6 +20,7 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileManager;
|
||||
import com.jetbrains.edu.learning.StudySettings;
|
||||
import com.jetbrains.edu.learning.StudyTaskManager;
|
||||
import com.jetbrains.edu.learning.StudyUtils;
|
||||
import com.jetbrains.edu.learning.checker.StudyExecutor;
|
||||
@@ -83,7 +84,7 @@ public class EduAdaptiveStepicConnector {
|
||||
return null;
|
||||
}
|
||||
|
||||
StepicUser user = StepicUpdateSettings.getInstance().getUser();
|
||||
StepicUser user = StudySettings.getInstance().getUser();
|
||||
if (user == null) {
|
||||
LOG.warn("User is null");
|
||||
return null;
|
||||
@@ -303,7 +304,7 @@ public class EduAdaptiveStepicConnector {
|
||||
final Course course = StudyTaskManager.getInstance(project).getCourse();
|
||||
if (course != null && editor != null && editor.getTaskFile() != null) {
|
||||
indicator.checkCanceled();
|
||||
final StepicUser user = StepicUpdateSettings.getInstance().getUser();
|
||||
final StepicUser user = StudySettings.getInstance().getUser();
|
||||
if (user == null) {
|
||||
LOG.warn("Can't get next recommendation: user is null");
|
||||
ApplicationManager.getApplication().invokeLater(() -> StudyUtils.showErrorPopupOnToolbar(project,
|
||||
|
||||
+5
-5
@@ -5,6 +5,7 @@ import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.jetbrains.edu.learning.StudySettings;
|
||||
import org.apache.http.*;
|
||||
import org.apache.http.client.entity.UrlEncodedFormEntity;
|
||||
import org.apache.http.client.methods.CloseableHttpResponse;
|
||||
@@ -36,13 +37,12 @@ public class EduStepicAuthorizedClient {
|
||||
return ourClient;
|
||||
}
|
||||
|
||||
StepicUpdateSettings stepicUpdateSettings = StepicUpdateSettings.getInstance();
|
||||
StudySettings studySettings = StudySettings.getInstance();
|
||||
|
||||
|
||||
if (stepicUpdateSettings.getUser() == null) {
|
||||
if (studySettings.getUser() == null) {
|
||||
final StepicUser user = showLoginDialog();
|
||||
if (user != null) {
|
||||
stepicUpdateSettings.setUser(user);
|
||||
studySettings.setUser(user);
|
||||
}
|
||||
else {
|
||||
LOG.warn("Unable to login");
|
||||
@@ -50,7 +50,7 @@ public class EduStepicAuthorizedClient {
|
||||
}
|
||||
}
|
||||
|
||||
StepicUser stepicUser = stepicUpdateSettings.getUser();
|
||||
StepicUser stepicUser = studySettings.getUser();
|
||||
assert stepicUser != null;
|
||||
|
||||
if (!EduStepicClient.isTokenUpToDate(stepicUser.getAccessToken())) {
|
||||
|
||||
+3
-2
@@ -9,6 +9,7 @@ import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.jetbrains.edu.learning.StudySettings;
|
||||
import com.jetbrains.edu.learning.core.EduNames;
|
||||
import com.jetbrains.edu.learning.courseFormat.Course;
|
||||
import com.jetbrains.edu.learning.courseFormat.CourseInfo;
|
||||
@@ -259,7 +260,7 @@ public class EduStepicConnector {
|
||||
}
|
||||
|
||||
private static <T> T getFromStepic(String link, final Class<T> container) throws IOException{
|
||||
final StepicUser user = StepicUpdateSettings.getInstance().getUser();
|
||||
final StepicUser user = StudySettings.getInstance().getUser();
|
||||
final boolean isAuthorized = user != null;
|
||||
if (isAuthorized) {
|
||||
return EduStepicAuthorizedClient.getFromStepic(link, container, user);
|
||||
@@ -355,7 +356,7 @@ public class EduStepicConnector {
|
||||
|
||||
public static String postAttempt(int id) throws IOException {
|
||||
final CloseableHttpClient client = EduStepicAuthorizedClient.getHttpClient();
|
||||
if (client == null || StepicUpdateSettings.getInstance().getUser() == null) return "";
|
||||
if (client == null || StudySettings.getInstance().getUser() == null) return "";
|
||||
final HttpPost attemptRequest = new HttpPost(EduStepicNames.STEPIC_API_URL + EduStepicNames.ATTEMPTS);
|
||||
String attemptRequestBody = new Gson().toJson(new StepicWrappers.AttemptWrapper(id));
|
||||
attemptRequest.setEntity(new StringEntity(attemptRequestBody, ContentType.APPLICATION_JSON));
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.util.Alarm;
|
||||
import com.intellij.util.text.DateFormatUtil;
|
||||
import com.jetbrains.edu.learning.StudySettings;
|
||||
import com.jetbrains.edu.learning.courseFormat.CourseInfo;
|
||||
import com.jetbrains.edu.learning.courseGeneration.StudyProjectGenerator;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -34,7 +35,7 @@ public class EduStepicUpdater {
|
||||
@Override
|
||||
public void appFrameCreated(String[] commandLineArgs, @NotNull Ref<Boolean> willOpenProject) {
|
||||
|
||||
long timeToNextCheck = StepicUpdateSettings.getInstance().getLastTimeChecked() + CHECK_INTERVAL - System.currentTimeMillis();
|
||||
long timeToNextCheck = StudySettings.getInstance().getLastTimeChecked() + CHECK_INTERVAL - System.currentTimeMillis();
|
||||
if (timeToNextCheck <= 0) {
|
||||
myCheckRunnable.run();
|
||||
}
|
||||
@@ -51,7 +52,7 @@ public class EduStepicUpdater {
|
||||
final List<CourseInfo> courses = EduStepicConnector.getCourses(null);
|
||||
final List<CourseInfo> cachedCourses = StudyProjectGenerator.getCoursesFromCache();
|
||||
StudyProjectGenerator.flushCache(courses);
|
||||
StepicUpdateSettings.getInstance().setLastTimeChecked(System.currentTimeMillis());
|
||||
StudySettings.getInstance().setLastTimeChecked(System.currentTimeMillis());
|
||||
|
||||
courses.removeAll(cachedCourses);
|
||||
if (!courses.isEmpty() && !cachedCourses.isEmpty()) {
|
||||
@@ -79,7 +80,7 @@ public class EduStepicUpdater {
|
||||
|
||||
private static boolean checkNeeded() {
|
||||
final List<CourseInfo> courses = StudyProjectGenerator.getCoursesFromCache();
|
||||
long timeToNextCheck = StepicUpdateSettings.getInstance().getLastTimeChecked() + CHECK_INTERVAL - System.currentTimeMillis();
|
||||
long timeToNextCheck = StudySettings.getInstance().getLastTimeChecked() + CHECK_INTERVAL - System.currentTimeMillis();
|
||||
return courses.isEmpty() || timeToNextCheck <= 0;
|
||||
}
|
||||
}
|
||||
|
||||
+5
-4
@@ -20,6 +20,7 @@ import com.intellij.openapi.progress.ProgressManager;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.ui.DocumentAdapter;
|
||||
import com.intellij.ui.components.JBCheckBox;
|
||||
import com.jetbrains.edu.learning.StudySettings;
|
||||
import com.jetbrains.edu.learning.StudyUtils;
|
||||
import com.jetbrains.edu.learning.settings.StudyOptionsProvider;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -79,7 +80,7 @@ public class StepicStudyOptions implements StudyOptionsProvider {
|
||||
|
||||
@Override
|
||||
public void reset() {
|
||||
final StepicUpdateSettings stepikSettings = StepicUpdateSettings.getInstance();
|
||||
final StudySettings stepikSettings = StudySettings.getInstance();
|
||||
myEnableTestingFromSamples.setSelected(stepikSettings.isEnableTestingFromSamples());
|
||||
final StepicUser user = stepikSettings.getUser();
|
||||
if (user != null) {
|
||||
@@ -95,7 +96,7 @@ public class StepicStudyOptions implements StudyOptionsProvider {
|
||||
|
||||
@Override
|
||||
public void apply() throws ConfigurationException {
|
||||
final StepicUpdateSettings stepikSettings = StepicUpdateSettings.getInstance();
|
||||
final StudySettings stepikSettings = StudySettings.getInstance();
|
||||
if (isTestingFromSamplesEnabled() != stepikSettings.isEnableTestingFromSamples()) {
|
||||
stepikSettings.setEnableTestingFromSamples(isTestingFromSamplesEnabled());
|
||||
}
|
||||
@@ -131,7 +132,7 @@ public class StepicStudyOptions implements StudyOptionsProvider {
|
||||
}
|
||||
|
||||
private static void removeCredentials() {
|
||||
StepicUpdateSettings.getInstance().setUser(null);
|
||||
StudySettings.getInstance().setUser(null);
|
||||
EduStepicAuthorizedClient.invalidateClient();
|
||||
}
|
||||
|
||||
@@ -142,7 +143,7 @@ public class StepicStudyOptions implements StudyOptionsProvider {
|
||||
}
|
||||
|
||||
public boolean isModified() {
|
||||
final StepicUpdateSettings stepikSettings = StepicUpdateSettings.getInstance();
|
||||
final StudySettings stepikSettings = StudySettings.getInstance();
|
||||
boolean isTestOptionModified = !isTestingFromSamplesEnabled() == stepikSettings.isEnableTestingFromSamples();
|
||||
final StepicUser user = stepikSettings.getUser();
|
||||
|
||||
|
||||
@@ -3,9 +3,9 @@ package com.jetbrains.edu.learning.ui;
|
||||
import com.intellij.ide.BrowserUtil;
|
||||
import com.intellij.ui.DocumentAdapter;
|
||||
import com.intellij.ui.components.JBLabel;
|
||||
import com.jetbrains.edu.learning.StudySettings;
|
||||
import com.jetbrains.edu.learning.stepic.EduStepicNames;
|
||||
import com.jetbrains.edu.learning.stepic.LoginDialog;
|
||||
import com.jetbrains.edu.learning.stepic.StepicUpdateSettings;
|
||||
import com.jetbrains.edu.learning.stepic.StepicUser;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -49,7 +49,7 @@ public class LoginPanel {
|
||||
e.getComponent().setCursor(Cursor.getDefaultCursor());
|
||||
}
|
||||
});
|
||||
final StepicUser user = StepicUpdateSettings.getInstance().getUser();
|
||||
final StepicUser user = StudySettings.getInstance().getUser();
|
||||
if (user != null) {
|
||||
myLoginField.setText(user.getEmail());
|
||||
myPasswordField.setText(user.getPassword());
|
||||
|
||||
@@ -26,11 +26,15 @@ import com.intellij.ui.AncestorListenerAdapter;
|
||||
import com.intellij.ui.PanelWithAnchor;
|
||||
import com.intellij.ui.components.JBScrollPane;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import com.jetbrains.edu.learning.StudySettings;
|
||||
import com.jetbrains.edu.learning.StudyUtils;
|
||||
import com.jetbrains.edu.learning.courseFormat.Course;
|
||||
import com.jetbrains.edu.learning.courseFormat.CourseInfo;
|
||||
import com.jetbrains.edu.learning.courseGeneration.StudyProjectGenerator;
|
||||
import com.jetbrains.edu.learning.stepic.*;
|
||||
import com.jetbrains.edu.learning.stepic.EduAdaptiveStepicConnector;
|
||||
import com.jetbrains.edu.learning.stepic.EduStepicAuthorizedClient;
|
||||
import com.jetbrains.edu.learning.stepic.LoginDialog;
|
||||
import com.jetbrains.edu.learning.stepic.StepicUser;
|
||||
import icons.EducationalCoreIcons;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -361,7 +365,7 @@ public class StudyNewProjectPanel extends JPanel implements PanelWithAnchor {
|
||||
if (stepicUser != null) {
|
||||
stepicUser.setEmail(myLoginPanel.getLogin());
|
||||
stepicUser.setPassword(myLoginPanel.getPassword());
|
||||
StepicUpdateSettings.getInstance().setUser(stepicUser);
|
||||
StudySettings.getInstance().setUser(stepicUser);
|
||||
myGenerator.setEnrolledCoursesIds(EduAdaptiveStepicConnector.getEnrolledCoursesIds(stepicUser));
|
||||
final List<CourseInfo> courses = myGenerator.getCourses(true);
|
||||
if (courses != null && myRefreshCourseList) {
|
||||
|
||||
+2
-3
@@ -24,10 +24,9 @@ import com.intellij.psi.PsiDirectory;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.util.BooleanFunction;
|
||||
import com.jetbrains.edu.learning.courseFormat.Course;
|
||||
import com.jetbrains.edu.learning.courseGeneration.StudyProjectGenerator;
|
||||
import com.jetbrains.edu.learning.courseFormat.CourseInfo;
|
||||
import com.jetbrains.edu.learning.courseGeneration.StudyProjectGenerator;
|
||||
import com.jetbrains.edu.learning.stepic.EduStepicConnector;
|
||||
import com.jetbrains.edu.learning.stepic.StepicUpdateSettings;
|
||||
import com.jetbrains.edu.learning.ui.StudyNewProjectPanel;
|
||||
import com.jetbrains.python.configuration.PyConfigurableInterpreterList;
|
||||
import com.jetbrains.python.newProject.PyNewProjectSettings;
|
||||
@@ -190,7 +189,7 @@ public class PyStudyDirectoryProjectGenerator extends PythonProjectGenerator<PyN
|
||||
ProgressManager.getInstance().runProcessWithProgressSynchronously(() -> {
|
||||
ProgressManager.getInstance().getProgressIndicator().setIndeterminate(true);
|
||||
return StudyUtils.execCancelable(() -> EduStepicConnector.enrollToCourse(course.getId(),
|
||||
StepicUpdateSettings.getInstance().getUser()));
|
||||
StudySettings.getInstance().getUser()));
|
||||
}, "Creating Course", true, ProjectManager.getInstance().getDefaultProject());
|
||||
|
||||
}
|
||||
|
||||
@@ -26,5 +26,6 @@
|
||||
<orderEntry type="module" module-name="xml-psi-impl" />
|
||||
<orderEntry type="module" module-name="python-community-ide-resources" />
|
||||
<orderEntry type="module" module-name="python-community" />
|
||||
<orderEntry type="module" module-name="educational-core" />
|
||||
</component>
|
||||
</module>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 6.4 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 6.2 KiB |
+2
-1
@@ -6,7 +6,8 @@ import com.intellij.ide.plugins.PluginManagerCore;
|
||||
@SuppressWarnings("UnusedDeclaration")
|
||||
public class PyCharmEduConfigImportSettings extends ConfigImportSettings {
|
||||
public PyCharmEduConfigImportSettings() {
|
||||
PluginManagerCore.disablePlugin("org.jetbrains.plugins.coursecreator");
|
||||
PluginManagerCore.disablePlugin("com.jetbrains.edu.coursecreator");
|
||||
PluginManagerCore.disablePlugin("com.jetbrains.edu.coursecreator.python");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.jetbrains.python.edu;
|
||||
|
||||
import com.intellij.ide.customize.AbstractCustomizeWizardStep;
|
||||
import com.intellij.openapi.ui.VerticalFlowLayout;
|
||||
import com.intellij.openapi.util.IconLoader;
|
||||
import com.jetbrains.edu.learning.StudySettings;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
public class CustomizeEduStepPanel extends AbstractCustomizeWizardStep {
|
||||
|
||||
public CustomizeEduStepPanel() {
|
||||
final JPanel studentPanel = new JPanel(new VerticalFlowLayout());
|
||||
final JButton student = new JButton(IconLoader.findIcon("/icons/com/jetbrains/edu/student.png"));
|
||||
student.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
StudySettings.getInstance().setCourseCreatorEnabled(false);
|
||||
}
|
||||
});
|
||||
studentPanel.add(student);
|
||||
studentPanel.add(new JLabel("Student", SwingConstants.CENTER));
|
||||
add(studentPanel);
|
||||
|
||||
final JButton teacher = new JButton(IconLoader.findIcon("/icons/com/jetbrains/edu/teacher.png"));
|
||||
final JPanel teacherPanel = new JPanel(new VerticalFlowLayout());
|
||||
teacherPanel.add(teacher);
|
||||
teacherPanel.add(new JLabel("Teacher", SwingConstants.CENTER));
|
||||
teacher.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
StudySettings.getInstance().setCourseCreatorEnabled(true);
|
||||
}
|
||||
});
|
||||
add(teacherPanel);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getTitle() {
|
||||
return "Are you student or teacher?";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getHTMLHeader() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
+14
-3
@@ -25,6 +25,9 @@ import com.intellij.execution.executors.DefaultDebugExecutor;
|
||||
import com.intellij.ide.AppLifecycleListener;
|
||||
import com.intellij.ide.GeneralSettings;
|
||||
import com.intellij.ide.SelectInTarget;
|
||||
import com.intellij.ide.customize.AbstractCustomizeWizardStep;
|
||||
import com.intellij.ide.customize.CustomizeIDEWizardDialog;
|
||||
import com.intellij.ide.customize.CustomizeIDEWizardStepsProvider;
|
||||
import com.intellij.ide.projectView.impl.AbstractProjectViewPane;
|
||||
import com.intellij.ide.scopeView.ScopeViewPane;
|
||||
import com.intellij.ide.ui.UISettings;
|
||||
@@ -87,6 +90,7 @@ import javax.swing.tree.TreeNode;
|
||||
import javax.swing.tree.TreePath;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
@@ -194,9 +198,9 @@ public class PyCharmEduInitialConfigurator {
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
if (!propertiesComponent.isValueSet(DISPLAYED_PROPERTY)) {
|
||||
GeneralSettings.getInstance().setShowTipsOnStartup(false);
|
||||
propertiesComponent.setValue(DISPLAYED_PROPERTY, "true");
|
||||
|
||||
patchKeymap();
|
||||
showInitialConfigurationDialog();
|
||||
propertiesComponent.setValue(DISPLAYED_PROPERTY, "true");
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -396,5 +400,12 @@ public class PyCharmEduInitialConfigurator {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void showInitialConfigurationDialog() {
|
||||
new CustomizeIDEWizardDialog(new CustomizeIDEWizardStepsProvider() {
|
||||
@Override
|
||||
public void initSteps(@NotNull CustomizeIDEWizardDialog dialog, @NotNull List<AbstractCustomizeWizardStep> steps) {
|
||||
steps.add(new CustomizeEduStepPanel());
|
||||
}
|
||||
}).show();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user