import java.awt.*; import java.awt.geom.*; import java.util.*; public class Circuit { private ArrayList components; private CircuitPanel cPanel; public static final double UNION_DISTANCE=36.0; public Circuit (CircuitPanel cPanel){ components = new ArrayList(); this.cPanel=cPanel; } public void add(Component com){ components.add(com); cPanel.repaint(); } public void paintComponents (Graphics2D g) { for (int i=components.size()-1; i >= 0; i--) components.get(i).paintComponent(g); } public Component find(Point p) { for (int i=components.size()-1; i >= 0; i--) if (components.get(i).isUnderPoint(p)) return components.get(i); return null; } public Point findNearComponent(Component c) { Point minDistance=null, distance, origen=new Point(); if (components.size() == 1) return null; // es la única for (int i=components.size()-1; i >= 0; i--) if (components.get(i) != c){ // no es la misma distance = components.get(i).distance(c); if (minDistance == null) minDistance = distance; else if(distance.distanceSq(origen) < minDistance.distanceSq(origen)) minDistance = distance; } if (minDistance.distanceSq(origen) < UNION_DISTANCE) return minDistance; else return null; } }