package com.robonobo.gui.components; import static com.robonobo.gui.GuiUtil.*; import info.clearthought.layout.TableLayout; import java.awt.Dimension; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.text.NumberFormat; import javax.swing.*; import com.robonobo.common.concurrent.CatchingRunnable; import com.robonobo.core.wang.WangListener; import com.robonobo.gui.RoboColor; import com.robonobo.gui.components.base.RLabel; import com.robonobo.gui.components.base.RLabel22; import com.robonobo.gui.frames.RobonoboFrame; @SuppressWarnings("serial") public class BalanceLabel extends JPanel implements LeftSidebarComponent, WangListener { RobonoboFrame frame; RLabel lbl; NumberFormat balanceFormat; public BalanceLabel(RobonoboFrame frame) { this.frame = frame; double[][] cellSizen = { { TableLayout.FILL }, { TableLayout.FILL } }; setLayout(new TableLayout(cellSizen)); lbl = new RLabel22(createImageIcon("/wang-orange-on-trans.png")); lbl.setForeground(RoboColor.ORANGE); add(lbl, "0,0,CENTER,CENTER"); balanceFormat = NumberFormat.getInstance(); balanceFormat.setMaximumFractionDigits(2); balanceFormat.setMinimumFractionDigits(2); setBackground(RoboColor.DARK_GRAY); setBalance(0d); addMouseListener(new MouseListener()); frame.ctrl.addWangListener(this); Dimension sz = new Dimension(200, 30); setPreferredSize(sz); } @Override public void balanceChanged(double newBalance) { setBalance(newBalance); } @Override public void accountActivity(double creditValue, String narration) { // Do nothing } public void setSelected(boolean selected) { if(selected) { frame.mainPanel.selectContentPanel("wang"); setBorder(BorderFactory.createLoweredBevelBorder()); frame.leftSidebar.clearSelectionExcept(this); } else { setBorder(null); } markAsDirty(this); } @Override public void relinquishSelection() { setSelected(false); } private void setBalance(final double newBalance) { SwingUtilities.invokeLater(new CatchingRunnable() { public void doRun() throws Exception { // TODO Make it red if they have no ends String balanceTxt = balanceFormat.format(newBalance); lbl.setText(balanceTxt); } }); } class MouseListener extends MouseAdapter { @Override public void mousePressed(MouseEvent e) { setSelected(true); e.consume(); } } }