private boolean isSizeChange = false; // changes size of the pipe. The next control point / component is on different PipeRun
private boolean isSub = false; // child point for offset / size change
+ private boolean disposed = false;
+
public PipeControlPoint(PipelineComponent component) {
this.component = component;
if (component.getPipeRun() != null)
@GetPropertyValue(name="Rotation Angle",tabId="Debug",value="rotationAngle")
public Double getRotationAngle() {
- if (asFixedAngle())
+ if (isRotate || asFixedAngle())
return rotationAngle;
return null;
}
public void _remove(boolean renconnect) {
- if (component == null && next == null && previous == null)
- return;
- if (DEBUG) System.out.println(this + " Remove " + renconnect);
+ if (disposed)
+ return;
+
+ if (DEBUG) System.out.println(this + " Remove " + renconnect);
if (getParentPoint() != null) {
getParentPoint()._remove(renconnect);
return;
}
PipeRun pipeRun = getPipeRun();
- if (pipeRun == null)
- return;
+// PipeRUn removal has been changed, so pipeRun may be null.
+// if (pipeRun == null)
+// return;
PipeControlPoint additionalRemove = null;
if (!PipingRules.isEnabled()) {
PipeControlPoint currentNext = next;
if (currentNext == null && currentPrev == null) {
removeComponent();
- pipeRun.remChild(this);
- checkRemove(pipeRun);
+ if (pipeRun != null) {
+ pipeRun.remChild(this);
+ checkRemove(pipeRun);
+ }
return;
}
if (currentNext != null && currentPrev != null) {
}
removeComponent();
- pipeRun.remChild(this);
- checkRemove(pipeRun);
- if (PipingRules.isEnabled() && pipeRun.getParent() != null && pipeRun.getControlPoints().size() > 0)
- PipingRules.validate(pipeRun);
+ if (pipeRun != null) {
+ pipeRun.remChild(this);
+ checkRemove(pipeRun);
+ if (PipingRules.isEnabled() && pipeRun.getParent() != null && pipeRun.getControlPoints().size() > 0)
+ PipingRules.validate(pipeRun);
+ }
if (additionalRemove != null)
additionalRemove.remove();
+ disposed = true;
}
/**
PipelineComponent n = next.getPipelineComponent();
while (n != null) {
+ if (n.getPipeRun() != previousRun)
+ break;
if (! (n instanceof Nozzle)) {
n.deattach();
nextPipeRun.addChild(n);
}
private boolean checkRemove(PipeRun pipeRun) {
+ if (pipeRun == null)
+ return false;
Collection<PipeControlPoint> points = pipeRun.getControlPoints();
if (points.size() == 0) {
pipeRun.remove();