001package jmri.jmrit.operations.automation.actions; 002 003import jmri.InstanceManager; 004import jmri.jmrit.operations.locations.Location; 005import jmri.jmrit.operations.locations.LocationManager; 006import jmri.jmrit.operations.trains.*; 007import jmri.jmrit.operations.trains.csv.TrainCsvSwitchLists; 008 009public class PrintSwitchListChangesAction extends Action { 010 011 private static final int _code = ActionCodes.PRINT_SWITCHLIST_CHANGES; 012 protected static final boolean IS_CHANGED = true; 013 014 @Override 015 public int getCode() { 016 return _code; 017 } 018 019 @Override 020 public String getName() { 021 if (InstanceManager.getDefault(TrainManager.class).isPrintPreviewEnabled()) { 022 return Bundle.getMessage("PreviewSwitchListChanges"); 023 } else { 024 return Bundle.getMessage("PrintSwitchListChanges"); 025 } 026 } 027 028 @Override 029 public void doAction() { 030 doAction(IS_CHANGED); 031 } 032 033 protected void doAction(boolean isChanged) { 034 if (getAutomationItem() != null) { 035 setRunning(true); 036 TrainSwitchLists trainSwitchLists = new TrainSwitchLists(); 037 TrainCsvSwitchLists trainCsvSwitchLists = new TrainCsvSwitchLists(); 038 for (Location location : InstanceManager.getDefault(LocationManager.class).getUniqueLocationsByNameList()) { 039 if (location.isSwitchListEnabled() && 040 (!isChanged || location.getStatus().equals(Location.MODIFIED))) { 041 // also build the CSV switch lists 042 trainCsvSwitchLists.buildSwitchList(location); 043 trainSwitchLists.buildSwitchList(location); 044 trainSwitchLists.printSwitchList(location, 045 InstanceManager.getDefault(TrainManager.class).isPrintPreviewEnabled()); 046 } 047 } 048 // set trains switch lists printed 049 InstanceManager.getDefault(TrainManager.class).setTrainsSwitchListStatus(Train.PRINTED); 050 } 051 finishAction(true); 052 } 053 054 @Override 055 public void cancelAction() { 056 // no cancel for this action 057 } 058}