package NET.worlds.scape; import java.awt.Color; import java.io.IOException; public class SetColorAction extends SlidePropertyAction { private Color _value = null; private Color _start; private static Object classCookie = new Object(); @Override public Persister trigger(Event e, Persister seqID) { Persister ret = null; Color val = null; if (this.useParam()) { try { this._value = new Color(Integer.valueOf(this.param())); } catch (NumberFormatException var9) { System.out.println(this.getName() + " unable to parse " + this.paramName()); this._value = null; } } if (this._value == null) { assert !this.slide(); } else { if (this.slide()) { if (seqID == null) { this.start(); this._start = (Color)this.get(); } float frac = this.fraction(); if (frac < 1.0) { int red = (int)((this._value.getRed() - this._start.getRed()) * frac) + this._start.getRed(); int grn = (int)((this._value.getGreen() - this._start.getGreen()) * frac) + this._start.getGreen(); int blu = (int)((this._value.getBlue() - this._start.getBlue()) * frac) + this._start.getBlue(); val = new Color(red, grn, blu); ret = this; } } if (val == null) { val = this._value; } } this.set(val); return ret; } @Override public Object properties(int index, int offset, int mode, Object value) throws NoSuchPropertyException { Object ret = null; switch (index - offset) { case 0: if (mode == 0) { ret = ColorPropertyEditor.make(new Property(this, index, "Set To").allowSetNull()); if (this._value == null) { ret = MaybeNullPropertyEditor.make((Property)ret, Color.black); } } else if (mode == 1) { ret = this._value; } else if (mode == 2) { this._value = (Color)value; } else if (mode == 4) { this._value = null; } break; default: ret = super.properties(index, offset + 1, mode, value); } return ret; } @Override public void saveState(Saver s) throws IOException { s.saveVersion(1, classCookie); super.saveState(s); if (this._value == null) { s.saveBoolean(false); } else { s.saveBoolean(true); s.saveInt(this._value.getRed()); s.saveInt(this._value.getGreen()); s.saveInt(this._value.getBlue()); } } @Override public void restoreState(Restorer r) throws IOException, TooNewException { switch (r.restoreVersion(classCookie)) { case 1: super.restoreState(r); if (r.restoreBoolean()) { int red = r.restoreInt(); int grn = r.restoreInt(); int blu = r.restoreInt(); this._value = new Color(red, grn, blu); } return; default: throw new TooNewException(); } } }