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 _excludeMemoryContents_CheckBox; 028 private JCheckBox _excludeJmriVersionCheckBox; 029 private JCheckBox _excludeTimebaseCheckBox; 030 private JCheckBox _excludeFontExtensionsCheckBox; 031 private JCheckBox _shortenLayoutEditorWritesCheckBox; 032 033 public LoadAndStorePreferencesPanel() { 034 _preferences = InstanceManager.getDefault(LoadAndStorePreferences.class); 035 initGUI(); 036 } 037 038 private void initGUI() { 039 setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS)); 040 add(getPanel()); 041 } 042 043 /** 044 * set the local prefs to match the GUI Local prefs are independent from the 045 * singleton instance prefs. 046 * 047 * @return true if set, false if values are unacceptable. 048 */ 049 private boolean setValues() { 050 boolean didSet = true; 051 _preferences.setExcludeFileHistory(_excludeFileHistoryCheckBox.isSelected()); 052 _preferences.setExcludeMemoryIMCURRENTTIME(_excludeMemoryIMCURRENTTIME_CheckBox.isSelected()); 053 _preferences.setExcludeMemoryContents(_excludeMemoryContents_CheckBox.isSelected()); 054 _preferences.setExcludeJmriVersion(_excludeJmriVersionCheckBox.isSelected()); 055 _preferences.setExcludeTimebase(_excludeTimebaseCheckBox.isSelected()); 056 _preferences.setExcludeFontExtensions(_excludeFontExtensionsCheckBox.isSelected()); 057 _preferences.setShortenLayoutEditorWrites(_shortenLayoutEditorWritesCheckBox.isSelected()); 058 return didSet; 059 } 060 061 private JPanel getPanel() { 062 JLabel infoLabel = new JLabel(Bundle.getMessage("LabelExcludeInfo")); 063 064 _excludeFileHistoryCheckBox = new JCheckBox(Bundle.getMessage("LabelExcludeFileHistory")); 065 _excludeFileHistoryCheckBox.setSelected(_preferences.isExcludeFileHistory()); 066 067 _excludeMemoryIMCURRENTTIME_CheckBox = new JCheckBox(Bundle.getMessage("ExcludeMemoryIMCURRENTTIME")); 068 _excludeMemoryIMCURRENTTIME_CheckBox.setSelected(_preferences.isExcludeMemoryIMCURRENTTIME()); 069 070 _excludeMemoryContents_CheckBox = new JCheckBox(Bundle.getMessage("ExcludeMemoryContents")); 071 _excludeMemoryContents_CheckBox.setSelected(_preferences.isExcludeMemoryContents()); 072 073 _excludeJmriVersionCheckBox = new JCheckBox(Bundle.getMessage("ExcludeJmriVersion")); 074 _excludeJmriVersionCheckBox.setSelected(_preferences.isExcludeJmriVersion()); 075 076 _excludeTimebaseCheckBox = new JCheckBox(Bundle.getMessage("ExcludeTimebase")); 077 _excludeTimebaseCheckBox.setSelected(_preferences.isExcludeTimebase()); 078 079 _excludeFontExtensionsCheckBox = new JCheckBox(Bundle.getMessage("ExcludeFontExtensions")); 080 _excludeFontExtensionsCheckBox.setSelected(_preferences.isExcludeFontExtensions()); 081 082 _shortenLayoutEditorWritesCheckBox = new JCheckBox(Bundle.getMessage("ShortenLayoutEditorWrites")); 083 _shortenLayoutEditorWritesCheckBox.setSelected(_preferences.isShortenLayoutEditorWrites()); 084 085 JPanel gridPanel = new JPanel(new GridLayout(0, 1)); 086// gridPanel.add(new JLabel()); 087 gridPanel.add(infoLabel); 088 gridPanel.add(_excludeMemoryIMCURRENTTIME_CheckBox); 089 gridPanel.add(_excludeMemoryContents_CheckBox); 090 gridPanel.add(_excludeJmriVersionCheckBox); 091 gridPanel.add(_excludeFileHistoryCheckBox); 092 gridPanel.add(_excludeTimebaseCheckBox); 093 gridPanel.add(_excludeFontExtensionsCheckBox); 094 gridPanel.add(_shortenLayoutEditorWritesCheckBox); 095// gridPanel.add(new jmri.swing.JTitledSeparator(Bundle.getMessage("IgnoreSeparator"))); 096 097 JPanel panel = new JPanel(); 098 panel.setLayout(new FlowLayout(FlowLayout.CENTER, 40, 0)); 099 panel.add(gridPanel); 100 101 return panel; 102 } 103 104 @Override 105 public String getPreferencesItem() { 106 return "LOAD_AND_STORE"; // NOI18N 107 } 108 109 @Override 110 public String getPreferencesItemText() { 111 return Bundle.getMessage("LoadAndStoreMenu"); // NOI18N 112 } 113 114 @Override 115 public String getTabbedPreferencesTitle() { 116 return getPreferencesItemText(); 117 } 118 119 @Override 120 public String getLabelKey() { 121 return Bundle.getMessage("LoadAndStorePrefLabel"); 122 } 123 124 @Override 125 public JComponent getPreferencesComponent() { 126 return this; 127 } 128 129 @Override 130 public boolean isPersistant() { 131 return false; 132 } 133 134 @Override 135 public String getPreferencesTooltip() { 136 return null; 137 } 138 139 @Override 140 public void savePreferences() { 141 if (setValues()) { 142 _preferences.save(); 143 } 144 } 145 146 @Override 147 public boolean isDirty() { 148 return _preferences.isDirty(); 149 } 150 151 @Override 152 public boolean isRestartRequired() { 153 return _preferences.isRestartRequired(); 154 } 155 156 @Override 157 public boolean isPreferencesValid() { 158 return true; // no validity checking performed 159 } 160 161 @Override 162 public int getSortOrder() { 163 return 450; // Place between "Start Up" and "Display" 164 } 165}