diff --git a/src/eu/engys/combustion/CombustionModule.java b/src/eu/engys/combustion/CombustionModule.java index 045de52..8a03cce 100644 --- a/src/eu/engys/combustion/CombustionModule.java +++ b/src/eu/engys/combustion/CombustionModule.java @@ -29,6 +29,9 @@ import java.util.Set; import javax.inject.Inject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import eu.engys.core.dictionary.Dictionary; import eu.engys.core.dictionary.FieldElement; import eu.engys.core.modules.ApplicationModuleAdapter; @@ -39,13 +42,13 @@ import eu.engys.core.modules.solutionmodelling.SolutionView; import eu.engys.core.modules.tree.TreeView; import eu.engys.core.project.Model; import eu.engys.core.project.defaults.DefaultsProvider; -import eu.engys.core.project.state.MultiphaseModel; import eu.engys.core.project.state.Solver; import eu.engys.core.project.state.State; import eu.engys.core.project.state.StateBuilder; import eu.engys.core.project.zero.fields.Fields; import eu.engys.core.project.zero.fields.FieldsDefaults; import eu.engys.gui.casesetup.phases.PhasesPanel; +import eu.engys.gui.casesetup.reactions.ReactionsPanel; public class CombustionModule extends ApplicationModuleAdapter { @@ -59,6 +62,7 @@ public class CombustionModule extends ApplicationModuleAdapter { private CombustionSolutionView solutionView; private CombustionBoundaryConditionsView boundaryConditionsView; + private ReactionsPanel reactionsPanel; private TreeView treeView; private double sigma; @@ -74,7 +78,8 @@ public class CombustionModule extends ApplicationModuleAdapter { this.solutionView = new CombustionSolutionView(this); this.boundaryConditionsView = new CombustionBoundaryConditionsView(this); - this.treeView = new CombustionTreeView(this, null); + this.reactionsPanel = new ReactionsPanel(model, new CombustionReactionsView(this, model)); + this.treeView = new CombustionTreeView(this, reactionsPanel); this.reader = new CombustionReader(model, this); @@ -162,8 +167,19 @@ public class CombustionModule extends ApplicationModuleAdapter { return boundaryConditionsView; } + public void setReacting(boolean reacting) { + Logger logger = LoggerFactory.getLogger(CombustionReactionsView.class); + + logger.debug("setting reacting on"); + + if (model != null && model.getState() != null) { + logger.debug("setting reacting done"); + model.getState().setReacting(reacting); + } + } + public boolean isReacting() { - return false; + return model.getState().isReacting(); } public void setSigma(double sigma) { diff --git a/src/eu/engys/combustion/CombustionPhasesView.java b/src/eu/engys/combustion/CombustionReactionsView.java similarity index 94% rename from src/eu/engys/combustion/CombustionPhasesView.java rename to src/eu/engys/combustion/CombustionReactionsView.java index 7bbc4f0..76d1e67 100644 --- a/src/eu/engys/combustion/CombustionPhasesView.java +++ b/src/eu/engys/combustion/CombustionReactionsView.java @@ -34,14 +34,15 @@ import eu.engys.core.dictionary.DimensionedScalar; import eu.engys.core.dictionary.model.DictionaryModel; import eu.engys.core.project.Model; import eu.engys.gui.casesetup.phases.PhasesView; +import eu.engys.gui.casesetup.reactions.ReactionsView; import eu.engys.util.DimensionalUnits; import eu.engys.util.ui.builder.PanelBuilder; -public class CombustionPhasesView implements PhasesView { +public class CombustionReactionsView implements ReactionsView { public static final String SURFACE_TENSION_LABEL = "Surface Tension [N/m]"; - private static final Logger logger = LoggerFactory.getLogger(CombustionPhasesView.class); + private static final Logger logger = LoggerFactory.getLogger(CombustionReactionsView.class); private Model model; private CombustionModule module; @@ -49,7 +50,7 @@ public class CombustionPhasesView implements PhasesView { private PanelBuilder parametersBuilder; - public CombustionPhasesView(CombustionModule module, Model model) { + public CombustionReactionsView(CombustionModule module, Model model) { this.module = module; this.model = model; } diff --git a/src/eu/engys/combustion/CombustionSolutionView.java b/src/eu/engys/combustion/CombustionSolutionView.java index b600909..22014e2 100644 --- a/src/eu/engys/combustion/CombustionSolutionView.java +++ b/src/eu/engys/combustion/CombustionSolutionView.java @@ -26,6 +26,7 @@ package eu.engys.combustion; import java.awt.BorderLayout; import java.awt.Component; +import java.awt.event.ActionListener; import java.util.Arrays; import java.util.List; @@ -52,6 +53,7 @@ public class CombustionSolutionView extends AbstractSolutionView { private static final Logger logger = LoggerFactory.getLogger(CombustionSolutionView.class); private CombustionModule module; + private ActionListener listener; private PanelBuilder builder; private JCheckBox reaction; @@ -99,6 +101,8 @@ public class CombustionSolutionView extends AbstractSolutionView { @Override public void fixThermal(SolutionState ss, ThermalState ts) { + module.setReacting(ts.isReacting()); + if (ss.areSolverTypeAndTimeAndFlowAndTurbulenceChoosen()) { if (ss.isCoupled()) { if (reaction.isSelected()) { @@ -137,5 +141,26 @@ public class CombustionSolutionView extends AbstractSolutionView { modelsCombo.setSelectedItem(selectedItem); } } + + @Override + public void setThermalListener(ActionListener listener) { + this.listener = listener; + } -} + @Override + public void addThermalListener() { + reaction.addActionListener(listener); + modelsCombo.addActionListener(listener); + } + + @Override + public void removeThermalListener() { + reaction.removeActionListener(listener); + modelsCombo.removeActionListener(listener); + } + + @Override + public void updateThermalState(ThermalState ts) { + ts.setReacting(reaction.isSelected()); + } +} \ No newline at end of file diff --git a/src/eu/engys/combustion/CombustionTreeView.java b/src/eu/engys/combustion/CombustionTreeView.java index 5b2b8f7..d5140b5 100644 --- a/src/eu/engys/combustion/CombustionTreeView.java +++ b/src/eu/engys/combustion/CombustionTreeView.java @@ -28,23 +28,24 @@ import eu.engys.core.modules.ModulePanel; import eu.engys.core.modules.tree.AbstractTreeViewAdapter; import eu.engys.core.modules.tree.ModuleElementPanel; import eu.engys.gui.casesetup.phases.PhasesPanel; +import eu.engys.gui.casesetup.reactions.ReactionsPanel; public class CombustionTreeView extends AbstractTreeViewAdapter { private CombustionModule module; - private ModulePanel phasesPanel; + private ModulePanel reactionsPanel; - public CombustionTreeView(CombustionModule module, PhasesPanel phasesPanel) { + public CombustionTreeView(CombustionModule module, ReactionsPanel reactionsPanel) { this.module = module; - this.phasesPanel = phasesPanel; + this.reactionsPanel = reactionsPanel; } @Override public void updateCaseSetupTree(ModuleElementPanel viewElementPanel) { if (module.isReacting()) { - viewElementPanel.addPanel(phasesPanel); + viewElementPanel.addPanel(reactionsPanel); } else { - viewElementPanel.removePanel(phasesPanel); + viewElementPanel.removePanel(reactionsPanel); } } diff --git a/src/eu/engys/core/project/state/State.java b/src/eu/engys/core/project/state/State.java index 376fb6d..c3e7e0a 100644 --- a/src/eu/engys/core/project/state/State.java +++ b/src/eu/engys/core/project/state/State.java @@ -46,6 +46,7 @@ public class State { private boolean buoyant; private boolean radiation; private boolean solar; + private boolean reacting; private boolean adjoint; @@ -213,6 +214,14 @@ public class State { public boolean isSolar() { return solar; } + + public void setReacting(boolean reacting) { + this.reacting = reacting; + } + + public boolean isReacting() { + return reacting; + } public void setAdjoint(boolean adjoint) { this.adjoint = adjoint; diff --git a/src/eu/engys/core/project/state/ThermalState.java b/src/eu/engys/core/project/state/ThermalState.java index 6568475..57f2598 100644 --- a/src/eu/engys/core/project/state/ThermalState.java +++ b/src/eu/engys/core/project/state/ThermalState.java @@ -29,17 +29,20 @@ public class ThermalState { public static final String THERMAL = "Thermal"; public static final String ENERGY = "Energy"; public static final String BUOYANCY = "Buoyancy"; + public static final String REACTING = "Reacting"; private boolean energy; private boolean buoyancy; private boolean radiation; private boolean solar; + private boolean reacting; public ThermalState() { this.setEnergy(false); this.setBuoyancy(false); this.setBuoyancy(false); this.setSolar(false); + this.setReacting(false); } public ThermalState(State state) { @@ -47,6 +50,7 @@ public class ThermalState { this.setBuoyancy(state.isBuoyant()); this.setRadiation(state.isRadiation()); this.setSolar(state.isSolar()); + this.setReacting(state.isReacting()); } public boolean isEnergy() { @@ -81,8 +85,17 @@ public class ThermalState { this.solar = solar; } + public boolean isReacting() { + return reacting; + } + + public void setReacting(boolean reacting) { + this.reacting = reacting; + } + @Override public String toString() { - return "Energy: " + (isEnergy() ? "ON" : "OFF") + ", Buoyancy: " + (isBuoyancy() ? "ON" : "OFF") + ", Radiation: " + (isRadiation() ? "ON" : "OFF") + ", Solar: " + (isSolar() ? "ON" : "OFF"); + return "Energy: " + (isEnergy() ? "ON" : "OFF") + ", Buoyancy: " + (isBuoyancy() ? "ON" : "OFF") + ", Radiation: " + (isRadiation() ? "ON" : "OFF") + ", Solar: " + (isSolar() ? "ON" : "OFF") + + ", Reacting: " + (isReacting() ? "ON" : "OFF"); } } \ No newline at end of file