public abstract class Labor implements Postable {
private boolean posted = false;
private boolean enabled = true;
private int lineNumber = 0;
...
protected Labor(int lineNumber... ) {
this.lineNumber = lineNumber;
...
}
public void setPosted(boolean posted) {
this.posted = posted && enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
if (!enabled && posted) {
setPosted(false);
}
}
public boolean hasSubOps() { return false; }
public boolean isPosted() { return posted; }
public boolean isEnabled() { return enabled; }
public boolean isIndented() { return false; }
}
|
|
public class LaborOp extends Labor {
private LaborAdd[] additions = new LaborAdd[0];
private LaborComb[] combinations = new LaborComb[0];
private LaborSubOp[] subOperations = new LaborSubOp[0];
public LaborOp(int lineNumber...
LaborAdd[] additions,
LaborComb[] combinations,
LaborSubOp[] subOperations) {
super(lineNumber...
setEnabled(true);
this.additions = additions;
this.combinations = combinations;
this.subOperations = subOperations;
}
public boolean hasSubOps() {
return subOperations.length > 0;
}
public void setPosted(boolean posted) {
if (!hasSubOps()) {
super.setPosted(posted);
enableDependents(posted);
}
}
public void subOpPostChange() {
boolean posted = false;
for (int i = 0; i < subOperations.length; i++) {
posted = posted || subOperations[i].isPosted();
}
enableDependents(posted);
}
private void enableDependents(boolean enabled) {
for (int i = 0; i < additions.length; i++) {
additions[i].setEnabled(enabled);
}
for (int i = 0; i < combinations.length; i++) {
combinations[i].setEnabled(enabled);
}
}
}
|
public class LaborAdd extends Labor {
public LaborAdd(int lineNumber... ) {
super(lineNumber...
setEnabled(false);
}
public boolean isIndented() {
return true;
}
}
|
public class LaborComb extends Labor {
private LaborSubOp[] subOperations = new LaborSubOp[0];
public LaborComb(int lineNumber...
LaborSubOp[] subOperations) {
super(lineNumber...
this.subOperations = subOperations;
setEnabled(false);
}
public boolean isIndented() {
return true;
}
public boolean hasSubOps() {
return subOperations.length > 0;
}
public void setPosted(boolean posted) {
if (!hasSubOps()) {
super.setPosted(posted);
}
}
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
for (int i = 0; i < subOperations.length; i++) {
subOperations[i].setEnabled(enabled);
}
}
public LaborSubOp[] getSubOperations() {
return subOperations;
}
}
|
public class LaborSubOp extends Labor {
private boolean indented = false;
private LaborOp owner = null;
public LaborSubOp(String estTime... boolean indented) {
super(lineNumber...
this.indented = indented;
}
public void setOwner(LaborOp owner) {
this.owner = owner;
}
public void setPosted(boolean posted) {
super.setPosted(posted);
if (owner != null) {
owner.subOpPostChange();
}
}
public boolean isIndented() {
return indented;
}
}
|
|