package org.ripple.power.ui;
import java.awt.Dimension;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.json.JSONArray;
import org.ripple.power.config.LSystem;
import org.ripple.power.config.Session;
import org.ripple.power.helper.HelperWindow;
import org.ripple.power.i18n.LangConfig;
import org.ripple.power.txns.Currencies;
import org.ripple.power.txns.Gateway;
import org.ripple.power.txns.RipplePriceMonitor;
import org.ripple.power.ui.view.ABaseDialog;
import org.ripple.power.ui.view.RPLabel;
import org.ripple.power.ui.view.RPList;
import org.ripple.power.ui.view.RPTextBox;
import org.ripple.power.ui.view.log.ErrorLog;
import org.ripple.power.utils.MathUtils;
public class RPPriceWarningDialog extends ABaseDialog {
/**
*
*/
private static final long serialVersionUID = 1L;
private RPCButton _addDataButton;
private RPCButton _delDataButton;
private RPLabel _dstCurLabel;
private RPList _dstCurList;
private RPLabel _dstGatewayLabel;
private RPList _dstGatewayList;
private RPLabel _existCurLabel;
private RPList _existCurList;
private RPLabel _existGatewayLabel;
private RPList _existGatewayList;
private RPLabel _finalSetLabel;
private RPList _finalSetList;
private RPComboBox _gatewayAndCurComboBox;
private RPLabel _gatewayAndCurLabel;
private RPLabel _intervalTimeLabel;
private RPTextBox _intervalTimeTexture;
private RPCButton _moveCurButton;
private RPCButton _moveDelCurButton;
private RPCButton _moveGatewayButton;
private RPCButton _moveDelGatewayButton;
private RPCButton _saveDataButton;
private RPComboBox _typeSelectComboBox;
private RPLabel _xrpPriceLabel;
private RPTextBox _xrpPriceText;
private ArrayList<String> curlist = new ArrayList<String>();
private ArrayList<String> gatewaylist = new ArrayList<String>();
private ArrayList<String> curSelectlist = new ArrayList<String>();
private ArrayList<String> gatewaySelectlist = new ArrayList<String>();
private ArrayList<String> finallist = new ArrayList<String>();
private javax.swing.JScrollPane scrollPanelOne;
private javax.swing.JScrollPane scrollPanelTwo;
private javax.swing.JScrollPane scrollPanelThree;
private javax.swing.JScrollPane scrollPanelFour;
private javax.swing.JScrollPane scrollPanelFive;
public static void showDialog(String text, Window parent) {
try {
RPPriceWarningDialog dialog = new RPPriceWarningDialog(text, parent);
dialog.pack();
dialog.setLocationRelativeTo(parent);
dialog.setVisible(true);
} catch (Exception exc) {
ErrorLog.get().logException("RPPriceWarningDialog Exception", exc);
}
}
private void init() {
final List<String> curstrings = Gateway.currencies();
curlist.addAll(curstrings);
_dstCurList.setModel(new javax.swing.AbstractListModel<Object>() {
private static final long serialVersionUID = 1L;
public int getSize() {
return curSelectlist.size();
}
public Object getElementAt(int i) {
String result = Currencies.name(curSelectlist.get(i));
return result != null ? result : curSelectlist.get(i);
}
});
_existCurList.setModel(new javax.swing.AbstractListModel<Object>() {
private static final long serialVersionUID = 1L;
public int getSize() {
return curlist.size();
}
public Object getElementAt(int i) {
String result = Currencies.name(curlist.get(i));
return result != null ? result : curlist.get(i);
}
});
_dstGatewayList.setModel(new javax.swing.AbstractListModel<Object>() {
/**
*
*/
private static final long serialVersionUID = 1L;
public int getSize() {
return gatewaySelectlist.size();
}
public Object getElementAt(int i) {
return gatewaySelectlist.get(i);
}
});
final ArrayList<String> gatewaystrings = Gateway.gatewayList();
gatewaylist.addAll(gatewaystrings);
_existGatewayList.setModel(new javax.swing.AbstractListModel<Object>() {
/**
*
*/
private static final long serialVersionUID = 1L;
public int getSize() {
return gatewaylist.size();
}
public Object getElementAt(int i) {
return gatewaylist.get(i);
}
});
Session session = LSystem.session("check_price");
String result = session.get("warn");
if (result != null) {
JSONArray json = new JSONArray(result);
for (int i = 0; i < json.length(); i++) {
finallist.add(json.getString(i));
}
}
_finalSetList.setModel(new javax.swing.AbstractListModel<Object>() {
private static final long serialVersionUID = 1L;
public int getSize() {
return finallist.size();
}
public Object getElementAt(int i) {
return finallist.get(i);
}
});
}
public RPPriceWarningDialog(String text, Window parent) {
super(parent, text, ModalityType.DOCUMENT_MODAL);
this.addWindowListener(HelperWindow.get());
this.setIconImage(UIRes.getIcon());
this.setResizable(false);
Dimension dim = new Dimension(665, 680);
this.setPreferredSize(dim);
this.setSize(dim);
this.initComponents();
}
private void updateData() {
if (curSelectlist.size() > 0 && gatewaySelectlist.size() > 0) {
ArrayList<String> list = new ArrayList<String>(20);
for (String gateway : gatewaySelectlist) {
for (String cur : curSelectlist) {
list.add(gateway + "/" + cur);
}
}
if (list.size() > 0) {
_gatewayAndCurComboBox.setItemModel(list.toArray());
}
}
}
private void initComponents() {
_intervalTimeLabel = new RPLabel();
scrollPanelOne = new javax.swing.JScrollPane();
_existCurList = new RPList();
_finalSetLabel = new RPLabel();
scrollPanelTwo = new javax.swing.JScrollPane();
_dstCurList = new RPList();
_moveCurButton = new RPCButton();
_moveDelCurButton = new RPCButton();
_delDataButton = new RPCButton();
scrollPanelThree = new javax.swing.JScrollPane();
_existGatewayList = new RPList();
_existGatewayLabel = new RPLabel();
_dstGatewayLabel = new RPLabel();
scrollPanelFour = new javax.swing.JScrollPane();
_dstGatewayList = new RPList();
_moveGatewayButton = new RPCButton();
_moveDelGatewayButton = new RPCButton();
_existCurLabel = new RPLabel();
_intervalTimeTexture = new RPTextBox();
_gatewayAndCurLabel = new RPLabel();
_xrpPriceText = new RPTextBox();
_gatewayAndCurComboBox = new RPComboBox();
scrollPanelFive = new javax.swing.JScrollPane();
_finalSetList = new RPList();
_dstCurLabel = new RPLabel();
_xrpPriceLabel = new RPLabel();
_saveDataButton = new RPCButton();
_addDataButton = new RPCButton();
_typeSelectComboBox = new RPComboBox();
RPLabel label1 = new RPLabel();
RPLabel label2 = new RPLabel();
getContentPane().setLayout(null);
init();
_intervalTimeLabel.setFont(UIRes.getFont()); // NOI18N
_intervalTimeLabel.setText(UIMessage.ri);
getContentPane().add(_intervalTimeLabel);
_intervalTimeLabel.setBounds(20, 530, 80, 30);
scrollPanelOne.setViewportView(_existCurList);
getContentPane().add(scrollPanelOne);
scrollPanelOne.setBounds(20, 230, 260, 140);
_finalSetLabel.setFont(UIRes.getFont()); // NOI18N
_finalSetLabel.setText(UIMessage.fs);
getContentPane().add(_finalSetLabel);
_finalSetLabel.setBounds(370, 380, 150, 30);
scrollPanelTwo.setViewportView(_dstCurList);
getContentPane().add(scrollPanelTwo);
scrollPanelTwo.setBounds(370, 230, 270, 138);
_moveCurButton.setText(">>");
_moveCurButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (_existCurList.getSelectedIndex() != -1) {
String result = (String) _existCurList.getSelectedValue();
if (!curSelectlist.contains(result)) {
curSelectlist.add(result);
Collections.sort(curSelectlist);
_dstCurList.updateUI();
curlist.remove(_existCurList.getSelectedIndex());
_existCurList.updateUI();
updateData();
}
}
}
});
getContentPane().add(_moveCurButton);
_moveCurButton.setBounds(300, 230, 50, 50);
_moveDelCurButton.setText("<<");
_moveDelCurButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (_dstCurList.getSelectedIndex() != -1) {
String result = (String) _dstCurList.getSelectedValue();
if (!curlist.contains(result)) {
curlist.add(result);
Collections.sort(curlist);
_existCurList.updateUI();
curSelectlist.remove(_dstCurList.getSelectedIndex());
_dstCurList.updateUI();
updateData();
}
}
}
});
getContentPane().add(_moveDelCurButton);
_moveDelCurButton.setBounds(300, 290, 50, 50);
scrollPanelThree.setViewportView(_existGatewayList);
getContentPane().add(scrollPanelThree);
scrollPanelThree.setBounds(20, 50, 260, 140);
_existGatewayLabel.setFont(UIRes.getFont()); // NOI18N
_existGatewayLabel.setText(LangConfig.get(this, "eg",
"Existing gateway"));
getContentPane().add(_existGatewayLabel);
_existGatewayLabel.setBounds(20, 20, 150, 30);
_dstGatewayLabel.setFont(UIRes.getFont()); // NOI18N
_dstGatewayLabel.setText(LangConfig.get(this, "tg", "Target gateway"));
getContentPane().add(_dstGatewayLabel);
_dstGatewayLabel.setBounds(370, 20, 150, 30);
scrollPanelFour.setViewportView(_dstGatewayList);
getContentPane().add(scrollPanelFour);
scrollPanelFour.setBounds(370, 50, 270, 140);
_moveGatewayButton.setText(">>");
_moveGatewayButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (_existGatewayList.getSelectedIndex() != -1) {
String result = (String) _existGatewayList
.getSelectedValue();
if (!gatewaySelectlist.contains(result)) {
gatewaySelectlist.add(result);
Collections.sort(gatewaySelectlist);
_dstGatewayList.updateUI();
gatewaylist.remove(_existGatewayList.getSelectedIndex());
_existGatewayList.updateUI();
updateData();
}
}
}
});
getContentPane().add(_moveGatewayButton);
_moveGatewayButton.setBounds(300, 50, 50, 50);
_moveDelGatewayButton.setText("<<");
_moveDelGatewayButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (_dstGatewayList.getSelectedIndex() != -1) {
String result = (String) _dstGatewayList.getSelectedValue();
if (!gatewaylist.contains(result)) {
gatewaylist.add(result);
Collections.sort(gatewaylist);
_existGatewayList.updateUI();
gatewaySelectlist.remove(_dstGatewayList
.getSelectedIndex());
_dstGatewayList.updateUI();
updateData();
}
}
}
});
getContentPane().add(_moveDelGatewayButton);
_moveDelGatewayButton.setBounds(300, 110, 50, 50);
_existCurLabel.setFont(UIRes.getFont()); // NOI18N
_existCurLabel.setText(LangConfig.get(this, "ec", "Existing currency"));
getContentPane().add(_existCurLabel);
_existCurLabel.setBounds(20, 200, 150, 30);
_intervalTimeTexture.setFont(UIRes.getFont()); // NOI18N
_intervalTimeTexture.setText(String.valueOf(LSystem.MINUTE));
getContentPane().add(_intervalTimeTexture);
_intervalTimeTexture.setBounds(110, 530, 200, 30);
_gatewayAndCurLabel.setFont(UIRes.getFont()); // NOI18N
_gatewayAndCurLabel.setText(LangConfig.get(this, "gateway", "Gateway")
+ "/" + LangConfig.get(this, "currency", "Currency"));
getContentPane().add(_gatewayAndCurLabel);
_gatewayAndCurLabel.setBounds(20, 380, 260, 30);
_xrpPriceText.setFont(UIRes.getFont()); // NOI18N
_xrpPriceText.setText("0.02");
getContentPane().add(_xrpPriceText);
_xrpPriceText.setBounds(190, 480, 120, 30);
_gatewayAndCurComboBox.setFont(UIRes.getFont()); // NOI18N
_gatewayAndCurComboBox.setItemModel(new String[] { "Empty" });
getContentPane().add(_gatewayAndCurComboBox);
_gatewayAndCurComboBox.setBounds(20, 420, 330, 30);
scrollPanelFive.setViewportView(_finalSetList);
getContentPane().add(scrollPanelFive);
scrollPanelFive.setBounds(370, 420, 270, 150);
_dstCurLabel.setFont(UIRes.getFont()); // NOI18N
_dstCurLabel.setText(LangConfig.get(this, "tc", "Target Currency"));
getContentPane().add(_dstCurLabel);
_dstCurLabel.setBounds(370, 200, 150, 30);
label2.setFont(UIRes.getFont()); // NOI18N
label2.setText("MS");
getContentPane().add(label2);
label2.setBounds(320, 530, 40, 30);
_xrpPriceLabel.setFont(UIRes.getFont()); // NOI18N
_xrpPriceLabel.setText(UIMessage.price);
getContentPane().add(_xrpPriceLabel);
_xrpPriceLabel.setBounds(20, 480, 50, 30);
label1.setFont(UIRes.getFont()); // NOI18N
label1.setText("XRP");
getContentPane().add(label1);
label1.setBounds(320, 480, 40, 30);
_saveDataButton.setText(UIMessage.save);
_saveDataButton.setFont(UIRes.getFont());
_saveDataButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (finallist.size() > 0) {
Session session = LSystem.session("check_price");
JSONArray json = new JSONArray();
for (String date : finallist) {
json.put(date);
}
session.set("warn", json.toString());
session.save();
alert(UIMessage.save);
RipplePriceMonitor.get().reset();
}
}
});
getContentPane().add(_saveDataButton);
_saveDataButton.setBounds(560, 590, 81, 40);
_addDataButton.setText(UIMessage.add);
_addDataButton.setFont(UIRes.getFont());
getContentPane().add(_addDataButton);
_addDataButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String time = _intervalTimeTexture.getText().trim();
if (time.length() <= 0 || !MathUtils.isNan(time)) {
return;
}
String value = _xrpPriceText.getText().trim();
if (value.length() <= 0 || !MathUtils.isNan(value)) {
return;
}
int idx = _gatewayAndCurComboBox.getSelectedIndex();
if (idx != -1) {
String item = (String) _gatewayAndCurComboBox
.getSelectedItem();
if (!"empty".equalsIgnoreCase(item)) {
idx = _typeSelectComboBox.getSelectedIndex();
if (idx != -1) {
String type = (String) _typeSelectComboBox
.getSelectedItem();
String result = item + " " + type + " " + value
+ "," + time;
if (!finallist.contains(result)) {
finallist.add(result);
_finalSetList.updateUI();
}
}
alert(UIMessage.add);
}
}
}
});
_addDataButton.setBounds(460, 590, 81, 40);
_delDataButton.setText(UIMessage.del);
_delDataButton.setFont(UIRes.getFont());
_delDataButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int idx = _finalSetList.getSelectedIndex();
if (idx != -1) {
finallist.remove(idx);
_finalSetList.updateUI();
alert(UIMessage.del);
}
}
});
getContentPane().add(_delDataButton);
_delDataButton.setBounds(360, 590, 81, 40);
_typeSelectComboBox.setItemModel(new String[] { ">", "<", "==", ">=",
"<=" });
getContentPane().add(_typeSelectComboBox);
_typeSelectComboBox.setBounds(110, 480, 70, 30);
getContentPane().setBackground(UIConfig.dialogbackground);
pack();
}
}