mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-08 04:44:55 +10:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dcbaae07c6 | |||
| 2a010a9df3 | |||
| 6c8d07faef | |||
| ad0a467470 |
@@ -77,6 +77,7 @@ public interface IPlugInPort extends ISelectionProcessor, IMouseProcessor, IKeyP
|
||||
public static final String SHOW_RULERS_KEY = "showRulers";
|
||||
public static final String SHOW_GRID_KEY = "showGrid";
|
||||
public static final String HIGHLIGHT_CONTINUITY_AREA = "highlightContinuityArea";
|
||||
public static final String MULTIMETER_MODE = "multimeterMode";
|
||||
public static final String HARDWARE_ACCELERATION = "hardwareAcceleration";
|
||||
public static final String EXTRA_SPACE_KEY = "extraSpace";
|
||||
public static final String FAVORITES_KEY = "favorites";
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
package org.diylc.netlist;
|
||||
|
||||
import java.awt.geom.Point2D;
|
||||
import java.util.Optional;
|
||||
import org.diylc.presenter.DrawingManager;
|
||||
|
||||
public class ConnectivityNetlistAnalyzer extends NetlistAnalyzer {
|
||||
|
||||
private Point2D point1;
|
||||
private Point2D point2;
|
||||
|
||||
public ConnectivityNetlistAnalyzer(Point2D point1, Point2D point2) {
|
||||
this.point1 = point1;
|
||||
this.point2 = point2;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Summary summarize(Netlist netlist, Node preferredOutput) throws TreeException {
|
||||
Node node1 = netlist.getGroups().stream()
|
||||
.flatMap(x -> x.getNodes().stream())
|
||||
.filter(n -> n.getPoint2D().distance(point1) < DrawingManager.CONTROL_POINT_SIZE)
|
||||
.findFirst().orElse(null);
|
||||
|
||||
Node node2 = netlist.getGroups().stream()
|
||||
.flatMap(x -> x.getNodes().stream())
|
||||
.filter(n -> n.getPoint2D().distance(point2) < DrawingManager.CONTROL_POINT_SIZE)
|
||||
.findFirst().orElse(null);
|
||||
|
||||
if (node1 == null || node2 == null) {
|
||||
return new Summary(netlist, "At least one of the selected points does not represent a node.");
|
||||
}
|
||||
|
||||
Tree treeBetween = constructTreeBetween(netlist, node1, node2);
|
||||
|
||||
return new Summary(netlist, Optional.ofNullable(treeBetween)
|
||||
.map(x -> x.toAsciiString())
|
||||
.orElse("No conection detected."));
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,6 @@ import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
|
||||
public abstract class NetlistAnalyzer {
|
||||
|
||||
@@ -695,13 +695,22 @@ public class DrawingManager {
|
||||
messageDispatcher.dispatchMessage(EventType.REPAINT);
|
||||
}
|
||||
|
||||
public void findContinuityAreaAtPoint(Point2D p) {
|
||||
if (continuityGraphCache == null)
|
||||
public void setContinuityAreaAtPoint(Point2D p) {
|
||||
if (continuityGraphCache == null) {
|
||||
continuityGraphCache = getContinuityGraph();
|
||||
}
|
||||
|
||||
currentContinuityAreas = continuityGraphCache.findAreasFor(p);
|
||||
}
|
||||
|
||||
public List<Area> getContinuityAreaAtPoint(Point2D p) {
|
||||
if (continuityGraphCache == null) {
|
||||
continuityGraphCache = getContinuityGraph();
|
||||
}
|
||||
|
||||
return continuityGraphCache.findAreasFor(p);
|
||||
}
|
||||
|
||||
public List<ContinuityArea> getContinuityAreas() {
|
||||
// Find all individual continuity areas for all components
|
||||
List<ContinuityArea> preliminaryAreas = new ArrayList<ContinuityArea>();
|
||||
|
||||
@@ -48,6 +48,7 @@ import java.util.function.Supplier;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.swing.JOptionPane;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.diylc.appframework.miscutils.IConfigListener;
|
||||
import org.diylc.appframework.miscutils.IConfigurationManager;
|
||||
import org.diylc.appframework.miscutils.JarScanner;
|
||||
import org.diylc.appframework.miscutils.Utils;
|
||||
@@ -78,11 +79,14 @@ import org.diylc.core.annotations.IAutoCreator;
|
||||
import org.diylc.core.measures.Size;
|
||||
import org.diylc.core.measures.SizeUnit;
|
||||
import org.diylc.lang.LangUtil;
|
||||
import org.diylc.netlist.ConnectivityNetlistAnalyzer;
|
||||
import org.diylc.netlist.INetlistParser;
|
||||
import org.diylc.netlist.Netlist;
|
||||
import org.diylc.netlist.NetlistAnalyzer;
|
||||
import org.diylc.netlist.NetlistBuilder;
|
||||
import org.diylc.netlist.NetlistException;
|
||||
import org.diylc.netlist.Summary;
|
||||
import org.diylc.netlist.TreeException;
|
||||
import org.diylc.serialization.ProjectFileManager;
|
||||
import org.diylc.test.DIYTest;
|
||||
import org.diylc.test.Snapshot;
|
||||
@@ -202,6 +206,9 @@ public class Presenter implements IPlugInPort {
|
||||
private int dragAction;
|
||||
private Point2D previousScaledPoint;
|
||||
|
||||
// Multimeter
|
||||
private Point2D firstMultimeterPoint;
|
||||
|
||||
private DIYTest test = null;
|
||||
|
||||
public Presenter(IView view, IConfigurationManager<?> configManager) {
|
||||
@@ -212,6 +219,15 @@ public class Presenter implements IPlugInPort {
|
||||
super();
|
||||
this.view = view;
|
||||
this.configManager = configManager;
|
||||
this.configManager.addConfigListener(MULTIMETER_MODE, new IConfigListener() {
|
||||
|
||||
@Override
|
||||
public void valueChanged(String name, Object value) {
|
||||
if (Boolean.TRUE.equals(value)) {
|
||||
firstMultimeterPoint = null;
|
||||
}
|
||||
}
|
||||
});
|
||||
plugIns = new ArrayList<IPlugIn>();
|
||||
messageDispatcher = new MessageDispatcher<EventType>(true);
|
||||
selectedComponents = new HashSet<IDIYComponent<?>>();
|
||||
@@ -680,8 +696,29 @@ public class Presenter implements IPlugInPort {
|
||||
projectFileManager.notifyFileChange();
|
||||
}
|
||||
} else if (configManager.readBoolean(HIGHLIGHT_CONTINUITY_AREA, false) || altDown) {
|
||||
drawingManager.findContinuityAreaAtPoint(scaledPoint);
|
||||
drawingManager.setContinuityAreaAtPoint(scaledPoint);
|
||||
messageDispatcher.dispatchMessage(EventType.REPAINT);
|
||||
} else if (configManager.readBoolean(MULTIMETER_MODE, false)) {
|
||||
if (firstMultimeterPoint == null) {
|
||||
firstMultimeterPoint = scaledPoint;
|
||||
} else {
|
||||
ConnectivityNetlistAnalyzer connectivityNetlistAnalyzer = new ConnectivityNetlistAnalyzer(
|
||||
firstMultimeterPoint, scaledPoint);
|
||||
try {
|
||||
List<Netlist> netlists = extractNetlists(false);
|
||||
List<Summary> summarize = connectivityNetlistAnalyzer.summarize(netlists, null);
|
||||
for (Summary s : summarize) {
|
||||
LOG.info(s.getSummary());
|
||||
}
|
||||
} catch (NetlistException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (TreeException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
firstMultimeterPoint = null;
|
||||
}
|
||||
} else {
|
||||
List<IDIYComponent<?>> newSelection = new ArrayList<IDIYComponent<?>>(selectedComponents);
|
||||
List<IDIYComponent<?>> components = findComponentsAtScaled(scaledPoint, false);
|
||||
|
||||
@@ -103,6 +103,9 @@ public class ConfigPlugin implements IPlugIn {
|
||||
swingUI.injectMenuAction(
|
||||
ActionFactory.getInstance().createConfigAction(plugInPort, "Highlight Connected Areas", IPlugInPort.HIGHLIGHT_CONTINUITY_AREA,
|
||||
false), CONFIG_MENU);
|
||||
swingUI.injectMenuAction(
|
||||
ActionFactory.getInstance().createConfigAction(plugInPort, "Multimeter Mode", IPlugInPort.MULTIMETER_MODE,
|
||||
false), CONFIG_MENU);
|
||||
|
||||
try {
|
||||
List<Language> languages = LangUtil.getAvailableLanguages();
|
||||
|
||||
Reference in New Issue
Block a user