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