diff --git a/src/eu/engys/gui/casesetup/reactions/ReactionsPanel.java b/src/eu/engys/gui/casesetup/reactions/ReactionsPanel.java new file mode 100644 index 0000000..0612736 --- /dev/null +++ b/src/eu/engys/gui/casesetup/reactions/ReactionsPanel.java @@ -0,0 +1,92 @@ +/******************************************************************************* + * | o | + * | o o | HELYX-OS: The Open Source GUI for OpenFOAM | + * | o O o | Copyright (C) 2012-2016 ENGYS | + * | o o | http://www.engys.com | + * | o | | + * |---------------------------------------------------------------------------| + * | License | + * | This file is part of HELYX-OS. | + * | | + * | HELYX-OS is free software; you can redistribute it and/or modify it | + * | under the terms of the GNU General Public License as published by the | + * | Free Software Foundation; either version 2 of the License, or (at your | + * | option) any later version. | + * | | + * | HELYX-OS is distributed in the hope that it will be useful, but WITHOUT | + * | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | + * | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | + * | for more details. | + * | | + * | You should have received a copy of the GNU General Public License | + * | along with HELYX-OS; if not, write to the Free Software Foundation, | + * | Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | + *******************************************************************************/ +package eu.engys.gui.casesetup.reactions; + +import javax.swing.JComponent; + +import eu.engys.core.project.Model; +import eu.engys.gui.DefaultGUIPanel; +import eu.engys.util.ui.ExecUtil; +import eu.engys.util.ui.builder.PanelBuilder; + +public class ReactionsPanel extends DefaultGUIPanel { + + public static final String REACTIONS = "Reactions"; + + private ReactionsView reactionsView; + + public ReactionsPanel(Model model, ReactionsView reactionsView) { + super(REACTIONS, model); + this.reactionsView = reactionsView; + } + + @Override + public String getKey() { + return REACTIONS + "_" + reactionsView.getClass().getCanonicalName(); + } + + @Override + public void load() { + reactionsView.load(model); + } + + @Override + public void save() { + reactionsView.save(model); + } + + @Override + public void stateChanged() { + rebuildPanel(); + } + + @Override + public void materialsChanged() { + rebuildPanel(); + } + + private void rebuildPanel() { + ExecUtil.invokeLater(new Runnable() { + @Override + public void run() { + removeAll(); + layoutPanel(); + load(); + } + }); + } + + @Override + protected JComponent layoutComponents() { + PanelBuilder builder = new PanelBuilder(); + reactionsView.layoutComponents(builder); + return builder.removeMargins().getPanel(); + } + + @Override + public int getIndex() { + return 2; + } +} diff --git a/src/eu/engys/gui/casesetup/reactions/ReactionsView.java b/src/eu/engys/gui/casesetup/reactions/ReactionsView.java new file mode 100644 index 0000000..0644081 --- /dev/null +++ b/src/eu/engys/gui/casesetup/reactions/ReactionsView.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * | o | + * | o o | HELYX-OS: The Open Source GUI for OpenFOAM | + * | o O o | Copyright (C) 2012-2016 ENGYS | + * | o o | http://www.engys.com | + * | o | | + * |---------------------------------------------------------------------------| + * | License | + * | This file is part of HELYX-OS. | + * | | + * | HELYX-OS is free software; you can redistribute it and/or modify it | + * | under the terms of the GNU General Public License as published by the | + * | Free Software Foundation; either version 2 of the License, or (at your | + * | option) any later version. | + * | | + * | HELYX-OS is distributed in the hope that it will be useful, but WITHOUT | + * | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | + * | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | + * | for more details. | + * | | + * | You should have received a copy of the GNU General Public License | + * | along with HELYX-OS; if not, write to the Free Software Foundation, | + * | Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | + *******************************************************************************/ +package eu.engys.gui.casesetup.reactions; + +import eu.engys.core.project.Model; +import eu.engys.util.ui.builder.PanelBuilder; + +public interface ReactionsView { + + void layoutComponents(PanelBuilder parametersBuilder); + + void load(Model model); + + void save(Model model); + +}