mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-10 17:22:09 +10:00
chatbot enhancements
This commit is contained in:
@@ -4,6 +4,7 @@ import org.apache.log4j.Logger;
|
|||||||
import org.diylc.common.IPlugInPort;
|
import org.diylc.common.IPlugInPort;
|
||||||
import org.diylc.common.ITask;
|
import org.diylc.common.ITask;
|
||||||
import org.diylc.plugins.chatbot.presenter.ChatbotPresenter;
|
import org.diylc.plugins.chatbot.presenter.ChatbotPresenter;
|
||||||
|
import org.diylc.plugins.cloud.presenter.CloudPresenter;
|
||||||
import org.diylc.swing.ISwingUI;
|
import org.diylc.swing.ISwingUI;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
@@ -170,11 +171,11 @@ public class ChatbotPane extends JPanel {
|
|||||||
int desiredHeight = lineHeight * 3 + 10; // 3 lines + padding
|
int desiredHeight = lineHeight * 3 + 10; // 3 lines + padding
|
||||||
|
|
||||||
// Set minimum and preferred size for both text area and scroll pane
|
// Set minimum and preferred size for both text area and scroll pane
|
||||||
Dimension promptSize = new Dimension(150, desiredHeight);
|
Dimension promptSize = new Dimension(200, desiredHeight);
|
||||||
getPromptArea().setMinimumSize(promptSize);
|
getPromptArea().setMinimumSize(promptSize);
|
||||||
getPromptArea().setPreferredSize(promptSize);
|
getPromptArea().setPreferredSize(promptSize);
|
||||||
promptScrollPane.setMinimumSize(new Dimension(150, desiredHeight + 10));
|
promptScrollPane.setMinimumSize(new Dimension(200, desiredHeight + 10));
|
||||||
promptScrollPane.setPreferredSize(new Dimension(150, desiredHeight + 10));
|
promptScrollPane.setPreferredSize(new Dimension(200, desiredHeight + 10));
|
||||||
|
|
||||||
gbc.gridx = 0;
|
gbc.gridx = 0;
|
||||||
gbc.gridy = 3;
|
gbc.gridy = 3;
|
||||||
@@ -197,7 +198,7 @@ public class ChatbotPane extends JPanel {
|
|||||||
gbc.fill = GridBagConstraints.HORIZONTAL; // Fill horizontally
|
gbc.fill = GridBagConstraints.HORIZONTAL; // Fill horizontally
|
||||||
add(buttonPanel, gbc);
|
add(buttonPanel, gbc);
|
||||||
|
|
||||||
setPreferredSize(new Dimension(300, 400));
|
setPreferredSize(new Dimension(360, 400));
|
||||||
}
|
}
|
||||||
|
|
||||||
public JTextArea getPromptArea() {
|
public JTextArea getPromptArea() {
|
||||||
@@ -227,8 +228,8 @@ public class ChatbotPane extends JPanel {
|
|||||||
// Calculate height based on font metrics
|
// Calculate height based on font metrics
|
||||||
int lineHeight = promptArea.getFontMetrics(promptArea.getFont()).getHeight();
|
int lineHeight = promptArea.getFontMetrics(promptArea.getFont()).getHeight();
|
||||||
int desiredHeight = lineHeight * 3 + 10; // 3 lines + padding
|
int desiredHeight = lineHeight * 3 + 10; // 3 lines + padding
|
||||||
promptArea.setMinimumSize(new Dimension(150, desiredHeight));
|
promptArea.setMinimumSize(new Dimension(200, desiredHeight));
|
||||||
promptArea.setPreferredSize(new Dimension(150, desiredHeight));
|
promptArea.setPreferredSize(new Dimension(200, desiredHeight));
|
||||||
|
|
||||||
// Add placeholder text behavior
|
// Add placeholder text behavior
|
||||||
final String placeholder = "Type your question here...";
|
final String placeholder = "Type your question here...";
|
||||||
@@ -309,7 +310,7 @@ public class ChatbotPane extends JPanel {
|
|||||||
TERMINAL_FG.getRed(), TERMINAL_FG.getGreen(), TERMINAL_FG.getBlue(),
|
TERMINAL_FG.getRed(), TERMINAL_FG.getGreen(), TERMINAL_FG.getBlue(),
|
||||||
TERMINAL_BG.getRed(), TERMINAL_BG.getGreen(), TERMINAL_BG.getBlue());
|
TERMINAL_BG.getRed(), TERMINAL_BG.getGreen(), TERMINAL_BG.getBlue());
|
||||||
|
|
||||||
String sampleChat = getSampleChat();
|
String sampleChat = getInitialChatContents();
|
||||||
|
|
||||||
chatEditorPane.setContentType("text/html");
|
chatEditorPane.setContentType("text/html");
|
||||||
chatEditorPane.setText(htmlStyle + "<body><pre>" + sampleChat + "</pre></body>");
|
chatEditorPane.setText(htmlStyle + "<body><pre>" + sampleChat + "</pre></body>");
|
||||||
@@ -317,19 +318,27 @@ public class ChatbotPane extends JPanel {
|
|||||||
return chatEditorPane;
|
return chatEditorPane;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getSampleChat() {
|
private String getInitialChatContents() {
|
||||||
Random r = new Random();
|
Random r = new Random();
|
||||||
|
|
||||||
return
|
String chatHtml =
|
||||||
"<div class='system'>Welcome to the DIYLC AI Assistant!</div><br><br>\n" +
|
"<div class='system'>Welcome to the DIYLC AI Assistant!</div><br><br>\n" +
|
||||||
"<div class='assistant'>I'm here to help you design, build, and troubleshoot your electronics projects using DIY Layout Creator (DIYLC). You can ask me questions about:</div><br>\n" +
|
"<div class='assistant'>I'm here to help you design, build, and troubleshoot your electronics projects using DIY Layout Creator (DIYLC). You can ask me questions about:</div><br>\n" +
|
||||||
"<ul>\n" +
|
// "<ul>\n" +
|
||||||
" <li><b>Electronics theory or concepts:</b> <i>e.g.,</i> '<span class='user'>" + electronicsQuestions[r.nextInt(
|
"\n" +
|
||||||
electronicsQuestions.length)] + "</span>'</li>\n" +
|
"- <b>Electronics theory or concepts:</b> <i>e.g.,</i> '<span class='user'>" + electronicsQuestions[r.nextInt(
|
||||||
" <li><b>DIYLC features and usage:</b> <i>e.g.,</i> '<span class='user'>" + diylcQuestions[r.nextInt(diylcQuestions.length)] + "</span>'</li>\n" +
|
electronicsQuestions.length)] + "</span>'<br>\n" +
|
||||||
" <li><b>Your current circuit project:</b> <i>e.g.,</i> '<span class='user'>" + circuitQuestions[r.nextInt(circuitQuestions.length)] + "</span>'</li>\n" +
|
"- <b>DIYLC features and usage:</b> <i>e.g.,</i> '<span class='user'>" + diylcQuestions[r.nextInt(diylcQuestions.length)] + "</span>'<br>\n" +
|
||||||
"</ul><br>\n" +
|
"- <b>Your current circuit project:</b> <i>e.g.,</i> '<span class='user'>" + circuitQuestions[r.nextInt(circuitQuestions.length)] + "</span>'<br>\n" +
|
||||||
"<div class='assistant'>Feel free to ask your own question or use one of these examples to get started!</div><br>";
|
// "</ul><br>\n" +
|
||||||
|
"<br>\n" +
|
||||||
|
"<div class='assistant'>Feel free to ask your own question or use one of these examples to get started!</div><br>\n";
|
||||||
|
|
||||||
|
if (!CloudPresenter.Instance.isLoggedIn()) {
|
||||||
|
chatHtml = chatHtml + "<div class='system' id='login'>Please log into your DIYLC Cloud account in order to use the AI Assistant.</div><br>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
return chatHtml;
|
||||||
}
|
}
|
||||||
|
|
||||||
public JButton getAskButton() {
|
public JButton getAskButton() {
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import org.diylc.common.IPlugIn;
|
|||||||
import org.diylc.common.IPlugInPort;
|
import org.diylc.common.IPlugInPort;
|
||||||
import org.diylc.core.IDIYComponent;
|
import org.diylc.core.IDIYComponent;
|
||||||
import org.diylc.core.Project;
|
import org.diylc.core.Project;
|
||||||
|
import org.diylc.plugins.cloud.presenter.CloudPresenter;
|
||||||
import org.diylc.swing.ISwingUI;
|
import org.diylc.swing.ISwingUI;
|
||||||
import org.diylc.swing.plugins.config.ConfigPlugin;
|
import org.diylc.swing.plugins.config.ConfigPlugin;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user