package scriptbuilder.structures; import java.awt.Color; import java.util.ArrayList; import java.util.List; import java.util.Observable; /** * * @author Greg Eddington */ public class ScriptIncident extends Observable { public List slices; public Color color; public int number; public String name; public String description; public int length; public boolean collapsed = false; public int offset = 0; public void setCollapsed(boolean collapsed) { this.collapsed = collapsed; setChanged(); notifyObservers(); } public void setOffset(int offset) { int shift = offset - this.offset; this.offset = offset; for (TimeSlice slice : slices) { slice.shift(shift); } setChanged(); notifyObservers(); } public ScriptIncident(int number, String name, String description, int length, SimulationScript script) { color = Color.BLACK; this.number = number; this.name = name; this.description = description; this.length = length; this.addObserver(script); slices = new ArrayList(); } public ScriptIncident(Color color, int number, String name, String description, int length, SimulationScript script) { this.color = color; this.number = number; this.name = name; this.description = description; this.length = length; this.addObserver(script); slices = new ArrayList(); for (int i = 0; i < length; i += 60) { slices.add(new TimeSlice(i)); } } public ScriptIncident(Color color, int number, String name, String description, int length, SimulationScript script, int offset) { this.color = color; this.number = number; this.name = name; this.description = description; this.length = length; this.addObserver(script); slices = new ArrayList(); for (int i = 0; i < length; i += 60) { slices.add(new TimeSlice(i)); } this.setOffset(offset); } public static class SliceChangedEvent { public TimeSlice slice; SliceChangedEvent(TimeSlice slice) { this.slice = slice; } } public void setSliceActive(int i) { setChanged(); notifyObservers(new SliceChangedEvent(this.slices.get(i))); } public static class IncidentFocusedEvent { public ScriptIncident incident; IncidentFocusedEvent(ScriptIncident i) { incident = i; } } public void setIncidentActive() { setChanged(); notifyObservers(new IncidentFocusedEvent(this)); } @Override public String toString() { return this.number + " - " + this.name; } }