package com.jds.jn.parser.datatree; import com.jds.jn.network.packets.DecryptedPacket; import com.jds.jn.parser.Type; import com.jds.jn.parser.formattree.Part; import com.jds.nio.buffer.NioBuffer; /** * Author: VISTALL * Company: J Develop Station * Date: 16:07:25/07.04.2010 */ public class VisualValuePart extends ValuePart { private Object _value; private Type _type; public VisualValuePart(DataTreeNodeContainer parent, Part part, Type type) { super(parent, part); _type = type; } @Override public void parse(NioBuffer buf, DecryptedPacket s) { final int position = buf.position(); _value = _type.getInstance().getValue(buf, getModelPart()); _startPosition = position; _endPosition = buf.position(); updateColor(s); } @Override public String getNormalColor() { return _type.name(); } public double getValueAsDouble() { if (getModelPart().isInvert()) { return -((Number)_value).doubleValue(); } else { return ((Number)_value).doubleValue(); } } public float getValueAsFloat() { if (getModelPart().isInvert()) { return -((Number)_value).floatValue(); } else { return ((Number)_value).floatValue(); } } public long getValueAsLong() { if (getModelPart().isInvert()) { return -((Number)_value).longValue(); } else { return ((Number)_value).longValue(); } } public int getValueAsInt() { if (getModelPart().isInvert()) { return -((Number)_value).intValue(); } else { return ((Number)_value).intValue(); } } public short getValueAsShort() { if (getModelPart().isInvert()) { return (short) (-((Number)_value).shortValue()); } else { return ((Number)_value).shortValue(); } } public byte getValueAsByte() { if (getModelPart().isInvert()) { return (byte) -((Number)_value).byteValue(); } else { return ((Number)_value).byteValue(); } } @Override public String getValueAsString() { return String.valueOf(_value); } @Override public String getHexValueAsString() { if(_value instanceof String) { return ""; } else if (_type == Type.D || _type == Type.f) { return Double.toHexString(getValueAsLong()).toUpperCase(); } else { return "0x" + Long.toHexString(getValueAsLong()).toUpperCase(); } } @Override public int getBytesSize() { return 0; } public Type getValueType() { return _type; } public Object getValue() { return _value; } }