1.0.8 - Fix ToolWindow NPE, Closes #3

This commit is contained in:
Carl-Robert Linnupuu 2023-02-22 22:38:32 +00:00
parent 56c27031f5
commit 7b76308c34
7 changed files with 19 additions and 28 deletions

View file

@ -3,7 +3,6 @@ package ee.carlrobert.chatgpt.ide.action;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.wm.ToolWindowManager;
import ee.carlrobert.chatgpt.client.ApiClient;
import ee.carlrobert.chatgpt.ide.toolwindow.ToolWindowService;
import org.jetbrains.annotations.NotNull;
@ -19,15 +18,13 @@ public class AskAction extends AnAction {
public void actionPerformed(@NotNull AnActionEvent event) {
var project = event.getProject();
if (project != null) {
var toolWindow = ToolWindowManager.getInstance(project).getToolWindow("ChatGPT");
if (toolWindow != null) {
toolWindow.show();
toolWindow.setTitle("");
var toolWindowService = ApplicationManager.getApplication().getService(ToolWindowService.class);
ApiClient.getInstance().clearQueries();
toolWindowService.removeAll();
toolWindowService.paintLandingView();
}
ApiClient.getInstance().clearQueries();
var toolWindowService = ApplicationManager.getApplication().getService(ToolWindowService.class);
var toolWindow = toolWindowService.getToolWindow(project);
toolWindow.show();
toolWindow.setTitle("");
toolWindowService.removeAll();
toolWindowService.paintLandingView();
}
}
}

View file

@ -19,10 +19,10 @@ public abstract class BaseAction extends AnAction {
var project = event.getProject();
var editor = event.getData(PlatformDataKeys.EDITOR);
if (editor != null && project != null) {
ApiClient.getInstance().clearQueries();
var toolWindowService = ApplicationManager.getApplication().getService(ToolWindowService.class);
var selectedText = editor.getSelectionModel().getSelectedText();
ApiClient.getInstance().clearQueries();
initToolWindow(toolWindowService.getToolWindow());
initToolWindow(toolWindowService.getToolWindow(project));
toolWindowService.removeAll();
toolWindowService.paintUserMessage(selectedText);
toolWindowService.sendMessage(getPrompt(selectedText), project, null);

View file

@ -3,7 +3,6 @@ package ee.carlrobert.chatgpt.ide.toolwindow;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ui.componentsList.components.ScrollablePanel;
import com.intellij.openapi.wm.ToolWindow;
import com.intellij.ui.components.JBScrollPane;
import ee.carlrobert.chatgpt.ide.toolwindow.components.TextArea;
import java.awt.Adjustable;
@ -24,15 +23,13 @@ import org.jetbrains.annotations.NotNull;
public class ChatGptToolWindow {
private final Project project;
private final ToolWindow toolWindow;
private JPanel chatGptToolWindowContent;
private JScrollPane scrollPane;
private JTextArea textArea;
private JScrollPane textAreaScrollPane;
public ChatGptToolWindow(@NotNull Project project, @NotNull ToolWindow toolWindow) {
public ChatGptToolWindow(@NotNull Project project) {
this.project = project;
this.toolWindow = toolWindow;
}
public void handleSubmit() {
@ -72,7 +69,7 @@ public class ChatGptToolWindow {
@Override
public JScrollBar createVerticalScrollBar() {
JScrollBar verticalScrollBar = new JScrollPane.ScrollBar(1);
verticalScrollBar.setPreferredSize(new Dimension(0,0));
verticalScrollBar.setPreferredSize(new Dimension(0, 0));
return verticalScrollBar;
}
};
@ -96,7 +93,6 @@ public class ChatGptToolWindow {
scrollPane.setViewportBorder(null);
var toolWindowService = ApplicationManager.getApplication().getService(ToolWindowService.class);
toolWindowService.setToolWindow(toolWindow);
toolWindowService.setScrollablePanel(scrollablePanel);
toolWindowService.paintLandingView();
}

View file

@ -13,7 +13,7 @@ public class ChatGptToolWindowFactory implements ToolWindowFactory, DumbAware {
public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) {
var content = ApplicationManager.getApplication()
.getService(ContentFactory.class)
.createContent(new ChatGptToolWindow(project, toolWindow).getContent(), "", false);
.createContent(new ChatGptToolWindow(project).getContent(), "", false);
toolWindow.getContentManager().addContent(content);
}
}

View file

@ -8,6 +8,7 @@ import com.intellij.openapi.options.ShowSettingsUtil;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ui.componentsList.components.ScrollablePanel;
import com.intellij.openapi.wm.ToolWindow;
import com.intellij.openapi.wm.ToolWindowManager;
import ee.carlrobert.chatgpt.EmptyCallback;
import ee.carlrobert.chatgpt.client.ApiClient;
import ee.carlrobert.chatgpt.ide.settings.SettingsConfigurable;
@ -24,23 +25,19 @@ import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import org.jetbrains.annotations.NotNull;
public class ToolWindowService {
private ScrollablePanel scrollablePanel;
private ToolWindow toolWindow;
private boolean isLandingViewVisible;
public void setScrollablePanel(ScrollablePanel scrollablePanel) {
this.scrollablePanel = scrollablePanel;
}
public void setToolWindow(ToolWindow toolWindow) {
this.toolWindow = toolWindow;
}
public ToolWindow getToolWindow() {
return toolWindow;
public ToolWindow getToolWindow(@NotNull Project project) {
return ToolWindowManager.getInstance(project).getToolWindow("ChatGPT");
}
public void paintUserMessage(String userMessage) {