analyzer added

This commit is contained in:
Bane Stojkovic
2025-04-24 21:38:04 +02:00
parent c914749413
commit f7cd33c80f
7 changed files with 230 additions and 19 deletions
@@ -21,6 +21,7 @@ import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.ClipboardOwner;
import javax.swing.Icon;
import org.apache.log4j.Logger;
import org.diylc.swing.actions.analyze.AiAnalyzeAction;
import org.diylc.swing.actions.analyze.HighlightConnectedAreasAction;
import org.diylc.swingframework.IDrawingProvider;
@@ -275,6 +276,10 @@ public class ActionFactory {
return new GenerateNetlistAction(plugInPort, swingUI, includeSwitches);
}
public AiAnalyzeAction createAiAnalyzeAction(IPlugInPort plugInPort, ISwingUI swingUI) {
return new AiAnalyzeAction(plugInPort, swingUI);
}
public SummarizeNetlistAction createSummarizeNetlistAction(IPlugInPort plugInPort,
ISwingUI swingUI, INetlistAnalyzer summarizer, boolean includeSwitches) {
return new SummarizeNetlistAction(plugInPort, swingUI, summarizer, includeSwitches);
@@ -0,0 +1,60 @@
package org.diylc.swing.actions.analyze;
import org.diylc.common.INetlistAnalyzer;
import org.diylc.common.IPlugInPort;
import org.diylc.common.ITask;
import org.diylc.netlist.Netlist;
import org.diylc.netlist.Summary;
import org.diylc.swing.ISwingUI;
import org.diylc.swingframework.TextDialog;
import org.diylc.utils.IconLoader;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.util.List;
public class AiAnalyzeAction extends AbstractAction {
private static final long serialVersionUID = 1L;
private IPlugInPort plugInPort;
private ISwingUI swingUI;
public AiAnalyzeAction(IPlugInPort plugInPort, ISwingUI swingUI) {
super();
this.plugInPort = plugInPort;
this.swingUI = swingUI;
putValue(AbstractAction.NAME, "AI Circuit Analyzer");
// putValue(AbstractAction.SMALL_ICON,
// Enum.valueOf(IconLoader.class, summarizer.getIconName()).getIcon());
}
@Override
public void actionPerformed(ActionEvent e) {
swingUI.executeBackgroundTask(new ITask<String>() {
@Override
public String doInBackground() throws Exception {
return plugInPort.getChatbotService().analyzeCircuit();
}
@Override
public void failed(Exception e) {
swingUI.showMessage(e.getMessage(), "AI Circuit Analyzer", ISwingUI.ERROR_MESSAGE);
}
@Override
public void complete(String res) {
if (res == null || res.isEmpty()) {
swingUI.showMessage("The generated analysis is empty, nothing to show.",
"AI Circuit Analyzer", ISwingUI.INFORMATION_MESSAGE);
return;
}
new TextDialog(swingUI.getOwnerFrame().getRootPane(), res, "AI Circuit Analyzer",
new Dimension(800, 600)).setVisible(true);
}
}, true);
}
}
@@ -66,6 +66,7 @@ public class AnalyzeMenuPlugin implements IPlugIn {
List<Action> menuActions = new ArrayList<>();
// Add all menu actions to the list
menuActions.add(actionFactory.createAiAnalyzeAction(plugInPort, swingUI));
menuActions.add(actionFactory.createCheckProximityAction(plugInPort, swingUI));
menuActions.add(actionFactory.createBomAction(plugInPort));
menuActions.add(actionFactory.createGenerateNetlistAction(plugInPort, swingUI, false));