-
Notifications
You must be signed in to change notification settings - Fork 376
Expand file tree
/
Copy pathMoveAction.java
More file actions
50 lines (42 loc) · 1.57 KB
/
MoveAction.java
File metadata and controls
50 lines (42 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package ee.carlrobert.codegpt.actions.toolwindow;
import com.intellij.openapi.actionSystem.ActionUpdateThread;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.project.Project;
import ee.carlrobert.codegpt.conversations.Conversation;
import ee.carlrobert.codegpt.conversations.ConversationsState;
import java.util.Optional;
import javax.swing.Icon;
import org.jetbrains.annotations.NotNull;
public abstract class MoveAction extends AnAction {
private final Runnable onRefresh;
protected abstract Optional<Conversation> getConversation(@NotNull Project project);
protected MoveAction(String text, String description, Icon icon, Runnable onRefresh) {
super(text, description, icon);
this.onRefresh = onRefresh;
}
@Override
public void update(@NotNull AnActionEvent event) {
Project project = event.getProject();
if (project == null) {
event.getPresentation().setEnabled(false);
return;
}
event.getPresentation().setEnabled(ConversationsState.getInstance(project).getCurrentConversation() != null);
}
@Override
public void actionPerformed(@NotNull AnActionEvent event) {
var project = event.getProject();
if (project != null) {
getConversation(project)
.ifPresent(conversation -> {
ConversationsState.getInstance(project).setCurrentConversation(conversation);
onRefresh.run();
});
}
}
@Override
public @NotNull ActionUpdateThread getActionUpdateThread() {
return ActionUpdateThread.BGT;
}
}