| .. | .. | 
|---|
| 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? | 
|---|