import javax.swing.*;
import java.awt.*;
import java.util.HashMap;
import java.util.Map;
public class SwingPresenter {
private Main main;
private JPanel mainPanel;
protected Map<String, Component> components = new HashMap<>();
public SwingPresenter(Main main, JPanel mainPanel) {
this.main = main;
this.mainPanel = mainPanel;
}
public void screenUpdate(Map<String, Object> value) {
mainPanel.removeAll();
Map<String, Object> widgets = (Map<String, Object>) value.get("widgets");
boolean layout = (boolean) value.get("layout");
if (layout) {
mainPanel.setLayout(new FlowLayout());
for (String key : widgets.keySet()) {
String type = (String) ((Map<String, Object>) widgets.get(key)).get("type");
String text = (String) ((Map<String, Object>) widgets.get(key)).get("text");
boolean visible = (boolean) ((Map<String, Object>) widgets.get(key)).get("visible");
int state = (int) ((Map<String, Object>) widgets.get(key)).get("state");
if (type.equals("textInput")) {
JTextField textField = new JTextField(10);
mainPanel.add(textField);
components.put(key, textField);
} else if (type.equals("label")) {
JLabel label = new JLabel(text);
mainPanel.add(label);
components.put(key, label);
} else if (type.equals("button")) {
JButton button = new JButton(text);
button.setSize(100, 20);
mainPanel.add(button);
components.put(key, button);
} else if (type.equals("table")) {
}
}
} else {
mainPanel.setLayout(null);
for (String key : widgets.keySet()) {
String type = (String) ((Map<String, Object>) widgets.get(key)).get("type");
int y = (int) ((Map<String, Object>) widgets.get(key)).get("y");
int x = (int) ((Map<String, Object>) widgets.get(key)).get("x");
int height = (int) ((Map<String, Object>) widgets.get(key)).get("height");
String text = (String) ((Map<String, Object>) widgets.get(key)).get("text");
boolean visible = (boolean) ((Map<String, Object>) widgets.get(key)).get("visible");
int width = (int) ((Map<String, Object>) widgets.get(key)).get("width");
int state = (int) ((Map<String, Object>) widgets.get(key)).get("state");
if (type.equals("textInput")) {
JTextField textField = new JTextField(10);
textField.setLocation(x, y);
textField.setSize(width, height);
mainPanel.add(textField);
components.put(key, textField);
} else if (type.equals("label")) {
JLabel label = new JLabel(text);
label.setLocation(x, y);
label.setSize(width, height);
mainPanel.add(label);
components.put(key, label);
} else if (type.equals("button")) {
JButton button = new JButton(text);
button.setLocation(x, y);
button.setSize(width, height);
} else if (type.equals("table")) {
}
}
}
mainPanel.invalidate();
mainPanel.validate();
mainPanel.repaint();
}
}