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