package org.ripple.power.ui;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.Toolkit;
import java.math.BigDecimal;
import java.math.MathContext;
import org.ripple.power.config.LSystem;
import org.ripple.power.txns.OtherData;
import org.ripple.power.txns.Updateable;
import org.ripple.power.ui.graphics.LColor;
import org.ripple.power.ui.graphics.chart.BarChartCanvas;
import org.ripple.power.ui.graphics.chart.ChartValue;
import org.ripple.power.ui.graphics.chart.ChartValueSerie;
import org.ripple.power.ui.graphics.geom.Point;
import org.ripple.power.ui.view.RPPushTool;
import org.ripple.power.wallet.WalletCache;
public class RPHoldXRPDialog {
private static RPPushTool instance = null;
public synchronized static RPPushTool get() {
if (instance == null) {
instance = load();
} else if (instance.isClose()) {
instance.close();
instance = load();
}
return instance;
}
private static RPPushTool load() {
final BarChartCanvas canvas = new BarChartCanvas(180, 200);
final ChartValueSerie c = new ChartValueSerie(LColor.RED.getRGB(), 1);
c.addPoint(new ChartValue("Total", 100f));
c.addPoint(new ChartValue("You", 1f, LColor.green));
final BarChartCanvas.TextDisplay textDisplay = new BarChartCanvas.TextDisplay();
textDisplay.message = "Hold XRP ?%";
textDisplay.x = (canvas.getWidth() - textDisplay.font
.stringWidth(textDisplay.message)) / 2;
textDisplay.y = canvas.getHeight() - 10;
canvas.setYLabelFlag("%");
canvas.setGridAA(false);
canvas.setBackground(UIConfig.background);
canvas.addSerie(c);
canvas.setBottom(28);
canvas.setLeft(2);
canvas.setRight(10);
canvas.setTop(4);
canvas.setTextDisplay(textDisplay);
canvas.offsetX = -35;
Insets screenInsets = Toolkit.getDefaultToolkit().getScreenInsets(
LSystem.applicationMain.getGraphicsConfiguration());
Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
final RPPushTool tool = RPPushTool.pop(new Point(20, size.getHeight()),
(int) (screenInsets.bottom + canvas.getHeight()
+ (RPPushTool.TITLE_SIZE * 2) - 20),
"Total XRP assets", canvas);
Updateable update = new Updateable() {
@Override
public void action(Object o) {
for (; !tool.isClose();) {
String amount = WalletCache.get().getAmounts();
if (!"0.000000".equals(amount)
&& !textDisplay.message.contains(amount)) {
try {
String total = OtherData.getCoinmarketcapTo("usd",
LSystem.nativeCurrency).totalSupply;
if (total.indexOf(',') != -1) {
total = total.replace(",", "");
}
String result = LSystem.getNumber(new BigDecimal(
WalletCache.get().getAmounts()).divide(
new BigDecimal(total),
MathContext.DECIMAL128).multiply(
new BigDecimal(100)));
double dd = Double.parseDouble(result);
if (dd > 1d) {
c.getPoint(1).y = (int) dd;
} else {
c.getPoint(1).y = 1f;
}
textDisplay.message = "Hold XRP " + (result + "%");
textDisplay.x = (canvas.getWidth() - textDisplay.font
.stringWidth(textDisplay.message)) / 2;
LSystem.invokeLater(new Runnable() {
@Override
public void run() {
canvas.repaint();
}
});
} catch (Exception ex) {
}
}
LSystem.sleep(LSystem.MINUTE);
}
}
};
LSystem.postThread(update);
return tool;
}
public static void hideDialog() {
if (instance != null) {
instance.setVisible(false);
}
}
public static void showDialog() {
if (instance != null) {
instance.setVisible(true);
}
}
}