package com.dgex.offspring.application.ui.accounts;
import org.apache.log4j.Logger;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.layout.LayoutConstants;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.FontMetrics;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import com.dgex.offspring.messages.Messages;
import com.dgex.offspring.user.service.IUser;
public class AccountSummaryComposite extends Composite {
static Logger logger = Logger.getLogger(AccountSummaryComposite.class);
private final Label labelTransactions;
private final Label labelForgedBlocks;
private final Label labelForgedFee;
private final Label labelMessages;
private final Label labelAliases;
private final Label labelAssets;
private final Label labelAmount;
private final Label labelLastTransfer;
private final Label labelFirstTransfer;
private final int avgCharCountTransactions = 10;
private final int avgCharCountForgedBlocks = 10;
private final int avgCharCountForgedFee = 10;
private final int avgCharCountMessages = 10;
private final int avgCharCountAliases = 10;
private final int avgCharCountAssets = 10;
public AccountSummaryComposite(Composite parent, int style) {
super(parent, style);
GridLayoutFactory.fillDefaults().numColumns(3).applyTo(this);
Composite leftComposite = new Composite(this, SWT.NONE);
GridDataFactory.fillDefaults().grab(false, true).applyTo(leftComposite);
GridLayoutFactory.fillDefaults().spacing(LayoutConstants.getSpacing())
.numColumns(2).applyTo(leftComposite);
Composite middleComposite = new Composite(this, SWT.NONE);
GridDataFactory.fillDefaults().grab(false, true).applyTo(middleComposite);
GridLayoutFactory.fillDefaults().spacing(LayoutConstants.getSpacing())
.numColumns(2).applyTo(middleComposite);
Composite rightComposite = new Composite(this, SWT.NONE);
GridDataFactory.fillDefaults().grab(false, true).applyTo(rightComposite);
GridLayoutFactory.fillDefaults().spacing(LayoutConstants.getSpacing())
.numColumns(2).applyTo(rightComposite);
/* == left == */
Label label = new Label(leftComposite, SWT.NONE);
label.setText(Messages.AccountSummaryComposite_label_transactions);
GridDataFactory.fillDefaults().grab(false, true).applyTo(label);
labelTransactions = new Label(leftComposite, SWT.NONE);
labelTransactions
.setText(Messages.AccountSummaryComposite_transactions_default_value);
label = new Label(leftComposite, SWT.NONE);
label.setText(Messages.AccountSummaryComposite_label_forged_blocks);
GridDataFactory.fillDefaults().grab(false, true).applyTo(label);
labelForgedBlocks = new Label(leftComposite, SWT.NONE);
labelForgedBlocks
.setText(Messages.AccountSummaryComposite_forged_blocks_default_value);
label = new Label(leftComposite, SWT.NONE);
label.setText(Messages.AccountSummaryComposite_label_forged_fee);
GridDataFactory.fillDefaults().grab(false, true).applyTo(label);
labelForgedFee = new Label(leftComposite, SWT.NONE);
labelForgedFee
.setText(Messages.AccountSummaryComposite_forged_fee_default_value);
/* == middle == */
label = new Label(middleComposite, SWT.NONE);
label.setText(Messages.AccountSummaryComposite_label_message_count);
GridDataFactory.fillDefaults().grab(false, true).applyTo(label);
labelMessages = new Label(middleComposite, SWT.NONE);
labelMessages
.setText(Messages.AccountSummaryComposite_message_count_default_value);
label = new Label(middleComposite, SWT.NONE);
label.setText(Messages.AccountSummaryComposite_label_alias_count);
GridDataFactory.fillDefaults().grab(false, true).applyTo(label);
labelAliases = new Label(middleComposite, SWT.NONE);
labelAliases
.setText(Messages.AccountSummaryComposite_alias_count_default_value);
label = new Label(middleComposite, SWT.NONE);
label.setText(Messages.AccountSummaryComposite_label_assets_count);
GridDataFactory.fillDefaults().grab(false, true).applyTo(label);
labelAssets = new Label(middleComposite, SWT.NONE);
labelAssets
.setText(Messages.AccountSummaryComposite_assets_count_default_value);
/* == right == */
label = new Label(rightComposite, SWT.NONE);
label.setText(Messages.AccountSummaryComposite_label_last_transfer);
GridDataFactory.fillDefaults().grab(false, true).applyTo(label);
labelLastTransfer = new Label(rightComposite, SWT.NONE);
labelLastTransfer.setText("---------------------"); //$NON-NLS-1$
label = new Label(rightComposite, SWT.NONE);
label.setText(Messages.AccountSummaryComposite_label_first_transafer);
GridDataFactory.fillDefaults().grab(false, true).applyTo(label);
labelFirstTransfer = new Label(rightComposite, SWT.NONE);
labelFirstTransfer.setText("---------------------"); //$NON-NLS-1$
label = new Label(rightComposite, SWT.NONE);
label.setText(Messages.AccountSummaryComposite_label_amount_inout);
GridDataFactory.fillDefaults().grab(false, true).applyTo(label);
labelAmount = new Label(rightComposite, SWT.NONE);
labelAmount.setText("---------------------"); //$NON-NLS-1$
/*
* Calculate sane minimum widths for labels (for styling individual labels)
*/
int[] avgCharWitdh = { avgCharCountTransactions, avgCharCountForgedBlocks,
avgCharCountForgedFee, avgCharCountMessages, avgCharCountAliases,
avgCharCountAssets, };
Label[] labels = { labelTransactions, labelForgedBlocks, labelForgedFee,
labelMessages, labelAliases, labelAssets };
if (avgCharWitdh.length != labels.length)
throw new RuntimeException("Internal Error. Please look at me."); //$NON-NLS-1$
for (int i = 0; i < labels.length; i++) {
GC gc = new GC(labels[i]);
FontMetrics fm = gc.getFontMetrics();
int charWidth = fm.getAverageCharWidth();
gc.dispose();
GridDataFactory.defaultsFor(labels[i])
.hint((charWidth * avgCharWitdh[i]), SWT.DEFAULT).grab(false, true)
/* .indent(LayoutConstants.getMargins().x, 0) */.applyTo(labels[i]);
}
}
public void setActiveUser(IUser user) {
logger.info("setActiveUser DISABLED");
// List<ITransaction> transactions = user.getAccount().getTransactions();
//
// labelTransactions.setText("" + transactions.size()); //$NON-NLS-1$
//
// String text = ""; //$NON-NLS-1$
// if (transactions.size() > 0)
// text = Formatter.formatTimestampLocale(transactions.get(0).getTimestamp()
// .getTime());
// labelFirstTransfer.setText(text);
//
// text = ""; //$NON-NLS-1$
// if (transactions.size() > 0)
// text = Formatter.formatTimestampLocale(transactions
// .get(transactions.size() - 1).getTimestamp().getTime());
// labelLastTransfer.setText(text);
//
// IAccount account = user.getAccount();
//
// long forgedBlocks = account.getForgedBlocks().size();
// long forgedFee = account.getForgedFee();
// long amountIn = 0l;
// long amountOut = 0l;
// long feePaid = 0l;
//
// /* Count totals */
// for (ITransaction t : transactions) {
// amountIn += t.getAmountReceived(account.getId());
// amountOut += t.getAmountSpend(account.getId());
// feePaid += t.getFeePaid(account.getId());
// }
//
// labelForgedBlocks.setText(Long.toString(forgedBlocks));
// labelForgedFee.setText(Long.toString(forgedFee));
// labelAmount.setText(Long.toString(amountIn) + "/" //$NON-NLS-1$
// + Long.toString(amountOut) + "/" + Long.toString(feePaid));
}
}