mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-10 17:22:09 +10:00
chatbot connection
This commit is contained in:
+3
-2
@@ -78,9 +78,10 @@ public class ChatbotPresenter {
|
||||
return service;
|
||||
}
|
||||
|
||||
String promptChatbot() throws NotLoggedInException {
|
||||
public String promptChatbot(String project, String netlist, String prompt) throws NotLoggedInException {
|
||||
if (!CloudPresenter.Instance.isLoggedIn())
|
||||
throw new NotLoggedInException();
|
||||
return null;
|
||||
return getService().promptChatbot(CloudPresenter.Instance.getCurrentUsername(), CloudPresenter.Instance.getCurrentToken(),
|
||||
CloudPresenter.Instance.getMachineId(), project, netlist, prompt);
|
||||
}
|
||||
}
|
||||
|
||||
+5
-1
@@ -291,6 +291,10 @@ public class CloudPresenter {
|
||||
return ConfigurationManager.getInstance().readString(USERNAME_KEY, null);
|
||||
}
|
||||
|
||||
public String getCurrentToken() {
|
||||
return ConfigurationManager.getInstance().readString(TOKEN_KEY, null);
|
||||
}
|
||||
|
||||
public void updatePassword(String oldPassword, String newPassword) throws CloudException {
|
||||
String username = ConfigurationManager.getInstance().readString(USERNAME_KEY, null);
|
||||
|
||||
@@ -416,7 +420,7 @@ public class CloudPresenter {
|
||||
return properties;
|
||||
}
|
||||
|
||||
private String getMachineId() {
|
||||
public String getMachineId() {
|
||||
if (machineId == null) {
|
||||
try {
|
||||
InetAddress ip = InetAddress.getLocalHost();
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
package org.diylc.swing.plugins.chatbot;
|
||||
|
||||
import org.diylc.common.IPlugInPort;
|
||||
import org.diylc.common.ITask;
|
||||
import org.diylc.core.IView;
|
||||
import org.diylc.plugins.chatbot.presenter.ChatbotPresenter;
|
||||
import org.diylc.plugins.cloud.presenter.CloudPresenter;
|
||||
import org.diylc.plugins.cloud.presenter.NotLoggedInException;
|
||||
import org.diylc.swing.ISwingUI;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.io.File;
|
||||
|
||||
public class ChatbotPane extends JPanel {
|
||||
|
||||
@@ -229,10 +237,67 @@ public class ChatbotPane extends JPanel {
|
||||
askButton.setForeground(TERMINAL_FG);
|
||||
askButton.setFocusPainted(false);
|
||||
askButton.setBorderPainted(true);
|
||||
askButton.addActionListener(e -> {
|
||||
final String prompt = getPromptArea().getText();
|
||||
appendSection("user", prompt);
|
||||
getPromptArea().setText(null);
|
||||
String currentFile = plugInPort.getCurrentFileName();
|
||||
String fileName = extractFileName(currentFile);
|
||||
|
||||
getAskButton().setEnabled(false);
|
||||
getClearButton().setEnabled(false);
|
||||
swingUI.executeBackgroundTask(new ITask<String>() {
|
||||
|
||||
@Override
|
||||
public String doInBackground() throws Exception {
|
||||
return ChatbotPresenter.Instance.promptChatbot(fileName, "", prompt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failed(Exception e) {
|
||||
swingUI.showMessage("Failed to ask AI Assistant. Error: " + e.getMessage(), "AI Assistant Error",
|
||||
IView.ERROR_MESSAGE);
|
||||
getClearButton().setEnabled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void complete(String result) {
|
||||
appendSection("assistant", result);
|
||||
getClearButton().setEnabled(true);
|
||||
}
|
||||
}, true);
|
||||
});
|
||||
}
|
||||
return askButton;
|
||||
}
|
||||
|
||||
private void appendSection(String style, String insertText) {
|
||||
String text = getChatEditorPane().getText();
|
||||
int bodyCloseIndex = text.indexOf("</body>");
|
||||
text = text.substring(0, bodyCloseIndex) +
|
||||
"\n<div class='" + style + "'>" + insertText + "</div>\n" +
|
||||
text.substring(bodyCloseIndex);
|
||||
getChatEditorPane().setText(text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Extracts the base file name without extension from a full path.
|
||||
* For example: "/path/to/myfile.diy" returns "myfile"
|
||||
*/
|
||||
private String extractFileName(String path) {
|
||||
if (path == null || path.isEmpty()) {
|
||||
return "Untitled";
|
||||
}
|
||||
// Get the last part after the last separator
|
||||
String fileName = path.substring(path.lastIndexOf(File.separator) + 1);
|
||||
// Remove the extension if present
|
||||
int dotIndex = fileName.lastIndexOf('.');
|
||||
if (dotIndex > 0) {
|
||||
fileName = fileName.substring(0, dotIndex);
|
||||
}
|
||||
return fileName;
|
||||
}
|
||||
|
||||
public JButton getClearButton() {
|
||||
if (clearButton == null) {
|
||||
clearButton = new JButton("Clear");
|
||||
|
||||
Reference in New Issue
Block a user