package com.yoghurt.crypto.transactions.client.widget;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.yoghurt.crypto.transactions.client.place.TransactionPlaceRouter;
import com.yoghurt.crypto.transactions.client.resources.R;
import com.yoghurt.crypto.transactions.shared.util.ArrayUtil;
public class TransactionViewer extends ValueViewer {
private final ClickHandler mouseClickHandler = new ClickHandler() {
@Override
public void onClick(final ClickEvent event) {
presenter.goToTransaction(value);
}
};
private final TransactionPlaceRouter presenter;
/**
* Flag indicating whether or not the value is LE or BE, if it's BE, will convert to LE
*/
private final boolean reverse;
public TransactionViewer(final TransactionPlaceRouter presenter, final boolean coinbase) {
this(presenter, true, coinbase);
}
public TransactionViewer(final TransactionPlaceRouter presenter, final boolean reverse, final boolean coinbase) {
super(R.color().transactionHash(), new SimpleContextFactory<String>() {
@Override
protected String getTextValue(final String value) {
if(coinbase) {
return "This is a coinbase transaction, it has no inputs.";
} else {
return "View this transaction.";
}
}
});
this.presenter = presenter;
this.reverse = reverse;
if(!coinbase) {
setMouseClickHandler(mouseClickHandler);
}
}
@Override
public void setValue(final byte[] hash) {
if (reverse) {
final byte[] hashCopy = ArrayUtil.arrayCopy(hash);
ArrayUtil.reverse(hashCopy);
super.setValue(hashCopy);
} else {
super.setValue(hash);
}
}
}