package com.csound.wizard.layout.param; import java.io.Serializable; import org.json.simple.JSONObject; import com.csound.wizard.Const; import com.csound.wizard.layout.Json; import com.csound.wizard.layout.param.Types.Range; public class RangeParam implements Serializable { private static final long serialVersionUID = 270578162172330493L; private Range mRange, mRangeX, mRangeY; public RangeParam() { this(null, null, null); } public RangeParam(Range x) { this(x, null, null); } public RangeParam(Range x, Range y) { this(null, x, y); } public RangeParam(Range xy, Range x, Range y) { mRange = xy; mRangeX = x; mRangeY = y; } public Range getRange() { return mRange; } public Range getRangeX() { return mRangeX; } public Range getRangeY() { return mRangeY; } public int getIntRange() { return (int) mRange.getMax(); } public int getIntRangeX() { return (int) mRangeX.getMax(); } public int getIntRangeY() { return (int) mRangeY.getMax(); } public static RangeParam parse(JSONObject obj) { return new RangeParam( parseRangeAt(Const.RANGE, obj), parseRangeAt(Const.RANGE_X, obj), parseRangeAt(Const.RANGE_Y, obj)); } public static RangeParam merge(RangeParam a, RangeParam b) { if (a == null) { return b; } if (b == null) { return a; } return new RangeParam( (Range) Param.mergeObjects(a.mRange, b.mRange), (Range) Param.mergeObjects(a.mRangeX, b.mRangeX), (Range) Param.mergeObjects(a.mRangeY, b.mRangeY)); } private static Range parseRangeAt(String key, JSONObject obj) { Object x = Json.getJson(key, obj); if (x != null) { return Range.parse(x); } return new Range(); } }