001package jmri.configurexml.swing; 002 003import java.awt.FlowLayout; 004import java.awt.GridLayout; 005 006import javax.swing.*; 007 008import org.openide.util.lookup.ServiceProvider; 009 010import jmri.InstanceManager; 011import jmri.swing.PreferencesPanel; 012import jmri.configurexml.LoadAndStorePreferences; 013 014/** 015 * Preferences panel for Load and store tables and panel files. 016 * 017 * @author Dave Sand Copyright 2022 018 * @author Daniel Bergqvist Copyright 2025 019 */ 020@ServiceProvider(service = PreferencesPanel.class) 021public class LoadAndStorePreferencesPanel extends JPanel implements PreferencesPanel { 022 023 private final LoadAndStorePreferences _preferences; 024 025 private JCheckBox _excludeFileHistoryCheckBox; 026 private JCheckBox _excludeMemoryIMCURRENTTIME_CheckBox; 027 private JCheckBox _excludeJmriVersionCheckBox; 028 029 public LoadAndStorePreferencesPanel() { 030 _preferences = InstanceManager.getDefault(LoadAndStorePreferences.class); 031 initGUI(); 032 } 033 034 private void initGUI() { 035 setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS)); 036 add(getPanel()); 037 } 038 039 /** 040 * set the local prefs to match the GUI Local prefs are independent from the 041 * singleton instance prefs. 042 * 043 * @return true if set, false if values are unacceptable. 044 */ 045 private boolean setValues() { 046 boolean didSet = true; 047 _preferences.setExcludeFileHistory(_excludeFileHistoryCheckBox.isSelected()); 048 _preferences.setExcludeMemoryIMCURRENTTIME(_excludeMemoryIMCURRENTTIME_CheckBox.isSelected()); 049 _preferences.setExcludeJmriVersion(_excludeJmriVersionCheckBox.isSelected()); 050 return didSet; 051 } 052 053 private JPanel getPanel() { 054 JLabel infoLabel = new JLabel(Bundle.getMessage("LabelExcludeInfo")); 055 056 _excludeFileHistoryCheckBox = new JCheckBox(Bundle.getMessage("LabelExcludeFileHistory")); 057 _excludeFileHistoryCheckBox.setSelected(_preferences.isExcludeFileHistory()); 058 059 _excludeMemoryIMCURRENTTIME_CheckBox = new JCheckBox(Bundle.getMessage("ExcludeMemoryIMCURRENTTIME")); 060 _excludeMemoryIMCURRENTTIME_CheckBox.setSelected(_preferences.isExcludeMemoryIMCURRENTTIME()); 061 062 _excludeJmriVersionCheckBox = new JCheckBox(Bundle.getMessage("ExcludeJmriVersion")); 063 _excludeJmriVersionCheckBox.setSelected(_preferences.isExcludeJmriVersion()); 064 065 JPanel gridPanel = new JPanel(new GridLayout(0, 1)); 066// gridPanel.add(new JLabel()); 067 gridPanel.add(infoLabel); 068 gridPanel.add(_excludeMemoryIMCURRENTTIME_CheckBox); 069 gridPanel.add(_excludeJmriVersionCheckBox); 070 gridPanel.add(_excludeFileHistoryCheckBox); 071// gridPanel.add(new jmri.swing.JTitledSeparator(Bundle.getMessage("IgnoreSeparator"))); 072 073 JPanel panel = new JPanel(); 074 panel.setLayout(new FlowLayout(FlowLayout.CENTER, 40, 0)); 075 panel.add(gridPanel); 076 077 return panel; 078 } 079 080 @Override 081 public String getPreferencesItem() { 082 return "LOAD_AND_STORE"; // NOI18N 083 } 084 085 @Override 086 public String getPreferencesItemText() { 087 return Bundle.getMessage("LoadAndStoreMenu"); // NOI18N 088 } 089 090 @Override 091 public String getTabbedPreferencesTitle() { 092 return getPreferencesItemText(); 093 } 094 095 @Override 096 public String getLabelKey() { 097 return Bundle.getMessage("LoadAndStorePrefLabel"); 098 } 099 100 @Override 101 public JComponent getPreferencesComponent() { 102 return this; 103 } 104 105 @Override 106 public boolean isPersistant() { 107 return false; 108 } 109 110 @Override 111 public String getPreferencesTooltip() { 112 return null; 113 } 114 115 @Override 116 public void savePreferences() { 117 if (setValues()) { 118 _preferences.save(); 119 } 120 } 121 122 @Override 123 public boolean isDirty() { 124 return _preferences.isDirty(); 125 } 126 127 @Override 128 public boolean isRestartRequired() { 129 return _preferences.isRestartRequired(); 130 } 131 132 @Override 133 public boolean isPreferencesValid() { 134 return true; // no validity checking performed 135 } 136 137 @Override 138 public int getSortOrder() { 139 return 450; // Place between "Start Up" and "Display" 140 } 141}