Skip to content

Commit

Permalink
web view transform and streaming modify
Browse files Browse the repository at this point in the history
  • Loading branch information
xiangtianyu committed Jan 18, 2024
1 parent 8d196a8 commit f2feb59
Show file tree
Hide file tree
Showing 69 changed files with 1,947 additions and 1,697 deletions.
1 change: 1 addition & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ dependencies {
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.15.2")
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.2")
implementation("com.squareup.okhttp3:okhttp:4.10.0")
implementation("com.squareup.okhttp3:okhttp-sse:4.10.0")
implementation("com.vladsch.flexmark:flexmark-all:0.64.8")
compileOnly("com.puppycrawl.tools:checkstyle:10.9.1")
testImplementation("org.mockito:mockito-core:5.7.0")
Expand Down
17 changes: 0 additions & 17 deletions src/main/java/com/zhongan/devpilot/DevPilotIcons.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,5 @@
import javax.swing.Icon;

public class DevPilotIcons {
public static final Icon SEND_ICON = IconLoader.getIcon("/icons/m_send.svg", DevPilotIcons.class);

public static final Icon STOP_ICON = IconLoader.getIcon("/icons/stop.svg", DevPilotIcons.class);

public static final Icon COPY_ICON = IconLoader.getIcon("/icons/copy.svg", DevPilotIcons.class);

public static final Icon INSERT_AT_CARET_ICON = IconLoader.getIcon("/icons/insert_at_caret.svg", DevPilotIcons.class);

public static final Icon NEW_FILE_ICON = IconLoader.getIcon("/icons/new_file.svg", DevPilotIcons.class);

public static final Icon REPLACE_ICON = IconLoader.getIcon("/icons/replace.svg", DevPilotIcons.class);

public static final Icon SYSTEM_ICON = IconLoader.getIcon("/icons/devpilot.svg", DevPilotIcons.class);

public static final Icon USER_ICON = IconLoader.getIcon("/icons/user.svg", DevPilotIcons.class);

public static final Icon CLEAR_ICON = IconLoader.getIcon("/icons/clear.svg", DevPilotIcons.class);

}
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,21 @@
import com.zhongan.devpilot.constant.PromptConst;
import com.zhongan.devpilot.enums.EditorActionEnum;
import com.zhongan.devpilot.enums.SessionTypeEnum;
import com.zhongan.devpilot.gui.toolwindows.DevPilotChatToolWindowFactory;
import com.zhongan.devpilot.gui.toolwindows.chat.DevPilotChatToolWindow;
import com.zhongan.devpilot.gui.toolwindows.chat.DevPilotChatToolWindowService;
import com.zhongan.devpilot.gui.toolwindows.components.EditorInfo;
import com.zhongan.devpilot.settings.actionconfiguration.EditorActionConfigurationState;
import com.zhongan.devpilot.settings.state.DevPilotLlmSettingsState;
import com.zhongan.devpilot.settings.state.LanguageSettingsState;
import com.zhongan.devpilot.util.DevPilotMessageBundle;
import com.zhongan.devpilot.util.DocumentUtil;
import com.zhongan.devpilot.util.PerformanceCheckUtils;
import com.zhongan.devpilot.webview.model.CodeReferenceModel;
import com.zhongan.devpilot.webview.model.MessageModel;

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import java.util.function.Consumer;

import javax.swing.Icon;
Expand Down Expand Up @@ -60,16 +63,17 @@ protected void actionPerformed(Project project, Editor editor, String selectedTe
return;
}

var editorActionEnum = EditorActionEnum.getEnumByLabel(label);
if (Objects.isNull(editorActionEnum)) {
return;
}

Consumer<String> callback = result -> {
if (validateResult(result)) {
DevPilotNotification.info(DevPilotMessageBundle.get("devpilot.notification.input.tooLong"));
return;
}

EditorActionEnum editorActionEnum = EditorActionEnum.getEnumByLabel(label);
if (Objects.isNull(editorActionEnum)) {
return;
}
switch (editorActionEnum) {
case PERFORMANCE_CHECK:
// display result, and open diff window
Expand All @@ -85,15 +89,23 @@ protected void actionPerformed(Project project, Editor editor, String selectedTe

EditorInfo editorInfo = new EditorInfo(editor);

DevPilotChatToolWindow devPilotChatToolWindow = DevPilotChatToolWindowFactory.getDevPilotChatToolWindow(project);
// right action clear session
devPilotChatToolWindow.addClearSessionInfo();
String newPrompt = prompt.replace("{{selectedCode}}", selectedText);
if (LanguageSettingsState.getInstance().getLanguageIndex() == 1) {
newPrompt = newPrompt + PromptConst.ANSWER_IN_CHINESE;
}
devPilotChatToolWindow.syncSendAndDisplay(SessionTypeEnum.MULTI_TURN.getCode(), EditorActionEnum.getEnumByLabel(label), newPrompt,
callback, editorInfo);

var service = project.getService(DevPilotChatToolWindowService.class);
var username = DevPilotLlmSettingsState.getInstance().getFullName();
service.clearRequestSession();

var showText = DevPilotMessageBundle.get(label);
var codeReference = new CodeReferenceModel(editorInfo.getFileUrl(),
editorInfo.getFileName(), editorInfo.getSelectedStartLine(), editorInfo.getSelectedEndLine(), editorActionEnum);

var codeMessage = MessageModel.buildCodeMessage(
UUID.randomUUID().toString(), System.currentTimeMillis(), showText, username, codeReference);

service.sendMessage(SessionTypeEnum.MULTI_TURN.getCode(), newPrompt, callback, codeMessage);
}
};
group.add(action);
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,37 +1,36 @@
package com.zhongan.devpilot.gui.toolwindows;

import com.google.common.collect.Maps;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.wm.ToolWindow;
import com.intellij.openapi.wm.ToolWindowFactory;
import com.intellij.ui.content.Content;
import com.intellij.ui.content.ContentFactory;
import com.zhongan.devpilot.actions.toolbar.ToolbarClearAction;
import com.zhongan.devpilot.gui.toolwindows.chat.DevPilotChatToolWindow;
import com.intellij.ui.jcef.JBCefApp;
import com.zhongan.devpilot.gui.toolwindows.chat.DevPilotChatToolWindowService;

import java.util.List;
import java.util.Map;
import java.awt.BorderLayout;

import javax.swing.JPanel;

import org.jetbrains.annotations.NotNull;

public class DevPilotChatToolWindowFactory implements ToolWindowFactory {

private static final Map<Project, DevPilotChatToolWindow> devPilotChatToolWindows = Maps.newConcurrentMap();
static {
JBCefApp.getInstance();
}

@Override
public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) {
DevPilotChatToolWindow devPilotChatToolWindow = new DevPilotChatToolWindow(project, toolWindow);
devPilotChatToolWindows.put(project, devPilotChatToolWindow);
ContentFactory contentFactory = ContentFactory.SERVICE.getInstance();
var devPilotChatToolWindowService = project.getService(DevPilotChatToolWindowService.class);
var contentFactory = ContentFactory.SERVICE.getInstance();
var webPanel = new JPanel(new BorderLayout());

Content content = contentFactory.createContent(devPilotChatToolWindow.getDevPilotChatToolWindowPanel(), "", false);

toolWindow.getContentManager().addContent(content);

toolWindow.setTitleActions(List.of(new ToolbarClearAction()));
}
var devPilotChatToolWindow = devPilotChatToolWindowService.getDevPilotChatToolWindow();

public static DevPilotChatToolWindow getDevPilotChatToolWindow(@NotNull Project project) {
return devPilotChatToolWindows.get(project);
if (devPilotChatToolWindow != null && devPilotChatToolWindow.getDevPilotChatToolWindowPanel() != null) {
webPanel.add(devPilotChatToolWindow.getDevPilotChatToolWindowPanel());
Content content = contentFactory.createContent(webPanel, "", false);
toolWindow.getContentManager().addContent(content);
}
}
}
Loading

0 comments on commit f2feb59

Please sign in to comment.