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