diff --git a/src/Screen.java b/src/Screen.java index 779c6b4..4930515 100644 --- a/src/Screen.java +++ b/src/Screen.java @@ -41,7 +41,7 @@ widgets.setCurScreen(curScreen); } public void updateFromCurScreen(String curScreen, Map value) { + presenter.screenUpdate(getValue(), value); setValue(value); - presenter.screenUpdate(value); } } \ No newline at end of file diff --git a/src/SwingPresenter.java b/src/SwingPresenter.java index 7bc8d3a..c4bfa7b 100644 --- a/src/SwingPresenter.java +++ b/src/SwingPresenter.java @@ -9,21 +9,20 @@ private Main main; private JPanel mainPanel; private Map components = new HashMap<>(); - private String screenId; public SwingPresenter(Main main, JPanel mainPanel) { this.main = main; this.mainPanel = mainPanel; } - public void screenUpdate(Map value) { + public void screenUpdate(Map prevValue, Map value) { Map widgets = (Map) value.get("widgets"); boolean layout = (boolean) value.get("layout"); + String prevScreenId = (String) prevValue.get("screenId"); String screenId = (String) value.get("screenId"); - if (this.screenId != null && this.screenId.equals(screenId)) { + if (screenId.equals(prevScreenId)) { return; } - this.screenId = screenId; mainPanel.removeAll(); if (layout) { mainPanel.setLayout(new FlowLayout());