| 5 | | When a job is being executed, the `ProgressDialog` is modal so you can't switch to another window to perform any other operations. |
| 6 | | When we add an option to execute jobs in the background all monitors should be paused so that folders in different windows are not refreshed too frequently. |
| 7 | | The pause flag is local to a folder pane, but we can make it global (static) to all panes. |
| | 5 | When a job is being executed, the `ProgressDialog` is modal so you can't switch to another window to perform any other operations.[[BR]] |
| | 6 | When we add an option to execute jobs in the background all monitors should be paused so that folders in different windows are not refreshed too frequently.[[BR]] |
| | 7 | The pause flag is local to a folder pane, but we can make it global (static) to all panes.[[BR]] |
| 15 | | a) the iterator is not thread safe - when a listener removes itself the state of iterator is undefined |
| 16 | | b) listeners perform their actions in the job thread. Listeners can block the job thread. The action executed by the listener will probably update some UI information (like `ProgressDialog` now) so I think they should be executed in the Swing thread. |
| 17 | | I think some methods from `FileJob` could be marked as final so that descendants of this class cannot override them as not synchronized. |
| | 15 | a. the iterator is not thread safe - when a listener removes itself the state of iterator is undefined |
| | 16 | b. listeners perform their actions in the job thread. Listeners can block the job thread. The action executed by the listener will probably update some UI information (like `ProgressDialog` now) so I think they should be executed in the Swing thread. |
| | 17 | I think some methods from `FileJob` could be marked as final so that descendants of this class cannot override them as not synchronized.[[BR]] |
| 19 | | addFileJobListener, removeFileJobListener |
| 20 | | getStartDate, getEndDate, getPauseStartDate, setPauseStartDate, getPausedTime, calcPausedTime, setPaused, getEffectiveJobTime, getCurrentFilename |
| 21 | | getTotalPercentDone, getCurrentFileIndex, getCurrentFile, setCurrentFile, getNbFiles, setNbFiles, getStatusString |
| 22 | | interrupt, stop |
| | 19 | * addFileJobListener, removeFileJobListener |
| | 20 | * getStartDate, getEndDate, getPauseStartDate, setPauseStartDate, getPausedTime, calcPausedTime, setPaused, getEffectiveJobTime, getCurrentFilename |
| | 21 | * getTotalPercentDone, getCurrentFileIndex, getCurrentFile, setCurrentFile, getNbFiles, setNbFiles, getStatusString |
| | 22 | * interrupt, stop |
| 27 | | The `TransferFileJob` class is a base class for all copy/move jobs. |
| 28 | | Methods `getCurrentFileByteCounter, getTotalByteCounter, getTotalSkippedByteCounter` return a `ByteCounter` class. |
| 29 | | It could be changed to return byte count (as long). The method `resetCurrentFileByteCounter` should be added to reset the byte counter. |
| 30 | | Then we can synchronize these methods. |
| | 27 | The `TransferFileJob` class is a base class for all copy/move jobs.[[BR]] |
| | 28 | Methods `getCurrentFileByteCounter, getTotalByteCounter, getTotalSkippedByteCounter` return a `ByteCounter` class. [[BR]] |
| | 29 | It could be changed to return byte count (as long). The method `resetCurrentFileByteCounter` should be added to reset the byte counter.[[BR]] |
| | 30 | Then we can synchronize these methods.[[BR]] |