diff --git a/nbproject/project.properties b/nbproject/project.properties index d3aa394..c053fe2 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -1,4 +1,4 @@ -#Sat, 01 Dec 2018 03:21:26 +0100 +#Sat, 01 Dec 2018 03:52:02 +0100 annotation.processing.enabled=true annotation.processing.enabled.in.editor=false annotation.processing.processors.list= diff --git a/src/opensesim/gui/AssetEditor/AssetEditorDialog.java b/src/opensesim/gui/AssetEditor/AssetEditorDialog.java index 831753d..bedbf89 100644 --- a/src/opensesim/gui/AssetEditor/AssetEditorDialog.java +++ b/src/opensesim/gui/AssetEditor/AssetEditorDialog.java @@ -201,6 +201,14 @@ public class AssetEditorDialog extends EscDialog { AssetEditorDialog d = new AssetEditorDialog(parent); + Json.put(d.assetEditorPanel, o); + d.setVisible(true); + d.dispose(); + + + + + d.assetEditorPanel.symField.setText("Hallo"); //d.assetEditorPanel.symField.setText("Herr"); JSONObject jo = Json.get(d.assetEditorPanel); diff --git a/src/opensesim/gui/AssetEditor/AssetEditorPanel.form b/src/opensesim/gui/AssetEditor/AssetEditorPanel.form index adfd875..d685c9c 100644 --- a/src/opensesim/gui/AssetEditor/AssetEditorPanel.form +++ b/src/opensesim/gui/AssetEditor/AssetEditorPanel.form @@ -105,7 +105,7 @@ - + @@ -116,7 +116,8 @@ - + + diff --git a/src/opensesim/gui/AssetEditor/AssetEditorPanel.java b/src/opensesim/gui/AssetEditor/AssetEditorPanel.java index 8885e08..3f148c7 100644 --- a/src/opensesim/gui/AssetEditor/AssetEditorPanel.java +++ b/src/opensesim/gui/AssetEditor/AssetEditorPanel.java @@ -43,6 +43,7 @@ import opensesim.AbstractAsset; import opensesim.gui.Globals; import opensesim.gui.util.JTextFieldLimit; import opensesim.gui.util.Json.Export; +import opensesim.gui.util.Json.Import; /** * @@ -328,8 +329,11 @@ public class AssetEditorPanel extends javax.swing.JPanel { private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel label; - protected opensesim.gui.util.JTextFieldLimit nameField; - @Export + @Import("name") + @Export("name") + public opensesim.gui.util.JTextFieldLimit nameField; + @Export("symbol") + @Import("symbol") public opensesim.gui.util.JTextFieldLimit symField; // End of variables declaration//GEN-END:variables } diff --git a/src/opensesim/gui/AssetEditor/AssetListDialog.form b/src/opensesim/gui/AssetEditor/AssetListDialog.form index 0e29690..2efcec2 100644 --- a/src/opensesim/gui/AssetEditor/AssetListDialog.form +++ b/src/opensesim/gui/AssetEditor/AssetListDialog.form @@ -39,7 +39,7 @@ - + @@ -50,7 +50,7 @@ - + @@ -94,7 +94,7 @@ - + diff --git a/src/opensesim/gui/AssetEditor/AssetListDialog.java b/src/opensesim/gui/AssetEditor/AssetListDialog.java index c217fc1..d294855 100644 --- a/src/opensesim/gui/AssetEditor/AssetListDialog.java +++ b/src/opensesim/gui/AssetEditor/AssetListDialog.java @@ -28,11 +28,14 @@ package opensesim.gui.AssetEditor; import com.sun.rowset.internal.Row; import java.awt.Frame; import java.awt.Window; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; import javax.swing.JFrame; import javax.swing.SwingUtilities; import opensesim.gui.EscDialog; import opensesim.sesim.Assets.BasicAsset; import opensesim.util.IDGenerator.Id; +import org.json.JSONObject; /** * @@ -40,12 +43,29 @@ import opensesim.util.IDGenerator.Id; */ public class AssetListDialog extends EscDialog { + String getMyName(){ + return "Miau!"; + } + /** * Creates new form EditAssetsDialog */ public AssetListDialog(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); + + java.awt.event.MouseAdapter l = new java.awt.event.MouseAdapter() { + + @Override + public void mouseClicked(MouseEvent e) { + if (e.getClickCount() == 2) { + doEdit(); + } + + } + }; + + this.assetListPanel.assetTable.addMouseListener(l); } /** @@ -61,7 +81,7 @@ public class AssetListDialog extends EscDialog { newButton = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); editButton = new javax.swing.JButton(); - assetListPanel1 = new opensesim.gui.AssetEditor.AssetListPanel(); + assetListPanel = new opensesim.gui.AssetEditor.AssetListPanel(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Edit Assets"); @@ -108,14 +128,14 @@ public class AssetListDialog extends EscDialog { .addComponent(jButton1)) .addGroup(layout.createSequentialGroup() .addContainerGap() - .addComponent(assetListPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addComponent(assetListPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() - .addComponent(assetListPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 282, Short.MAX_VALUE) + .addComponent(assetListPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 282, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(newButton) @@ -130,15 +150,15 @@ public class AssetListDialog extends EscDialog { private void newButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newButtonActionPerformed - AssetEditorDialog.runDialog(this, null); - this.assetListPanel1.reload(); + //AssetEditorDialog.runDialog(this, null); + this.assetListPanel.reload(); /* javax.swing.JOptionPane.showMessageDialog(this, "Hello", "Error", javax.swing.JOptionPane.ERROR_MESSAGE);*/ /* Id id = AssteEditorDialog.runDialog(this, null); if (id != null) { assetList1.addAsset(id); } - */ this.repaint(); + */ this.repaint(); // JFrame frame = (JFrame) SwingUtilities.getWindowAncestor(this); /* @@ -179,9 +199,16 @@ public class AssetListDialog extends EscDialog { dispose(); }//GEN-LAST:event_jButton1ActionPerformed + private void doEdit() { + JSONObject o = assetListPanel.getSelectedObject(); + System.out.printf("JON: %s",o.toString(4)); + AssetEditorDialog.runDialog(this, o); + } + private void editButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editButtonActionPerformed -// int row = assetList1.assetList.getSelectedRow(); + doEdit(); + // Id selId = (Id)assetList1.assetList.getValueAt(row, 0); /* BasicAsset a = BasicAsset.getAsset(selId); @@ -191,7 +218,7 @@ public class AssetListDialog extends EscDialog { } this.assetList1.reload(); this.repaint(); - */ + */ }//GEN-LAST:event_editButtonActionPerformed /** @@ -238,7 +265,7 @@ public class AssetListDialog extends EscDialog { } // Variables declaration - do not modify//GEN-BEGIN:variables - private opensesim.gui.AssetEditor.AssetListPanel assetListPanel1; + private opensesim.gui.AssetEditor.AssetListPanel assetListPanel; private javax.swing.JButton editButton; private javax.swing.JButton jButton1; private javax.swing.JButton jButton3; diff --git a/src/opensesim/gui/AssetEditor/AssetListPanel.form b/src/opensesim/gui/AssetEditor/AssetListPanel.form index 0235079..b487b70 100644 --- a/src/opensesim/gui/AssetEditor/AssetListPanel.form +++ b/src/opensesim/gui/AssetEditor/AssetListPanel.form @@ -39,7 +39,7 @@ - + diff --git a/src/opensesim/gui/AssetEditor/AssetListPanel.java b/src/opensesim/gui/AssetEditor/AssetListPanel.java index f02d23f..3734b82 100644 --- a/src/opensesim/gui/AssetEditor/AssetListPanel.java +++ b/src/opensesim/gui/AssetEditor/AssetListPanel.java @@ -25,49 +25,52 @@ */ package opensesim.gui.AssetEditor; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import java.util.AbstractMap; -import java.util.Collection; -import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; -import opensesim.AbstractAsset; -import opensesim.sesim.Assets.BasicAsset; import opensesim.World; import opensesim.gui.Globals; -import opensesim.util.IDGenerator.Id; -import opensesim.util.SeSimObjectMapper; +import org.json.JSONObject; /** * * @author 7u83 <7u83@mail.ru> */ -public class AssetListPanel extends javax.swing.JPanel { +public class AssetListPanel extends javax.swing.JPanel implements GuiSelectionList{ World world; + JSONObject json_set; + /** * Creates new form AssetList */ public AssetListPanel() { world = Globals.world; initComponents(); + + if (Globals.prefs == null) { + return; + } + + json_set = new JSONObject(Globals.prefs.get("myassets", "{EUR:{name:Euro,decimals:8}}")); reload(); - assetList.setRowSelectionAllowed(true); - assetList.getColumnModel().getColumn(0).setPreferredWidth(10); - assetList.getColumnModel().getColumn(1).setPreferredWidth(30); - assetList.getColumnModel().getColumn(2).setPreferredWidth(300); - assetList.getColumnModel().getColumn(3).setPreferredWidth(30); + assetTable.setRowSelectionAllowed(true); + assetTable.getColumnModel().getColumn(0).setPreferredWidth(10); + assetTable.getColumnModel().getColumn(1).setPreferredWidth(30); + assetTable.getColumnModel().getColumn(2).setPreferredWidth(300); + assetTable.getColumnModel().getColumn(3).setPreferredWidth(30); + } + + @Override + public JSONObject getSelectedObject() { + int row = assetTable.getSelectedRow(); + String symbol = (String) assetTable.getValueAt(row, 1); + return json_set.getJSONObject(symbol); } final void reload() { - DefaultTableModel m = (DefaultTableModel) assetList.getModel(); + DefaultTableModel m = (DefaultTableModel) assetTable.getModel(); /* m.setRowCount(0); Map assets = BasicAsset.getAssets(); for (Object key : assets.keySet()) { @@ -80,18 +83,32 @@ public class AssetListPanel extends javax.swing.JPanel { } m.setRowCount(0); - for (AbstractAsset a : world.getAssetCollection()) { + /* for (AbstractAsset a : world.getAssetCollection()) { m.addRow(new Object[]{ a.getID(), a.getSymbol(), a.getName(), a.getTypeName() }); - + } + */ + m.setRowCount(0); + for (String symbol : json_set.keySet()) { + JSONObject o = json_set.optJSONObject(symbol); + if (o == null) { + continue; + } + + m.addRow(new Object[]{ + o.opt("id"), + symbol, + o.opt("name") + }); + } - Collection ac; - ObjectMapper om = new ObjectMapper(); + /* Collection ac; + ObjectMapper om = new ObjectMapper(); om.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); try { String s = om.writeValueAsString(world.getAssetCollection()); @@ -99,8 +116,7 @@ public class AssetListPanel extends javax.swing.JPanel { } catch (JsonProcessingException ex) { Logger.getLogger(AssetListPanel.class.getName()).log(Level.SEVERE, null, ex); } - - + */ } private TableModel getModel() { @@ -122,8 +138,8 @@ public class AssetListPanel extends javax.swing.JPanel { new Object[]{"ID", "Symbol", "Name", "Type"}, 0 ); - assetList.setAutoCreateRowSorter(true); - assetList.getTableHeader().setReorderingAllowed(false); + assetTable.setAutoCreateRowSorter(true); + assetTable.getTableHeader().setReorderingAllowed(false); return model; } @@ -131,7 +147,7 @@ public class AssetListPanel extends javax.swing.JPanel { public void uppdate() { DefaultTableModel m; - m = (DefaultTableModel) this.assetList.getModel(); + m = (DefaultTableModel) this.assetTable.getModel(); m.fireTableDataChanged(); } @@ -156,11 +172,11 @@ public class AssetListPanel extends javax.swing.JPanel { private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); - assetList = new javax.swing.JTable(); + assetTable = new javax.swing.JTable(); - assetList.setModel(getModel()); - assetList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); - jScrollPane1.setViewportView(assetList); + assetTable.setModel(getModel()); + assetTable.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jScrollPane1.setViewportView(assetTable); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); @@ -180,7 +196,7 @@ public class AssetListPanel extends javax.swing.JPanel { // Variables declaration - do not modify//GEN-BEGIN:variables - public javax.swing.JTable assetList; + public javax.swing.JTable assetTable; private javax.swing.JScrollPane jScrollPane1; // End of variables declaration//GEN-END:variables } diff --git a/src/opensesim/gui/util/Json.java b/src/opensesim/gui/util/Json.java index 49845c0..b17781c 100644 --- a/src/opensesim/gui/util/Json.java +++ b/src/opensesim/gui/util/Json.java @@ -54,35 +54,66 @@ public class Json { public String value() default ""; } - - - + + /** + * Get fields from JSON Object + * + * @param o Object to get fields from + * @return the created JSONObject + */ public static JSONObject get(Object o) { Field[] fields = o.getClass().getFields(); JSONObject jo = new JSONObject(); - + for (Field f : fields) { - System.out.printf("CHECKFIELD %s\n", f.getName()); - Export ex = f.getAnnotation(Export.class); - if (ex == null) { + Export exp = f.getAnnotation(Export.class); + if (exp == null) { continue; } - + Class cls = f.getType(); - if (JTextField.class.isAssignableFrom(cls)){ + if (JTextField.class.isAssignableFrom(cls)) { try { JTextField tf = (JTextField) f.get(o); - jo.put(f.getName(), tf.getText()); + String name = null == exp.value() ? f.getName() : exp.value(); + jo.put(name, tf.getText()); } catch (IllegalArgumentException | IllegalAccessException ex1) { Logger.getLogger(Json.class.getName()).log(Level.SEVERE, null, ex1); } } - - System.out.printf("EX: %s\n", ex.getClass().getName()); } - return jo; } + + /** + * Inverse to get + * @param o Object + * @param jo JSONObject + */ + public static void put(Object o, JSONObject jo) { + Field[] fields = o.getClass().getFields(); + for (Field f : fields) { + + System.out.printf("ANNOT: %s\n",f.getName()); + + Import imp = f.getAnnotation(Import.class); + if (imp == null) { + continue; + } + Class cls = f.getType(); + if (JTextField.class.isAssignableFrom(cls)) { + try { + JTextField tf = (JTextField) f.get(o); + String name = null == imp.value() ? f.getName() : imp.value(); + tf.setText(jo.optString(name)); + } catch (IllegalArgumentException | IllegalAccessException ex1) { + Logger.getLogger(Json.class.getName()).log(Level.SEVERE, null, ex1); + } + } + + } + } + }