for(int i = 0; i < diff; i++)
addWirePointHandle(w);
}
- else
- {
- for(int i = 0; i > diff; i--)
- {
- removeLastWirePointHandle(wire);
- }
- }
List<WirePointHandle> wpHandles = pointHandlesPerWire.get(w);
int size = wpHandles.size();
List<WirePointHandle> wireHandles = pointHandlesPerWire.get(w);
WirePointHandle h;
if (wireHandles != null)
- wireHandles.add(h = new WirePointHandle(w, wireHandles.size()));
+ wireHandles.add(h = new WirePointHandle(this, w, wireHandles.size()));
else
{
wireHandles = new ArrayList<>();
- h = new WirePointHandle(w, 0);
+ h = new WirePointHandle(this, w, 0);
wireHandles.add(h);
pointHandlesPerWire.put(h.parent, wireHandles);
}
this.wirePointHandles.add(h);
addHandle(h);
}
-
- private void removeLastWirePointHandle(GUIWire owner)
+
+ void destroyWirePointHandle(GUIWire owner, WirePointHandle h)
{
- Handle h = pointHandlesPerWire.get(owner).remove(0);
- wirePointHandles.remove(h);
+ List<WirePointHandle> handles = pointHandlesPerWire.get(owner);
+ int pointIndex = handles.indexOf(h);
+ handles.remove(pointIndex);
removeHandle(h);
+ owner.removePathPoint(pointIndex);
}
private void removeWirePointHandles(GUIWire owner)
if (!click(handlePerPin.values(), clicked, entryState, stateMask))
if (!click(handlePerInterfacePin.values(), clicked, entryState, stateMask))
if (!click(getWirePointHandles(), clicked, entryState, stateMask))
- if (!click(handlePerComp.values(), clicked, entryState, stateMask))
- if (!click(getWireHandles(), clicked, entryState, stateMask))
- entryState.clickedEmpty(clicked, stateMask);
+ if (!click(getWireHandles(), clicked, entryState, stateMask))
+ if (!click(handlePerComp.values(), clicked, entryState, stateMask))
+ entryState.clickedEmpty(clicked, stateMask);
entryState.clicked(clicked, stateMask);
}
public class WirePointHandle extends Handle
{
private final static int END_OFFSET = 4;
+ private final HandleManager manager;
private boolean selected = false;
public final GUIWire parent;
private int pointIndex;
- public WirePointHandle(GUIWire parent, int pointIndex)
+ public WirePointHandle(HandleManager manager, GUIWire parent, int pointIndex)
{
super();
+ this.manager = manager;
this.parent = parent;
this.pointIndex = pointIndex;
setSize(END_OFFSET, END_OFFSET);
@Override
public void reqDelete()
{
- parent.removePathPoint(pointIndex);
+ manager.destroyWirePointHandle(parent, this);
}
@Override