From 3ae48deee6728f85fc79113a31973bea6807c7e5 Mon Sep 17 00:00:00 2001 From: 7u83 <7u83@maiil.ru> Date: Fri, 28 Dec 2018 11:40:53 +0100 Subject: [PATCH] Gui to display accounts --- src/opensesim/gui/account/AccountDialog.form | 45 +++++++ src/opensesim/gui/account/AccountDialog.java | 129 +++++++++++++++++++ src/opensesim/gui/account/AccountPanel.form | 66 ++++++++++ src/opensesim/gui/account/AccountPanel.java | 126 ++++++++++++++++++ 4 files changed, 366 insertions(+) create mode 100644 src/opensesim/gui/account/AccountDialog.form create mode 100644 src/opensesim/gui/account/AccountDialog.java create mode 100644 src/opensesim/gui/account/AccountPanel.form create mode 100644 src/opensesim/gui/account/AccountPanel.java diff --git a/src/opensesim/gui/account/AccountDialog.form b/src/opensesim/gui/account/AccountDialog.form new file mode 100644 index 0000000..4f5a1bb --- /dev/null +++ b/src/opensesim/gui/account/AccountDialog.form @@ -0,0 +1,45 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/opensesim/gui/account/AccountDialog.java b/src/opensesim/gui/account/AccountDialog.java new file mode 100644 index 0000000..41b6454 --- /dev/null +++ b/src/opensesim/gui/account/AccountDialog.java @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2018, tube + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +package opensesim.gui.account; + +import opensesim.world.Account; + +/** + * + * @author tube + */ +public class AccountDialog extends javax.swing.JDialog { + + /** + * Creates new form AccountDialog + */ + public AccountDialog(java.awt.Frame parent, boolean modal) { + super(parent, modal); + initComponents(); + } + + + public static void runDialog(java.awt.Frame parent, Account account){ + AccountDialog d; + d=new AccountDialog(parent, false); + d.accountPanel1.account=account; + d.accountPanel1.update(); + d.setVisible(true); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + accountPanel1 = new opensesim.gui.account.AccountPanel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(accountPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 400, javax.swing.GroupLayout.PREFERRED_SIZE)) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(accountPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 228, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 72, Short.MAX_VALUE)) + ); + + pack(); + }// //GEN-END:initComponents + + /** + * @param args the command line arguments + */ + public static void main(String args[]) { + /* Set the Nimbus look and feel */ + // + /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. + * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html + */ + try { + for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { + if ("Nimbus".equals(info.getName())) { + javax.swing.UIManager.setLookAndFeel(info.getClassName()); + break; + } + } + } catch (ClassNotFoundException ex) { + java.util.logging.Logger.getLogger(AccountDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (InstantiationException ex) { + java.util.logging.Logger.getLogger(AccountDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (IllegalAccessException ex) { + java.util.logging.Logger.getLogger(AccountDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (javax.swing.UnsupportedLookAndFeelException ex) { + java.util.logging.Logger.getLogger(AccountDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } + // + + /* Create and display the dialog */ + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + AccountDialog dialog = new AccountDialog(new javax.swing.JFrame(), true); + dialog.addWindowListener(new java.awt.event.WindowAdapter() { + @Override + public void windowClosing(java.awt.event.WindowEvent e) { + System.exit(0); + } + }); + dialog.setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private opensesim.gui.account.AccountPanel accountPanel1; + // End of variables declaration//GEN-END:variables +} diff --git a/src/opensesim/gui/account/AccountPanel.form b/src/opensesim/gui/account/AccountPanel.form new file mode 100644 index 0000000..3a15ae4 --- /dev/null +++ b/src/opensesim/gui/account/AccountPanel.form @@ -0,0 +1,66 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + <Editor/> + <Renderer/> + </Column> + <Column maxWidth="-1" minWidth="-1" prefWidth="-1" resizable="true"> + <Title/> + <Editor/> + <Renderer/> + </Column> + </TableColumnModel> + </Property> + <Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor"> + <TableHeader reorderingAllowed="true" resizingAllowed="true"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + </SubComponents> +</Form> diff --git a/src/opensesim/gui/account/AccountPanel.java b/src/opensesim/gui/account/AccountPanel.java new file mode 100644 index 0000000..6adbc63 --- /dev/null +++ b/src/opensesim/gui/account/AccountPanel.java @@ -0,0 +1,126 @@ +/* + * Copyright (c) 2018, tube + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +package opensesim.gui.account; + +import java.util.Map; +import javax.swing.table.DefaultTableModel; +import opensesim.world.AbstractAsset; +import opensesim.world.Account; + +/** + * + * @author tube + */ +public class AccountPanel extends javax.swing.JPanel { + + /** + * Creates new form AccountPanel + */ + public AccountPanel() { + initComponents(); + assetTable.setAutoCreateRowSorter(true); + assetTable.getTableHeader().setReorderingAllowed(false); + } + + public Account account; + + void update() { + DefaultTableModel model; + model = (DefaultTableModel) this.assetTable.getModel(); + + Map<AbstractAsset, Double> am = account.getAssets(); + + int row = 0; + model.setRowCount(am.size()); + for (AbstractAsset a : am.keySet()) { + Double val = account.get(a); + Double avail = account.getAvail(a); + String astr = val.toString()+"/"+avail.toString(); + +// model.setValueAt(ob1.getAccount().getOwner().getName(), row, 0); + model.setValueAt(a.getSymbol(), row, 0); + model.setValueAt(astr, row, 1); + row++; + } + + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents + private void initComponents() { + + jScrollPane1 = new javax.swing.JScrollPane(); + assetTable = new javax.swing.JTable(); + + assetTable.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + {null, null}, + {null, null} + }, + new String [] { + "Asset", "Ammount" + } + ) { + Class[] types = new Class [] { + java.lang.String.class, java.lang.String.class + }; + boolean[] canEdit = new boolean [] { + false, false + }; + + public Class getColumnClass(int columnIndex) { + return types [columnIndex]; + } + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit [columnIndex]; + } + }); + jScrollPane1.setViewportView(assetTable); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE) + ); + }// </editor-fold>//GEN-END:initComponents + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JTable assetTable; + private javax.swing.JScrollPane jScrollPane1; + // End of variables declaration//GEN-END:variables +}