| .. | .. |
|---|
| 282 | 282 | client = inClient; |
|---|
| 283 | 283 | copy = client; |
|---|
| 284 | 284 | |
|---|
| 285 | + if (copy.versions == null) |
|---|
| 286 | + { |
|---|
| 287 | + copy.versions = new byte[100][]; |
|---|
| 288 | + copy.versionindex = -1; |
|---|
| 289 | + } |
|---|
| 290 | + |
|---|
| 285 | 291 | // "this" is not called: SetupUI2(objEditor); |
|---|
| 286 | 292 | } |
|---|
| 287 | 293 | |
|---|
| .. | .. |
|---|
| 295 | 301 | client = inClient; |
|---|
| 296 | 302 | copy = client; |
|---|
| 297 | 303 | |
|---|
| 304 | + if (copy.versions == null) |
|---|
| 305 | + { |
|---|
| 306 | + copy.versions = new byte[100][]; |
|---|
| 307 | + copy.versionindex = -1; |
|---|
| 308 | + } |
|---|
| 309 | + |
|---|
| 298 | 310 | SetupUI2(callee.GetEditor()); |
|---|
| 299 | 311 | } |
|---|
| 300 | 312 | |
|---|
| .. | .. |
|---|
| 327 | 339 | copy = localCopy; |
|---|
| 328 | 340 | copy.editWindow = this; |
|---|
| 329 | 341 | |
|---|
| 342 | + if (copy.versions == null) |
|---|
| 343 | + { |
|---|
| 344 | + copy.versions = new byte[100][]; |
|---|
| 345 | + copy.versionindex = -1; |
|---|
| 346 | + } |
|---|
| 347 | + |
|---|
| 330 | 348 | SetupMenu(); |
|---|
| 331 | 349 | |
|---|
| 332 | 350 | //SetupName(objEditor); // new |
|---|
| .. | .. |
|---|
| 3731 | 3749 | cButton replaceButton; |
|---|
| 3732 | 3750 | cButton redoButton; |
|---|
| 3733 | 3751 | |
|---|
| 3752 | + boolean muteSlider; |
|---|
| 3753 | + |
|---|
| 3754 | + int VersionCount() |
|---|
| 3755 | + { |
|---|
| 3756 | + int count = 0; |
|---|
| 3757 | + |
|---|
| 3758 | + for (int i = copy.versions.length; --i >= 0;) |
|---|
| 3759 | + { |
|---|
| 3760 | + if (copy.versions[i] != null) |
|---|
| 3761 | + count++; |
|---|
| 3762 | + } |
|---|
| 3763 | + |
|---|
| 3764 | + return count; |
|---|
| 3765 | + } |
|---|
| 3766 | + |
|---|
| 3734 | 3767 | void SetUndoStates() |
|---|
| 3735 | 3768 | { |
|---|
| 3736 | 3769 | cRadio tab = GetCurrentTab(); |
|---|
| 3737 | 3770 | |
|---|
| 3738 | 3771 | restoreButton.setEnabled(copy.versionindex != -1); |
|---|
| 3739 | 3772 | replaceButton.setEnabled(copy.versionindex != -1); |
|---|
| 3773 | + |
|---|
| 3740 | 3774 | undoButton.setEnabled(copy.versionindex > 0); |
|---|
| 3741 | 3775 | redoButton.setEnabled(copy.versions[copy.versionindex + 1] != null); |
|---|
| 3776 | + |
|---|
| 3777 | + muteSlider = true; |
|---|
| 3778 | + versionSlider.setMaximum(VersionCount() - 1); |
|---|
| 3779 | + versionSlider.setInteger(copy.versionindex); |
|---|
| 3780 | + muteSlider = false; |
|---|
| 3742 | 3781 | } |
|---|
| 3743 | 3782 | |
|---|
| 3744 | 3783 | public boolean Undo() |
|---|
| 3745 | 3784 | { |
|---|
| 3785 | + // Option? |
|---|
| 3786 | + Replace(); |
|---|
| 3787 | + |
|---|
| 3746 | 3788 | System.err.println("Undo"); |
|---|
| 3747 | 3789 | |
|---|
| 3748 | 3790 | cRadio tab = GetCurrentTab(); |
|---|
| .. | .. |
|---|
| 3809 | 3851 | |
|---|
| 3810 | 3852 | public void Redo() |
|---|
| 3811 | 3853 | { |
|---|
| 3854 | + // Option? |
|---|
| 3855 | + Replace(); |
|---|
| 3856 | + |
|---|
| 3812 | 3857 | cRadio tab = GetCurrentTab(); |
|---|
| 3813 | 3858 | |
|---|
| 3814 | 3859 | if (copy.versions[copy.versionindex + 1] == null) |
|---|
| .. | .. |
|---|
| 4118 | 4163 | //copy.Touch(); |
|---|
| 4119 | 4164 | } |
|---|
| 4120 | 4165 | |
|---|
| 4121 | | - cNumberSlider versionField; |
|---|
| 4166 | + cNumberSlider versionSlider; |
|---|
| 4122 | 4167 | |
|---|
| 4123 | 4168 | public void stateChanged(ChangeEvent e) |
|---|
| 4124 | 4169 | { |
|---|
| 4125 | 4170 | // assert(false); |
|---|
| 4126 | | - if (e.getSource() == versionField) |
|---|
| 4171 | + if (e.getSource() == versionSlider) |
|---|
| 4127 | 4172 | { |
|---|
| 4128 | | - int version = versionField.getInteger(); |
|---|
| 4173 | + if (muteSlider) |
|---|
| 4174 | + return; |
|---|
| 4175 | + |
|---|
| 4176 | + int version = versionSlider.getInteger(); |
|---|
| 4129 | 4177 | |
|---|
| 4130 | 4178 | if (copy.versions[version] != null) |
|---|
| 4131 | 4179 | { |
|---|
| .. | .. |
|---|
| 4857 | 4905 | copy.versions = readobj.versions; |
|---|
| 4858 | 4906 | copy.versionindex = readobj.versionindex; |
|---|
| 4859 | 4907 | |
|---|
| 4860 | | - SetUndoStates(); |
|---|
| 4908 | + if (copy.versions == null) |
|---|
| 4909 | + { |
|---|
| 4910 | + copy.versions = new byte[100][]; |
|---|
| 4911 | + copy.versionindex = -1; |
|---|
| 4912 | + } |
|---|
| 4913 | + |
|---|
| 4914 | + //? SetUndoStates(); |
|---|
| 4861 | 4915 | |
|---|
| 4862 | 4916 | ResetModel(); |
|---|
| 4863 | 4917 | copy.HardTouch(); // recompile? |
|---|