001package jmri.jmrit.operations.setup.gui; 002 003import java.awt.GridBagLayout; 004 005import javax.swing.*; 006 007import jmri.InstanceManager; 008import jmri.jmrit.operations.setup.OperationsSetupXml; 009import jmri.jmrit.operations.setup.Setup; 010import jmri.jmrit.operations.trains.TrainManager; 011import jmri.jmrit.operations.trains.TrainManifestHeaderText; 012 013/** 014 * Frame for user edit of manifest header text strings 015 * 016 * @author Dan Boudreau Copyright (C) 2014 017 * 018 */ 019public class EditManifestHeaderTextPanel extends OperationsPreferencesPanel { 020 021 // major buttons 022 JButton saveButton = new JButton(Bundle.getMessage("ButtonSave")); 023 JButton resetButton = new JButton(Bundle.getMessage("Reset")); 024 025 // car and engine attributes 026 JTextField road_TextField = new JTextField(25); 027 JTextField number_TextField = new JTextField(25); 028 JTextField engineNumber_TextField = new JTextField(25); 029 JTextField type_TextField = new JTextField(25); 030 JTextField length_TextField = new JTextField(25); 031 JTextField weight_TextField = new JTextField(25); 032 JTextField owner_TextField = new JTextField(25); 033 JTextField division_TextField = new JTextField(25); 034 JTextField track_TextField = new JTextField(25); 035 JTextField location_TextField = new JTextField(25); 036 JTextField destination_TextField = new JTextField(25); 037 JTextField dest_track_TextField = new JTextField(25); 038 JTextField comment_TextField = new JTextField(25); 039 JTextField last_train_TextField = new JTextField(25); 040 // car attributes 041 JTextField load_TextField = new JTextField(25); 042 JTextField load_type_TextField = new JTextField(25); 043 JTextField hazardous_TextField = new JTextField(25); 044 JTextField color_TextField = new JTextField(25); 045 JTextField kernel_TextField = new JTextField(25); 046 JTextField final_dest_TextField = new JTextField(25); 047 JTextField final_dest_track_TextField = new JTextField(25); 048 JTextField drop_comment_TextField = new JTextField(25); 049 JTextField pickup_comment_TextField = new JTextField(25); 050 JTextField rwe_TextField = new JTextField(25); 051 // engine attributes 052 JTextField model_TextField = new JTextField(25); 053 JTextField hp_TextField = new JTextField(25); 054 JTextField consist_TextField = new JTextField(25); 055 JTextField dcc_address_TextField = new JTextField(25); 056 057 public EditManifestHeaderTextPanel() { 058 059 // the following code sets the frame's initial state 060 setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); 061 062 // manifest text fields 063 JPanel pManifest = new JPanel(); 064 JScrollPane pManifestPane = new JScrollPane(pManifest); 065 pManifestPane.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("BorderLayoutManifestHeader"))); 066 pManifest.setLayout(new BoxLayout(pManifest, BoxLayout.Y_AXIS)); 067 068 JPanel pRoad_TextField = new JPanel(); 069 pRoad_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Road"))); 070 pRoad_TextField.add(road_TextField); 071 road_TextField.setText(TrainManifestHeaderText.getStringHeader_Road()); 072 pManifest.add(pRoad_TextField); 073 074 JPanel pNumber_TextField = new JPanel(); 075 pNumber_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Number") + " (" 076 + Bundle.getMessage("Car") + ")")); 077 pNumber_TextField.add(number_TextField); 078 number_TextField.setText(TrainManifestHeaderText.getStringHeader_Number()); 079 pManifest.add(pNumber_TextField); 080 081 JPanel pEngineNumber_TextField = new JPanel(); 082 pEngineNumber_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Number") + " (" 083 + Bundle.getMessage("Loco") + ")")); 084 pEngineNumber_TextField.add(engineNumber_TextField); 085 engineNumber_TextField.setText(TrainManifestHeaderText.getStringHeader_EngineNumber()); 086 pManifest.add(pEngineNumber_TextField); 087 088 JPanel pType_TextField = new JPanel(); 089 pType_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Type"))); 090 pType_TextField.add(type_TextField); 091 type_TextField.setText(TrainManifestHeaderText.getStringHeader_Type()); 092 pManifest.add(pType_TextField); 093 094 JPanel pLength_TextField = new JPanel(); 095 pLength_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Length"))); 096 pLength_TextField.add(length_TextField); 097 length_TextField.setText(TrainManifestHeaderText.getStringHeader_Length()); 098 pManifest.add(pLength_TextField); 099 100 JPanel pWeight_TextField = new JPanel(); 101 pWeight_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Weight"))); 102 pWeight_TextField.add(weight_TextField); 103 weight_TextField.setText(TrainManifestHeaderText.getStringHeader_Weight()); 104 pManifest.add(pWeight_TextField); 105 106 JPanel pOwner_TextField = new JPanel(); 107 pOwner_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Owner"))); 108 pOwner_TextField.add(owner_TextField); 109 owner_TextField.setText(TrainManifestHeaderText.getStringHeader_Owner()); 110 pManifest.add(pOwner_TextField); 111 112 JPanel pTrack_TextField = new JPanel(); 113 pTrack_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Track"))); 114 pTrack_TextField.add(track_TextField); 115 track_TextField.setText(TrainManifestHeaderText.getStringHeader_Track()); 116 pManifest.add(pTrack_TextField); 117 118 JPanel pLocation_TextField = new JPanel(); 119 pLocation_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Location"))); 120 pLocation_TextField.add(location_TextField); 121 location_TextField.setText(TrainManifestHeaderText.getStringHeader_Location()); 122 pManifest.add(pLocation_TextField); 123 124 JPanel pDestination_TextField = new JPanel(); 125 pDestination_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Destination"))); 126 pDestination_TextField.add(destination_TextField); 127 destination_TextField.setText(TrainManifestHeaderText.getStringHeader_Destination()); 128 pManifest.add(pDestination_TextField); 129 130 JPanel pDest_Track_TextField = new JPanel(); 131 pDest_Track_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Dest&Track"))); 132 pDest_Track_TextField.add(dest_track_TextField); 133 dest_track_TextField.setText(TrainManifestHeaderText.getStringHeader_Dest_Track()); 134 pManifest.add(pDest_Track_TextField); 135 136 JPanel pComment_TextField = new JPanel(); 137 pComment_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Comment"))); 138 pComment_TextField.add(comment_TextField); 139 comment_TextField.setText(TrainManifestHeaderText.getStringHeader_Comment()); 140 pManifest.add(pComment_TextField); 141 142 JPanel pLast_Train_TextField = new JPanel(); 143 pLast_Train_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("LastTrain"))); 144 pLast_Train_TextField.add(last_train_TextField); 145 last_train_TextField.setText(TrainManifestHeaderText.getStringHeader_Last_Train()); 146 pManifest.add(pLast_Train_TextField); 147 148 // car attributes 149 JPanel pLoad_TextField = new JPanel(); 150 pLoad_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Load"))); 151 pLoad_TextField.add(load_TextField); 152 load_TextField.setText(TrainManifestHeaderText.getStringHeader_Load()); 153 pManifest.add(pLoad_TextField); 154 155 JPanel pLoad_Type_TextField = new JPanel(); 156 pLoad_Type_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Load_Type"))); 157 pLoad_Type_TextField.add(load_type_TextField); 158 load_type_TextField.setText(TrainManifestHeaderText.getStringHeader_Load_Type()); 159 pManifest.add(pLoad_Type_TextField); 160 161 JPanel pHazardous_TextField = new JPanel(); 162 pHazardous_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Hazardous"))); 163 pHazardous_TextField.add(hazardous_TextField); 164 hazardous_TextField.setText(TrainManifestHeaderText.getStringHeader_Hazardous()); 165 pManifest.add(pHazardous_TextField); 166 167 JPanel pColor_TextField = new JPanel(); 168 pColor_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Color"))); 169 pColor_TextField.add(color_TextField); 170 color_TextField.setText(TrainManifestHeaderText.getStringHeader_Color()); 171 pManifest.add(pColor_TextField); 172 173 JPanel pKernel_TextField = new JPanel(); 174 pKernel_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Kernel"))); 175 pKernel_TextField.add(kernel_TextField); 176 kernel_TextField.setText(TrainManifestHeaderText.getStringHeader_Kernel()); 177 pManifest.add(pKernel_TextField); 178 179 JPanel pFinal_Dest_TextField = new JPanel(); 180 pFinal_Dest_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Final_Dest"))); 181 pFinal_Dest_TextField.add(final_dest_TextField); 182 final_dest_TextField.setText(TrainManifestHeaderText.getStringHeader_Final_Dest()); 183 pManifest.add(pFinal_Dest_TextField); 184 185 JPanel pFinal_Dest_Track_TextField = new JPanel(); 186 pFinal_Dest_Track_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("FD&Track"))); 187 pFinal_Dest_Track_TextField.add(final_dest_track_TextField); 188 final_dest_track_TextField.setText(TrainManifestHeaderText.getStringHeader_Final_Dest_Track()); 189 pManifest.add(pFinal_Dest_Track_TextField); 190 191 JPanel pDrop_Comment_TextField = new JPanel(); 192 pDrop_Comment_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("SetOut_Msg"))); 193 pDrop_Comment_TextField.add(drop_comment_TextField); 194 drop_comment_TextField.setText(TrainManifestHeaderText.getStringHeader_Drop_Comment()); 195 pManifest.add(pDrop_Comment_TextField); 196 197 JPanel pPickup_Comment_TextField = new JPanel(); 198 pPickup_Comment_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("PickUp_Msg"))); 199 pPickup_Comment_TextField.add(pickup_comment_TextField); 200 pickup_comment_TextField.setText(TrainManifestHeaderText.getStringHeader_Pickup_Comment()); 201 pManifest.add(pPickup_Comment_TextField); 202 203 JPanel pRWE_TextField = new JPanel(); 204 pRWE_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("RWELabel"))); 205 pRWE_TextField.add(rwe_TextField); 206 rwe_TextField.setText(TrainManifestHeaderText.getStringHeader_RWE()); 207 pManifest.add(pRWE_TextField); 208 209 JPanel pDivision_TextField = new JPanel(); 210 pDivision_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Division"))); 211 pDivision_TextField.add(division_TextField); 212 division_TextField.setText(TrainManifestHeaderText.getStringHeader_Division()); 213 pManifest.add(pDivision_TextField); 214 215 // engine attributes 216 JPanel pModel_TextField = new JPanel(); 217 pModel_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Model"))); 218 pModel_TextField.add(model_TextField); 219 model_TextField.setText(TrainManifestHeaderText.getStringHeader_Model()); 220 pManifest.add(pModel_TextField); 221 222 JPanel pHp_TextField = new JPanel(); 223 pHp_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("HP"))); 224 pHp_TextField.add(hp_TextField); 225 hp_TextField.setText(TrainManifestHeaderText.getStringHeader_Hp()); 226 pManifest.add(pHp_TextField); 227 228 JPanel pConsist_TextField = new JPanel(); 229 pConsist_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("Consist"))); 230 pConsist_TextField.add(consist_TextField); 231 consist_TextField.setText(TrainManifestHeaderText.getStringHeader_Consist()); 232 pManifest.add(pConsist_TextField); 233 234 JPanel pDccAddress_TextField = new JPanel(); 235 pDccAddress_TextField.setBorder(BorderFactory.createTitledBorder(Bundle.getMessage("DCC_Address"))); 236 pDccAddress_TextField.add(dcc_address_TextField); 237 dcc_address_TextField.setText(TrainManifestHeaderText.getStringHeader_DCC_Address()); 238 pManifest.add(pDccAddress_TextField); 239 240 // add tool tips 241 saveButton.setToolTipText(Bundle.getMessage("SaveToolTip")); 242 243 // row 11 244 JPanel pControl = new JPanel(); 245 pControl.setBorder(BorderFactory.createTitledBorder("")); 246 pControl.setLayout(new GridBagLayout()); 247 addItem(pControl, resetButton, 0, 0); 248 addItem(pControl, saveButton, 1, 0); 249 250 add(pManifestPane); 251 add(pControl); 252 253 // set up buttons 254 addButtonAction(resetButton); 255 addButtonAction(saveButton); 256 } 257 258 // Save buttons 259 @Override 260 public void buttonActionPerformed(java.awt.event.ActionEvent ae) { 261 if (ae.getSource() == resetButton) { 262 road_TextField.setText(Bundle.getMessage("Road")); 263 number_TextField.setText(Bundle.getMessage("Number")); 264 engineNumber_TextField.setText(Bundle.getMessage("Number")); 265 type_TextField.setText(Bundle.getMessage("Type")); 266 length_TextField.setText(Bundle.getMessage("Length")); 267 weight_TextField.setText(Bundle.getMessage("Weight")); 268 owner_TextField.setText(Bundle.getMessage("Owner")); 269 division_TextField.setText(Bundle.getMessage("Division")); 270 track_TextField.setText(Bundle.getMessage("Track")); 271 location_TextField.setText(Bundle.getMessage("Location")); 272 destination_TextField.setText(Bundle.getMessage("Destination")); 273 dest_track_TextField.setText(Bundle.getMessage("Dest&Track")); 274 comment_TextField.setText(Bundle.getMessage("Comment")); 275 last_train_TextField.setText(Bundle.getMessage("LastTrain")); 276 // car attributes 277 load_TextField.setText(Bundle.getMessage("Load")); 278 load_type_TextField.setText(Bundle.getMessage("Load_Type")); 279 hazardous_TextField.setText(Bundle.getMessage("Hazardous")); 280 color_TextField.setText(Bundle.getMessage("Color")); 281 final_dest_TextField.setText(Bundle.getMessage("Final_Dest")); 282 final_dest_track_TextField.setText(Bundle.getMessage("FD&Track")); 283 drop_comment_TextField.setText(Bundle.getMessage("SetOut_Msg")); 284 pickup_comment_TextField.setText(Bundle.getMessage("PickUp_Msg")); 285 kernel_TextField.setText(Bundle.getMessage("Kernel")); 286 rwe_TextField.setText(Bundle.getMessage("RWELabel")); 287 // engine attributes 288 model_TextField.setText(Bundle.getMessage("Model")); 289 hp_TextField.setText(Bundle.getMessage("HP")); 290 consist_TextField.setText(Bundle.getMessage("Consist")); 291 dcc_address_TextField.setText(Bundle.getMessage("DCC_Address")); 292 } 293 if (ae.getSource() == saveButton) { 294 this.savePreferences(); 295 var topLevelAncestor = getTopLevelAncestor(); 296 if (Setup.isCloseWindowOnSaveEnabled() && topLevelAncestor instanceof EditManifestHeaderTextFrame) { 297 ((EditManifestHeaderTextFrame) topLevelAncestor).dispose(); 298 } 299 } 300 } 301 302 @Override 303 public String getTabbedPreferencesTitle() { 304 return Bundle.getMessage("TitleManifestHeaderText"); 305 } 306 307 @Override 308 public String getPreferencesTooltip() { 309 return null; 310 } 311 312 @Override 313 public void savePreferences() { 314 // car and engine attributes 315 TrainManifestHeaderText.setStringHeader_Road(road_TextField.getText()); 316 TrainManifestHeaderText.setStringHeader_Number(number_TextField.getText()); 317 TrainManifestHeaderText.setStringHeader_EngineNumber(engineNumber_TextField.getText()); 318 TrainManifestHeaderText.setStringHeader_Type(type_TextField.getText()); 319 TrainManifestHeaderText.setStringHeader_Length(length_TextField.getText()); 320 TrainManifestHeaderText.setStringHeader_Weight(weight_TextField.getText()); 321 TrainManifestHeaderText.setStringHeader_Owner(owner_TextField.getText()); 322 TrainManifestHeaderText.setStringHeader_Track(track_TextField.getText()); 323 TrainManifestHeaderText.setStringHeader_Location(location_TextField.getText()); 324 TrainManifestHeaderText.setStringHeader_Destination(destination_TextField.getText()); 325 TrainManifestHeaderText.setStringHeader_Dest_Track(dest_track_TextField.getText()); 326 TrainManifestHeaderText.setStringHeader_Comment(comment_TextField.getText()); 327 TrainManifestHeaderText.setStringHeader_Last_Train(last_train_TextField.getText()); 328 // car attributes 329 TrainManifestHeaderText.setStringHeader_Load(load_TextField.getText()); 330 TrainManifestHeaderText.setStringHeader_Load_Type(load_type_TextField.getText()); 331 TrainManifestHeaderText.setStringHeader_Hazardous(hazardous_TextField.getText()); 332 TrainManifestHeaderText.setStringHeader_Color(color_TextField.getText()); 333 TrainManifestHeaderText.setStringHeader_Final_Dest(final_dest_TextField.getText()); 334 TrainManifestHeaderText.setStringHeader_Final_Dest_Track(final_dest_track_TextField.getText()); 335 TrainManifestHeaderText.setStringHeader_Drop_Comment(drop_comment_TextField.getText()); 336 TrainManifestHeaderText.setStringHeader_Pickup_Comment(pickup_comment_TextField.getText()); 337 TrainManifestHeaderText.setStringHeader_Kernel(kernel_TextField.getText()); 338 TrainManifestHeaderText.setStringHeader_RWE(rwe_TextField.getText()); 339 TrainManifestHeaderText.setStringHeader_Division(division_TextField.getText()); 340 // engine attributes 341 TrainManifestHeaderText.setStringHeader_Model(model_TextField.getText()); 342 TrainManifestHeaderText.setStringHeader_Hp(hp_TextField.getText()); 343 TrainManifestHeaderText.setStringHeader_Consist(consist_TextField.getText()); 344 TrainManifestHeaderText.setStringHeader_DCC_Address(dcc_address_TextField.getText()); 345 346 InstanceManager.getDefault(OperationsSetupXml.class).writeOperationsFile(); 347 348 // recreate all train manifests 349 InstanceManager.getDefault(TrainManager.class).setTrainsModified(); 350 } 351 352 @Override 353 public boolean isDirty() { 354 return !(TrainManifestHeaderText.getStringHeader_Road().equals(road_TextField.getText()) 355 && TrainManifestHeaderText.getStringHeader_Number().equals(number_TextField.getText()) 356 && TrainManifestHeaderText.getStringHeader_EngineNumber().equals(engineNumber_TextField.getText()) 357 && TrainManifestHeaderText.getStringHeader_Type().equals(type_TextField.getText()) 358 && TrainManifestHeaderText.getStringHeader_Length().equals(length_TextField.getText()) 359 && TrainManifestHeaderText.getStringHeader_Weight().equals(weight_TextField.getText()) 360 && TrainManifestHeaderText.getStringHeader_Owner().equals(owner_TextField.getText()) 361 && TrainManifestHeaderText.getStringHeader_Division().equals(division_TextField.getText()) 362 && TrainManifestHeaderText.getStringHeader_Track().equals(track_TextField.getText()) 363 && TrainManifestHeaderText.getStringHeader_Location().equals(location_TextField.getText()) 364 && TrainManifestHeaderText.getStringHeader_Destination().equals(destination_TextField.getText()) 365 && TrainManifestHeaderText.getStringHeader_Dest_Track().equals(dest_track_TextField.getText()) 366 && TrainManifestHeaderText.getStringHeader_Comment().equals(comment_TextField.getText()) 367 && 368 TrainManifestHeaderText.getStringHeader_Last_Train().equals(last_train_TextField 369 .getText()) 370 && TrainManifestHeaderText.getStringHeader_Load().equals(load_TextField.getText()) 371 && TrainManifestHeaderText.getStringHeader_Load_Type().equals(load_type_TextField.getText()) 372 && TrainManifestHeaderText.getStringHeader_Hazardous().equals(hazardous_TextField.getText()) 373 && TrainManifestHeaderText.getStringHeader_Color().equals(color_TextField.getText()) 374 && TrainManifestHeaderText.getStringHeader_Final_Dest().equals(final_dest_TextField.getText()) 375 && TrainManifestHeaderText.getStringHeader_Final_Dest_Track().equals(final_dest_track_TextField.getText()) 376 && TrainManifestHeaderText.getStringHeader_Drop_Comment().equals(drop_comment_TextField.getText()) 377 && TrainManifestHeaderText.getStringHeader_Pickup_Comment().equals(pickup_comment_TextField.getText()) 378 && TrainManifestHeaderText.getStringHeader_Kernel().equals(kernel_TextField.getText()) 379 && TrainManifestHeaderText.getStringHeader_RWE().equals(rwe_TextField.getText()) 380 && TrainManifestHeaderText.getStringHeader_Model().equals(model_TextField.getText()) 381 && 382 TrainManifestHeaderText.getStringHeader_Hp().equals(hp_TextField 383 .getText()) 384 && TrainManifestHeaderText.getStringHeader_Consist().equals(consist_TextField.getText()) 385 && TrainManifestHeaderText.getStringHeader_DCC_Address().equals(dcc_address_TextField.getText())); 386 } 387}