001package jmri.jmrit.operations.setup.gui; 002 003import java.awt.GridBagLayout; 004 005import javax.swing.*; 006 007import org.slf4j.Logger; 008import org.slf4j.LoggerFactory; 009 010import jmri.InstanceManager; 011import jmri.jmrit.operations.setup.OperationsSetupXml; 012import jmri.jmrit.operations.setup.Setup; 013import jmri.jmrit.operations.trains.TrainManager; 014 015/** 016 * Frame for user edit of additional manifest print options 017 * 018 * @author Dan Boudreau Copyright (C) 2012 019 * 020 */ 021public class PrintMoreOptionPanel extends OperationsPreferencesPanel { 022 023 private static final Logger log = LoggerFactory.getLogger(PrintMoreOptionPanel.class); 024 025 // labels 026 // major buttons 027 JButton saveButton = new JButton(Bundle.getMessage("ButtonSave")); 028 029 // radio buttons 030 // check boxes 031 // text field 032 JTextField tab1TextField = new JTextField(2); 033 JTextField tab2TextField = new JTextField(2); 034 JTextField tab3TextField = new JTextField(2); 035 JTextField manifestTabTextField = new JTextField(2); 036 037 // text area 038 // combo boxes 039 public PrintMoreOptionPanel() { 040 041 // the following code sets the frame's initial state 042 setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); 043 044 // row 1 font type and size 045 JPanel p1 = new JPanel(); 046 p1.setLayout(new BoxLayout(p1, BoxLayout.Y_AXIS)); 047 048 JPanel pTab = new JPanel(); 049 pTab.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("BorderLayoutTab1"))); 050 pTab.add(tab1TextField); 051 p1.add(pTab); 052 053 JPanel pTab2 = new JPanel(); 054 pTab2.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("BorderLayoutTab2"))); 055 pTab2.add(tab2TextField); 056 p1.add(pTab2); 057 058 JPanel pTab3 = new JPanel(); 059 pTab3.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("BorderLayoutTab3"))); 060 pTab3.add(tab3TextField); 061 p1.add(pTab3); 062 063 JPanel pManifestTab = new JPanel(); 064 pManifestTab.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("BorderLayoutManifestTab"))); 065 pManifestTab.add(manifestTabTextField); 066 p1.add(pManifestTab); 067 068 tab1TextField.setText(Integer.toString(Setup.getTab1Length())); 069 tab2TextField.setText(Integer.toString(Setup.getTab2Length())); 070 tab3TextField.setText(Integer.toString(Setup.getTab3Length())); 071 manifestTabTextField.setText(Integer.toString(Setup.getManifestTabLength())); 072 073 // add tool tips 074 saveButton.setToolTipText(Bundle.getMessage("SaveToolTip")); 075 076 // row 11 077 JPanel pControl = new JPanel(); 078 pControl.setBorder(BorderFactory.createTitledBorder("")); 079 pControl.setLayout(new GridBagLayout()); 080 addItem(pControl, saveButton, 0, 0); 081 082 add(p1); 083 add(pControl); 084 085 // setup buttons 086 addButtonAction(saveButton); 087 } 088 089 // Save buttons 090 @Override 091 public void buttonActionPerformed(java.awt.event.ActionEvent ae) { 092 if (ae.getSource() == saveButton) { 093 this.savePreferences(); 094 var topLevelAncestor = getTopLevelAncestor(); 095 if (Setup.isCloseWindowOnSaveEnabled() && topLevelAncestor instanceof PrintMoreOptionFrame) { 096 ((PrintMoreOptionFrame) topLevelAncestor).dispose(); 097 } 098 } 099 } 100 101 @Override 102 public String getTabbedPreferencesTitle() { 103 return Bundle.getMessage("TitlePrintMoreOptions"); 104 } 105 106 @Override 107 public String getPreferencesTooltip() { 108 return null; 109 } 110 111 @Override 112 public void savePreferences() { 113 114 try { 115 Setup.setTab1length(Integer.parseInt(tab1TextField.getText())); 116 Setup.setTab2length(Integer.parseInt(tab2TextField.getText())); 117 Setup.setTab3length(Integer.parseInt(tab3TextField.getText())); 118 Setup.setManifestTablength(Integer.parseInt(manifestTabTextField.getText())); 119 } catch (NumberFormatException e) { 120 log.error("Tab wasn't a number"); 121 } 122 123 InstanceManager.getDefault(OperationsSetupXml.class).writeOperationsFile(); 124 125 // recreate all train manifests 126 InstanceManager.getDefault(TrainManager.class).setTrainsModified(); 127 } 128 129 @Override 130 public boolean isDirty() { 131 try { 132 return (Setup.getTab1Length() != Integer.parseInt(tab1TextField.getText()) || 133 Setup.getTab2Length() != Integer.parseInt(tab2TextField.getText()) || 134 Setup.getTab3Length() != Integer.parseInt(tab3TextField.getText()) || 135 Setup.getManifestTabLength() != Integer.parseInt(manifestTabTextField.getText())); 136 } catch (NumberFormatException e) { 137 log.error("Tab wasn't a number"); 138 } 139 return true; 140 } 141}