Skip to content

Commit 144a4aa

Browse files
committed
85% finished
1 parent 845bebb commit 144a4aa

9 files changed

Lines changed: 133 additions & 83 deletions

src/simulator/view/BodiesTableModel.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
import simulator.model.SimulatorObserver;
1313

1414
class BodiesTableModel extends AbstractTableModel implements SimulatorObserver {
15+
16+
private static final long serialVersionUID = 1L;
17+
1518
String[] _header = { "Id", "gId", "Mass", "Velocity", "Position", "Force" };
1619
List<Body> _bodies;
1720

@@ -20,7 +23,7 @@ class BodiesTableModel extends AbstractTableModel implements SimulatorObserver {
2023
ctrl.addObserver(this);
2124
}
2225

23-
// TODO el resto de métodos van aquí…
26+
// el resto de métodos van aquí…
2427
@Override
2528
public int getRowCount() {
2629
return _bodies.size();

src/simulator/view/ControlPanel.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@
2525
import simulator.model.SimulatorObserver;
2626

2727
class ControlPanel extends JPanel implements SimulatorObserver {
28+
29+
private static final long serialVersionUID = 1L;
30+
2831
private Controller _ctrl;
2932
private JToolBar _toolaBar;
3033
private JFileChooser _fc;
@@ -38,8 +41,8 @@ class ControlPanel extends JPanel implements SimulatorObserver {
3841
private JSpinner _stepsEnter;
3942
private JTextField _deltaTimeEnter;
4043
private ForceLawsDialog _forceLawsDialog;
41-
42-
// TODO añade más atributos aquí …
44+
45+
// añade más atributos aquí …
4346
ControlPanel(Controller ctrl) {
4447
_ctrl = ctrl;
4548
initGUI();
@@ -156,7 +159,7 @@ private void initGUI() {
156159
_fc.setMultiSelectionEnabled(false);
157160
}
158161

159-
// TODO el resto de métodos van aquí…
162+
// el resto de métodos van aquí…
160163
private void run_sim(int n) {
161164
if (n > 0 && !_stopped) {
162165
try {
@@ -175,8 +178,6 @@ private void run_sim(int n) {
175178
}
176179
SwingUtilities.invokeLater(() -> run_sim(n - 1));
177180
} else {
178-
Utils.showErrorMsg("Finished.");
179-
180181
_quitButton.setEnabled(true);
181182
_fileButton.setEnabled(true);
182183
_forceLawsButton.setEnabled(true);

src/simulator/view/ForceLawsDialog.java

Lines changed: 50 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,27 @@
2222
import javax.swing.table.DefaultTableModel;
2323
import javax.swing.table.TableCellRenderer;
2424
import javax.swing.table.TableColumn;
25-
2625
import org.json.JSONObject;
2726
import simulator.control.Controller;
2827
import simulator.model.BodiesGroup;
2928
import simulator.model.Body;
3029
import simulator.model.SimulatorObserver;
3130

3231
class ForceLawsDialog extends JDialog implements SimulatorObserver {
32+
33+
private static final long serialVersionUID = 1L;
34+
3335
private DefaultComboBoxModel<String> _lawsModel;
3436
private DefaultComboBoxModel<String> _groupsModel;
3537
private DefaultTableModel _dataTableModel;
3638
private Controller _ctrl;
3739
private List<JSONObject> _forceLawsInfo;
3840
private String[] _headers = { "Key", "Value", "Description" };
3941

40-
// TODO en caso de ser necesario, añadir los atributos aquí…
42+
// en caso de ser necesario, añadir los atributos aquí…
4143
int _status = 0;
44+
int _selectedLawsIndex = 0;
45+
int _selectedGroupsIndex = 0;
4246
private JFrame _parent;
4347
private JComboBox<String> _lawscomb;
4448
private JComboBox<String> _groupscomb;
@@ -70,11 +74,16 @@ private void initGUI() {
7074
mainPanel.add(Box.createRigidArea(new Dimension(0, 20)));
7175

7276
_dataTableModel = new DefaultTableModel() {
77+
78+
private static final long serialVersionUID = 1L;
79+
7380
@Override
7481
public boolean isCellEditable(int row, int column) {
7582
return column == 1;
7683
}
7784
};
85+
_dataTableModel.setColumnIdentifiers(_headers);
86+
updateTableModel(0);
7887
JTable dataTable = new JTable(_dataTableModel) {
7988
private static final long serialVersionUID = 1L;
8089

@@ -100,15 +109,14 @@ public Component prepareRenderer(TableCellRenderer renderer, int row, int column
100109
comboBoxPanel.setAlignmentX(CENTER_ALIGNMENT);
101110
mainPanel.add(comboBoxPanel);
102111

103-
_dataTableModel.setColumnIdentifiers(_headers);
104112
_lawsModel = new DefaultComboBoxModel<>();
113+
_lawscomb = new JComboBox<>(_lawsModel);
105114
_forceLawsInfo.forEach(fl -> {
106-
if (!fl.has("desc"))
107-
throw new IllegalArgumentException();
108-
109-
_lawsModel.addElement(fl.getString("desc"));
115+
_lawscomb.addItem(fl.getString("desc"));
116+
});
117+
_lawscomb.addActionListener((e) -> {
118+
updateTableModel(_lawscomb.getSelectedIndex());
110119
});
111-
_lawscomb = new JComboBox<>(_lawsModel);
112120
comboBoxPanel.add(_lawscomb);
113121

114122
_groupsModel = new DefaultComboBoxModel<>();
@@ -138,8 +146,23 @@ public void actionPerformed(ActionEvent e) {
138146

139147
@Override
140148
public void actionPerformed(ActionEvent e) {
141-
_status = 1;
142-
ForceLawsDialog.this.setVisible(false);
149+
try {
150+
JSONObject aux = new JSONObject();
151+
for (int i = 0; i < _dataTableModel.getRowCount(); i++) {
152+
// TODO
153+
aux.put((String) _dataTableModel.getValueAt(i, 0), (String) _dataTableModel.getValueAt(i, 1));
154+
}
155+
156+
JSONObject jo = new JSONObject();
157+
jo.put("data", aux);
158+
jo.put("type", _forceLawsInfo.get(_selectedLawsIndex).getString("type"));
159+
160+
_ctrl.setForcesLaws((String) _groupscomb.getSelectedItem(), jo);
161+
_status = 1;
162+
ForceLawsDialog.this.setVisible(false);
163+
} catch (Exception ex) {
164+
Utils.showErrorMsg(ex.getMessage());
165+
}
143166
}
144167
});
145168
buttonPanel.add(okButton);
@@ -161,24 +184,37 @@ public int open() {
161184
return _status;
162185
}
163186

164-
// TODO el resto de métodos van aquí…
187+
// el resto de métodos van aquí…
188+
private void updateTableModel(int _dataIdx) {
189+
this._selectedLawsIndex = _dataIdx;
190+
JSONObject data = _forceLawsInfo.get(_dataIdx).getJSONObject("data");
191+
_dataTableModel.setNumRows(data.length());
192+
193+
int i = 0;
194+
for (String key : data.keySet()) {
195+
_dataTableModel.setValueAt(key, i, 0);
196+
_dataTableModel.setValueAt(data.getString(key), i, 2);
197+
i++;
198+
}
199+
}
200+
165201
@Override
166202
public void onAdvance(Map<String, BodiesGroup> groups, double time) {
167203
}
168204

169205
@Override
170206
public void onReset(Map<String, BodiesGroup> groups, double time, double dt) {
171-
_groupsModel.removeAllElements();
207+
_groupscomb.removeAllItems();
172208
}
173209

174210
@Override
175211
public void onRegister(Map<String, BodiesGroup> groups, double time, double dt) {
176-
groups.values().forEach(bg -> _groupsModel.addElement(bg.getId()));
212+
groups.values().forEach(bg -> _groupscomb.addItem(bg.getId()));
177213
}
178214

179215
@Override
180216
public void onGroupAdded(Map<String, BodiesGroup> groups, BodiesGroup g) {
181-
_groupsModel.addElement(g.getId());
217+
_groupscomb.addItem(g.getId());
182218
}
183219

184220
@Override

src/simulator/view/GroupsTableModel.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
import simulator.model.SimulatorObserver;
1313

1414
class GroupsTableModel extends AbstractTableModel implements SimulatorObserver {
15+
16+
private static final long serialVersionUID = 1L;
17+
1518
String[] _header = { "Id", "Force Laws", "Bodies" };
1619
List<BodiesGroup> _groups;
1720

@@ -20,7 +23,7 @@ class GroupsTableModel extends AbstractTableModel implements SimulatorObserver {
2023
ctrl.addObserver(this);
2124
}
2225

23-
// TODO el resto de métodos van aquí …
26+
// el resto de métodos van aquí …
2427
@Override
2528
public int getRowCount() {
2629
return _groups.size();
@@ -89,6 +92,6 @@ public void onDeltaTimeChanged(double dt) {
8992
@Override
9093
public void onForceLawsChanged(BodiesGroup g) {
9194
// TODO Auto-generated method stub
92-
95+
fireTableStructureChanged();
9396
}
9497
}

src/simulator/view/InfoTable.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
11
package simulator.view;
22

33
import java.awt.BorderLayout;
4-
import java.util.*;
5-
64
import javax.swing.BorderFactory;
75
import javax.swing.JPanel;
86
import javax.swing.JScrollPane;
97
import javax.swing.JTable;
108
import javax.swing.table.*;
119

12-
import simulator.control.Controller;
13-
import simulator.model.*;
14-
1510
public class InfoTable extends JPanel {
11+
12+
private static final long serialVersionUID = 1L;
13+
1614
String _title;
1715
TableModel _tableModel;
1816

src/simulator/view/MainWindow.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,13 @@
33
import java.awt.*;
44
import java.awt.event.WindowEvent;
55
import java.awt.event.WindowListener;
6-
import java.io.File;
7-
import java.io.FileInputStream;
8-
import java.util.*;
9-
import java.util.List;
106
import javax.swing.*;
11-
import javax.swing.table.*;
127
import simulator.control.Controller;
13-
import simulator.model.*;
14-
import org.json.JSONObject;
158

169
public class MainWindow extends JFrame {
10+
11+
private static final long serialVersionUID = 1L;
12+
1713
private Controller _ctrl;
1814

1915
public MainWindow(Controller ctrl) {

src/simulator/view/StatusBar.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@
1515
import simulator.model.SimulatorObserver;
1616

1717
class StatusBar extends JPanel implements SimulatorObserver {
18-
// TODO Añadir los atributos necesarios, si hace falta …
18+
19+
private static final long serialVersionUID = 1L;
20+
21+
// Añadir los atributos necesarios, si hace falta …
1922
double _time = 0;
2023
int _groups = 0;
2124
JLabel _timeLabel;
@@ -36,14 +39,14 @@ private void initGUI() {
3639
s.setPreferredSize(new Dimension(10, 20));
3740
this.add(s);
3841

39-
_groupsLabel=new JLabel("Groups: " + _groups);
42+
_groupsLabel = new JLabel("Groups: " + _groups);
4043
this.add(_groupsLabel);
4144
JSeparator s2 = new JSeparator(JSeparator.VERTICAL);
4245
s2.setPreferredSize(new Dimension(10, 20));
4346
this.add(s2);
4447
}
4548

46-
// TODO el resto de métodos van aquí…
49+
// el resto de métodos van aquí…
4750
@Override
4851
public void onAdvance(Map<String, BodiesGroup> groups, double time) {
4952
_time = time;
@@ -52,14 +55,14 @@ public void onAdvance(Map<String, BodiesGroup> groups, double time) {
5255

5356
@Override
5457
public void onReset(Map<String, BodiesGroup> groups, double time, double dt) {
55-
// TODO Auto-generated method stub
56-
58+
_time = 0;
59+
_groups = 0;
5760
}
5861

5962
@Override
6063
public void onRegister(Map<String, BodiesGroup> groups, double time, double dt) {
61-
// TODO Auto-generated method stub
62-
64+
_time = 0;
65+
_groups = 0;
6366
}
6467

6568
@Override

0 commit comments

Comments
 (0)