PowerFlowAnalysisMenu.java 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package holeg.ui;
  2. import ui.controller.SimulationManager;
  3. import ui.controller.SingletonControl;
  4. import ui.model.Model;
  5. import javax.swing.*;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8. public class PowerFlowAnalysisMenu extends JMenu {
  9. private JMenuItem settingsMenu;
  10. private JMenuItem showFlow;
  11. private JMenuItem clearCache;
  12. private JMenuItem solve;
  13. private JMenuItem clearCacheAndSolve;
  14. private JCheckBoxMenuItem disableUpdates;
  15. private JCheckBoxMenuItem showResultMessageBox;
  16. private JCheckBoxMenuItem showDebugMessageBox;
  17. private static PowerFlowAnalysisMenu instance;
  18. private boolean overwriteDisableUpdatesToForceUpdates = false;
  19. public PowerFlowAnalysisMenu(Model model) {
  20. super("Power flow");
  21. settingsMenu = add(new JMenuItem("Settings"));
  22. showFlow = add(new JMenuItem("Show flow table"));
  23. addSeparator();
  24. clearCache = add(new JMenuItem("Clear cache"));
  25. solve = add(new JMenuItem("Solve"));
  26. clearCacheAndSolve = add(new JMenuItem("Clear cache and solve"));
  27. addSeparator();
  28. disableUpdates = (JCheckBoxMenuItem) add(new JCheckBoxMenuItem("Disable automatic updates"));
  29. showResultMessageBox = (JCheckBoxMenuItem) add(new JCheckBoxMenuItem("Show result message"));
  30. showDebugMessageBox = (JCheckBoxMenuItem) add(new JCheckBoxMenuItem("Show debug message"));
  31. clearCache.addActionListener((e) -> {
  32. clearCache();
  33. });
  34. solve.addActionListener((e) -> {
  35. solve(false);
  36. });
  37. clearCacheAndSolve.addActionListener((e) -> {
  38. solve(true);
  39. });
  40. instance = this;
  41. }
  42. private void clearCache() {
  43. SingletonControl.getInstance().getControl().getSimManager().getHolegPowerFlowContext().clearCache();
  44. }
  45. private void solve(boolean clearCache) {
  46. // This is needed otherwise the calculateStateAndVisualForCurrentTimeStep() function would not do anything
  47. // when updates are disabled (same execution path)
  48. overwriteDisableUpdatesToForceUpdates = true;
  49. if (clearCache)
  50. clearCache();
  51. SingletonControl.getInstance().getControl().calculateStateAndVisualForCurrentTimeStep();
  52. overwriteDisableUpdatesToForceUpdates = false;
  53. }
  54. public boolean areUpdatesDisabled() {
  55. return !overwriteDisableUpdatesToForceUpdates && disableUpdates.getState();
  56. }
  57. public boolean shouldShowResult() {
  58. return showResultMessageBox.getState();
  59. }
  60. public boolean shouldShowDebug() {
  61. return showDebugMessageBox.getState();
  62. }
  63. public static PowerFlowAnalysisMenu getInstance() {
  64. return instance;
  65. }
  66. }