diff --git a/diylc/diylc-core/src/org/diylc/components/AbstractComponent.java b/diylc/diylc-core/src/org/diylc/components/AbstractComponent.java index 1270cc73..a763931d 100644 --- a/diylc/diylc-core/src/org/diylc/components/AbstractComponent.java +++ b/diylc/diylc-core/src/org/diylc/components/AbstractComponent.java @@ -291,5 +291,11 @@ public abstract class AbstractComponent implements IDIYComponent { @Override public String getInternalLinkName(int index1, int index2) { return null; - } + } + + @Override + public String getSectionName(int pointIndex) { + return null; + } + } diff --git a/diylc/diylc-core/src/org/diylc/core/IDIYComponent.java b/diylc/diylc-core/src/org/diylc/core/IDIYComponent.java index 8f69d692..ee1bfb47 100644 --- a/diylc/diylc-core/src/org/diylc/core/IDIYComponent.java +++ b/diylc/diylc-core/src/org/diylc/core/IDIYComponent.java @@ -24,7 +24,7 @@ package org.diylc.core; import java.awt.Graphics2D; import java.awt.Point; import java.io.Serializable; - + import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; @@ -128,7 +128,13 @@ public interface IDIYComponent extends Serializable { * @param index2 * @return name of the internal linked formed by the two control points, null if they do not form an internal link */ - String getInternalLinkName(int index1, int index2); + String getInternalLinkName(int index1, int index2); + + /** + * @param pointIndex name of the internal section containing the specified point, or null if the component does not have internal sections. + * @return + */ + String getSectionName(int pointIndex); /** * Draws the component onto the {@link Graphics2D}. diff --git a/diylc/diylc-core/src/org/diylc/netlist/Node.java b/diylc/diylc-core/src/org/diylc/netlist/Node.java index 16905c9d..4fe476ee 100644 --- a/diylc/diylc-core/src/org/diylc/netlist/Node.java +++ b/diylc/diylc-core/src/org/diylc/netlist/Node.java @@ -48,7 +48,8 @@ public class Node implements Comparable { } public String getDisplayName() { - return component.getControlPointNodeName(pointIndex); + String section = component.getSectionName(pointIndex); + return (section == null ? "" : section + ".") + component.getControlPointNodeName(pointIndex); } @Override diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index 12c9bc8f..c30596a5 100644 Binary files a/diylc/diylc-library/lib/diylc-core.jar and b/diylc/diylc-library/lib/diylc-core.jar differ diff --git a/diylc/diylc-library/src/org/diylc/netlist/ISpiceMapper.java b/diylc/diylc-library/src/org/diylc/netlist/ISpiceMapper.java index e662b2be..423121e1 100644 --- a/diylc/diylc-library/src/org/diylc/netlist/ISpiceMapper.java +++ b/diylc/diylc-library/src/org/diylc/netlist/ISpiceMapper.java @@ -2,5 +2,7 @@ package org.diylc.netlist; public interface ISpiceMapper { - int mapToSpiceNode(int index); + int mapToSpiceNode(int Index); + + String getSectionName(int pointIndex); } diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index 12c9bc8f..c30596a5 100644 Binary files a/diylc/diylc-swing/lib/diylc-core.jar and b/diylc/diylc-swing/lib/diylc-core.jar differ diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar index 3b3c8b08..9e661e6f 100644 Binary files a/diylc/diylc-swing/library/main.jar and b/diylc/diylc-swing/library/main.jar differ diff --git a/diylc/diylc-swing/src/org/diylc/swing/ActionFactory.java b/diylc/diylc-swing/src/org/diylc/swing/ActionFactory.java index e638a7d0..6df0f673 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/ActionFactory.java +++ b/diylc/diylc-swing/src/org/diylc/swing/ActionFactory.java @@ -1657,28 +1657,44 @@ public class ActionFactory { super(); this.plugInPort = plugInPort; this.swingUI = swingUI; - putValue(AbstractAction.NAME, "Create DIYLC Netlist"); + putValue(AbstractAction.NAME, "Generate DIYLC Netlist"); putValue(AbstractAction.SMALL_ICON, IconLoader.Web.getIcon()); } @Override public void actionPerformed(ActionEvent e) { - List res = plugInPort.extractNetlists(); - if (res == null) { - swingUI.showMessage("The generated netlist is empty, nothing to show.", "DIYLC Netlist", ISwingUI.INFORMATION_MESSAGE); - return; - } - StringBuilder sb = new StringBuilder(""); - - for (Netlist netlist : res) { - sb.append("

Switch configuration: ").append(netlist.getSwitchSetup()).append("

Connected node groups:
"); - for (Group v : netlist.getSortedGroups()) { - sb.append("  ").append(v.getSortedNodes()).append("
"); + swingUI.executeBackgroundTask(new ITask>() { + + @Override + public List doInBackground() throws Exception { + return plugInPort.extractNetlists(); } - sb.append("



"); - } - sb.append(""); - new TextDialog(swingUI.getOwnerFrame().getRootPane(), sb.toString(), "DIYLC Netlist", new Dimension(600, 480)).setVisible(true); + + @Override + public void failed(Exception e) { + swingUI.showMessage("Failed to generate the netlist: " + e.getMessage(), "DIYLC Netlist", ISwingUI.INFORMATION_MESSAGE); + } + + @Override + public void complete(List res) { + if (res == null) { + swingUI.showMessage("The generated netlist is empty, nothing to show.", "DIYLC Netlist", ISwingUI.INFORMATION_MESSAGE); + return; + } + StringBuilder sb = new StringBuilder(""); + + for (Netlist netlist : res) { + sb.append("

Switch configuration: "). + append(netlist.getSwitchSetup()).append("

Connected node groups:
"); + for (Group v : netlist.getSortedGroups()) { + sb.append("  ").append(v.getSortedNodes()).append("
"); + } + sb.append("



"); + } + sb.append(""); + new TextDialog(swingUI.getOwnerFrame().getRootPane(), sb.toString(), "DIYLC Netlist", new Dimension(600, 480)).setVisible(true); + } + }, true); } } @@ -1701,45 +1717,53 @@ public class ActionFactory { @Override public void actionPerformed(ActionEvent e) { - List netlists = plugInPort.extractNetlists(); - if (netlists == null || netlists.isEmpty()) { - swingUI.showMessage("The generated netlist is empty, nothing to show.", summarizer.getName(), ISwingUI.INFORMATION_MESSAGE); - return; - } - List res = null; - try { - res = summarizer.summarize(netlists, null); - } catch (Exception ex) { - swingUI.showMessage(ex.getMessage(), summarizer.getName(), ISwingUI.ERROR_MESSAGE); - return; - } - - if (res == null) { - swingUI.showMessage("The generated summary is empty, nothing to show.", summarizer.getName(), ISwingUI.INFORMATION_MESSAGE); - return; - } - StringBuilder sb = new StringBuilder(""); - - for (Summary summary : res) { - sb.append("

"); - - if (res.size() > 1) - sb.append("Switch configuration: "). - append(summary.getNetlist().getSwitchSetup()). - append("

"); - - sb.append(summary.getSummary()); - - sb.append("


"); - - if (res.size() > 1) - sb.append("
"); - } - sb.append(""); - new TextDialog(swingUI.getOwnerFrame().getRootPane(), sb.toString(), summarizer.getName(), new Dimension(600, 480)).setVisible(true); + swingUI.executeBackgroundTask(new ITask>() { + + @Override + public List doInBackground() throws Exception { + List netlists = plugInPort.extractNetlists(); + if (netlists == null || netlists.isEmpty()) { + throw new Exception("The generated netlist is empty, nothing to show."); + } + + return summarizer.summarize(netlists, null); + } + + @Override + public void failed(Exception e) { + swingUI.showMessage(e.getMessage(), summarizer.getName(), ISwingUI.INFORMATION_MESSAGE); + } + + @Override + public void complete(List res) { + if (res == null) { + swingUI.showMessage("The generated summary is empty, nothing to show.", summarizer.getName(), ISwingUI.INFORMATION_MESSAGE); + return; + } + StringBuilder sb = new StringBuilder(""); + + for (Summary summary : res) { + sb.append("

"); + + if (res.size() > 1) + sb.append("Switch configuration: "). + append(summary.getNetlist().getSwitchSetup()). + append("

"); + + sb.append(summary.getSummary()); + + sb.append("


"); + + if (res.size() > 1) + sb.append("
"); + } + sb.append(""); + new TextDialog(swingUI.getOwnerFrame().getRootPane(), sb.toString(), summarizer.getName(), new Dimension(600, 480)).setVisible(true); + } + }, true); } } }