From d7a17c35c443e2cb6c09eaa3cfeaf590a571faa1 Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Wed, 17 Jul 2019 20:15:40 -0400 Subject: [PATCH] Version slider --- ObjEditor.java | 62 +++++++++++++++++++++++++++++-- GroupEditor.java | 18 ++++++++- Object3D.java | 5 ++ 3 files changed, 79 insertions(+), 6 deletions(-) diff --git a/GroupEditor.java b/GroupEditor.java index 7a750fb..a08dc18 100644 --- a/GroupEditor.java +++ b/GroupEditor.java @@ -60,6 +60,12 @@ this.copy = this.group = group; //selectees = this.group.selectees; + if (copy.versions == null) + { + copy.versions = new byte[100][]; + copy.versionindex = -1; + } + if(ui) SetupUI(objEditor); } @@ -74,6 +80,12 @@ this.copy = this.group = copy; //selectees = this.group.selectees; + if (copy.versions == null) + { + copy.versions = new byte[100][]; + copy.versionindex = -1; + } + SetupMenu2(this); //objEditor); SetupUI2(objEditor); objEditor.SetupUI(true); @@ -834,8 +846,8 @@ oe.treePanel.add(copyOptionsPanel); oe.treePanel.Return(); - cGridBag sliderPane = AddSlider(oe.treePanel, "Version", 0, 10, 0); - versionField = (cNumberSlider)sliderPane.getComponent(1); + cGridBag sliderPane = AddSlider(oe.treePanel, "Version", 0, 0, 0); + versionSlider = (cNumberSlider)sliderPane.getComponent(1); sliderPane.preferredHeight = 1; // mainPanel.setDividerLocation(0.5); //1.0); @@ -3541,6 +3553,8 @@ radio.layout.doClick(); ClearUnpinned(); + Grafreed.Assert(group != null); + Grafreed.Assert(group.selection != null); SetPinStates(group.selection.size() > 0); if (group.selection.size() == 1) EditSelection(false); diff --git a/ObjEditor.java b/ObjEditor.java index 174c859..6e1560f 100644 --- a/ObjEditor.java +++ b/ObjEditor.java @@ -282,6 +282,12 @@ client = inClient; copy = client; + if (copy.versions == null) + { + copy.versions = new byte[100][]; + copy.versionindex = -1; + } + // "this" is not called: SetupUI2(objEditor); } @@ -295,6 +301,12 @@ client = inClient; copy = client; + if (copy.versions == null) + { + copy.versions = new byte[100][]; + copy.versionindex = -1; + } + SetupUI2(callee.GetEditor()); } @@ -327,6 +339,12 @@ copy = localCopy; copy.editWindow = this; + if (copy.versions == null) + { + copy.versions = new byte[100][]; + copy.versionindex = -1; + } + SetupMenu(); //SetupName(objEditor); // new @@ -3731,18 +3749,42 @@ cButton replaceButton; cButton redoButton; + boolean muteSlider; + + int VersionCount() + { + int count = 0; + + for (int i = copy.versions.length; --i >= 0;) + { + if (copy.versions[i] != null) + count++; + } + + return count; + } + void SetUndoStates() { cRadio tab = GetCurrentTab(); restoreButton.setEnabled(copy.versionindex != -1); replaceButton.setEnabled(copy.versionindex != -1); + undoButton.setEnabled(copy.versionindex > 0); redoButton.setEnabled(copy.versions[copy.versionindex + 1] != null); + + muteSlider = true; + versionSlider.setMaximum(VersionCount() - 1); + versionSlider.setInteger(copy.versionindex); + muteSlider = false; } public boolean Undo() { + // Option? + Replace(); + System.err.println("Undo"); cRadio tab = GetCurrentTab(); @@ -3809,6 +3851,9 @@ public void Redo() { + // Option? + Replace(); + cRadio tab = GetCurrentTab(); if (copy.versions[copy.versionindex + 1] == null) @@ -4118,14 +4163,17 @@ //copy.Touch(); } - cNumberSlider versionField; + cNumberSlider versionSlider; public void stateChanged(ChangeEvent e) { // assert(false); - if (e.getSource() == versionField) + if (e.getSource() == versionSlider) { - int version = versionField.getInteger(); + if (muteSlider) + return; + + int version = versionSlider.getInteger(); if (copy.versions[version] != null) { @@ -4857,7 +4905,13 @@ copy.versions = readobj.versions; copy.versionindex = readobj.versionindex; - SetUndoStates(); + if (copy.versions == null) + { + copy.versions = new byte[100][]; + copy.versionindex = -1; + } + + //? SetUndoStates(); ResetModel(); copy.HardTouch(); // recompile? diff --git a/Object3D.java b/Object3D.java index b3a45b6..f8d6c9c 100644 --- a/Object3D.java +++ b/Object3D.java @@ -219,6 +219,8 @@ // o.bRep.support = null; // } o.selection = this.selection; + o.versions = this.versions; + o.versionindex = this.versionindex; if (this.support != null) { @@ -274,6 +276,9 @@ } this.selection = o.selection; + + this.versions = o.versions; + this.versionindex = o.versionindex; // July 2019 if (this.bRep != null) // this.bRep.support = o.transientrep; // this.support = o.support; -- Gitblit v1.6.2