This commit is contained in:
Doug Fritz 2011-04-18 17:44:40 -07:00
commit 64b80ee28d
3 changed files with 28 additions and 27 deletions

View File

@ -31,9 +31,9 @@
prettyPrint(); prettyPrint();
var fizzyText = new FizzyText("dat.gui"); var fizzyText = new FizzyText("dat.gui");
var gui = new DAT.GUI(); var gui = new DAT.GUI();
// Text field // Text field
gui.add(fizzyText, "message"); gui.add(fizzyText, "message");

View File

@ -116,7 +116,7 @@ DAT.GUI.ControllerNumber = function() {
numberField.addEventListener('mousewheel', function(e) { numberField.addEventListener('mousewheel', function(e) {
e.preventDefault(); e.preventDefault();
_this.setValue(_this.getValue() + Math.abs(e.wheelDeltaY) / e.wheelDeltaY * step); _this.setValue(_this.getValue() + Math.abs(e.wheelDeltaY) / e.wheelDeltaY * _this.getStep());
return false; return false;
}, false); }, false);
@ -140,11 +140,11 @@ DAT.GUI.ControllerNumber = function() {
_this.setValue(newVal); _this.setValue(newVal);
break; break;
case 38: // up case 38: // up
newVal = _this.getValue() + step; newVal = _this.getValue() + _this.getStep();
_this.setValue(newVal); _this.setValue(newVal);
break; break;
case 40: // down case 40: // down
newVal = _this.getValue() - step; newVal = _this.getValue() - _this.getStep();
_this.setValue(newVal); _this.setValue(newVal);
break; break;
} }
@ -192,7 +192,7 @@ DAT.GUI.ControllerNumber = function() {
draggedNumberField = true; draggedNumberField = true;
e.preventDefault(); e.preventDefault();
var newVal = _this.getValue() + dy * step; var newVal = _this.getValue() + dy * _this.getStep();
_this.setValue(newVal); _this.setValue(newVal);
return false; return false;

View File

@ -6,6 +6,10 @@ DAT.GUI = function(parameters) {
parameters = {}; parameters = {};
} }
if (parameters.height == undefined) {
parameters.height = 300;
}
var MIN_WIDTH = 240; var MIN_WIDTH = 240;
var MAX_WIDTH = 500; var MAX_WIDTH = 500;
@ -19,11 +23,9 @@ DAT.GUI = function(parameters) {
// Sum total of heights of controllers in this gui // Sum total of heights of controllers in this gui
var controllerHeight; var controllerHeight;
var curControllerContainerHeight = 0;
var _this = this; var _this = this;
var open = false; var open = true;
var width = 280; var width = 280;
// Prevents checkForOverflow bug in which loaded gui appearance // Prevents checkForOverflow bug in which loaded gui appearance
@ -45,9 +47,10 @@ DAT.GUI = function(parameters) {
this.domElement.setAttribute('class', 'guidat'); this.domElement.setAttribute('class', 'guidat');
this.domElement.style.width = width + 'px'; this.domElement.style.width = width + 'px';
var curControllerContainerHeight = parameters.height;
var controllerContainer = document.createElement('div'); var controllerContainer = document.createElement('div');
controllerContainer.setAttribute('class', 'guidat-controllers'); controllerContainer.setAttribute('class', 'guidat-controllers');
controllerContainer.style.height = '0px'; controllerContainer.style.height = curControllerContainerHeight + 'px';
// Firefox hack to prevent horizontal scrolling // Firefox hack to prevent horizontal scrolling
controllerContainer.addEventListener('DOMMouseScroll', function(e) { controllerContainer.addEventListener('DOMMouseScroll', function(e) {
@ -71,11 +74,10 @@ DAT.GUI = function(parameters) {
}, false); }, false);
var toggleButton = document.createElement('a'); var toggleButton = document.createElement('a');
toggleButton.setAttribute('class', 'guidat-toggle'); toggleButton.setAttribute('class', 'guidat-toggle');
toggleButton.setAttribute('href', '#'); toggleButton.setAttribute('href', '#');
toggleButton.innerHTML = openString; toggleButton.innerHTML = open ? closeString : openString;
var toggleDragged = false; var toggleDragged = false;
var dragDisplacementY = 0; var dragDisplacementY = 0;
@ -300,7 +302,7 @@ DAT.GUI = function(parameters) {
return; return;
} }
var args = [this]; // Set first arg (parent) to this var args = [this]; // Set first arg (parent) to this
for (var j = 0; j < arguments.length; j++) { for (var j = 0; j < arguments.length; j++) {
args.push(arguments[j]); args.push(arguments[j]);
} }
@ -357,13 +359,10 @@ DAT.GUI = function(parameters) {
'function': DAT.GUI.ControllerFunction 'function': DAT.GUI.ControllerFunction
}; };
this.reset = function() { this.reset = function() {
// TODO ... Set all values back to their initials. // TODO ... Set all values back to their initials.
} }
// DAT.GUI ... DAT.GUI
this.toggle = function() { this.toggle = function() {
open ? this.close() : this.open(); open ? this.close() : this.open();
}; };
@ -373,6 +372,7 @@ DAT.GUI = function(parameters) {
resizeTo = openHeight; resizeTo = openHeight;
clearTimeout(resizeTimeout); clearTimeout(resizeTimeout);
beginResize(); beginResize();
adaptToScrollbar();
open = true; open = true;
} }
@ -381,6 +381,7 @@ DAT.GUI = function(parameters) {
resizeTo = 0; resizeTo = 0;
clearTimeout(resizeTimeout); clearTimeout(resizeTimeout);
beginResize(); beginResize();
adaptToScrollbar();
open = false; open = false;
} }
@ -396,13 +397,12 @@ DAT.GUI = function(parameters) {
var beginResize = function() { var beginResize = function() {
curControllerContainerHeight = controllerContainer.offsetHeight;
curControllerContainerHeight += (resizeTo - curControllerContainerHeight) curControllerContainerHeight += (resizeTo - curControllerContainerHeight)
* 0.6; * 0.6;
if (Math.abs(curControllerContainerHeight - resizeTo) < 1) { if (Math.abs(curControllerContainerHeight - resizeTo) < 1) {
curControllerContainerHeight = resizeTo; curControllerContainerHeight = resizeTo;
adaptToScrollbar();
} else { } else {
resizeTimeout = setTimeout(beginResize, 1000 / 30); resizeTimeout = setTimeout(beginResize, 1000 / 30);
} }
@ -413,15 +413,14 @@ DAT.GUI = function(parameters) {
} }
var adaptToScrollbar = function() { var adaptToScrollbar = function() {
// Clears lingering slider column // Clears lingering scrollbar column
_this.domElement.style.width = (width + 1) + 'px'; _this.domElement.style.width = (width - 1) + 'px';
setTimeout(function() { setTimeout(function() {
_this.domElement.style.width = width + 'px'; _this.domElement.style.width = width + 'px';
}, 1); }, 1);
}; };
// Load saved appearance: // Load saved appearance:
if (DAT.GUI.guiIndex < DAT.GUI.savedAppearanceVars.length) { if (DAT.GUI.guiIndex < DAT.GUI.savedAppearanceVars.length) {
@ -453,10 +452,12 @@ DAT.GUI = function(parameters) {
DAT.GUI.allGuis.push(this); DAT.GUI.allGuis.push(this);
// Add hide listener if this is the first DAT.GUI. // Add hide listener if this is the first DAT.GUI.
if (DAT.GUI.allGuis.length == 1) { if (DAT.GUI.allGuis.length == 1) {
window.addEventListener('keyup', function(e) { window.addEventListener('keyup', function(e) {
// Hide on 'H' // Hide on 'H'
if (e.keyCode == 72) { if (!DAT.GUI.supressHotKeys && e.keyCode == 72) {
DAT.GUI.toggleHide(); DAT.GUI.toggleHide();
} }
}, false); }, false);
@ -482,6 +483,7 @@ DAT.GUI.autoPlaceContainer = null;
DAT.GUI.allControllers = []; DAT.GUI.allControllers = [];
DAT.GUI.allGuis = []; DAT.GUI.allGuis = [];
DAT.GUI.supressHotKeys = false;
DAT.GUI.toggleHide = function() { DAT.GUI.toggleHide = function() {
if (DAT.GUI.hidden) { if (DAT.GUI.hidden) {
@ -532,8 +534,7 @@ DAT.GUI.savedAppearanceVars = [];
DAT.GUI.getSaveString = function() { DAT.GUI.getSaveString = function() {
var vals = [], var vals = [], i;
i;
vals.push(DAT.GUI.allGuis.length); vals.push(DAT.GUI.allGuis.length);
vals.push(document.body.scrollTop); vals.push(document.body.scrollTop);
@ -678,19 +679,19 @@ DAT.GUI.extendController = function(clazz) {
DAT.GUI.addClass = function(domElement, className) { DAT.GUI.addClass = function(domElement, className) {
if (DAT.GUI.hasClass(domElement, className)) return; if (DAT.GUI.hasClass(domElement, className)) return;
domElement.className += ' ' + className; domElement.className += ' ' + className;
}; }
DAT.GUI.hasClass = function(domElement, className) { DAT.GUI.hasClass = function(domElement, className) {
return domElement.className.indexOf(className) != -1; return domElement.className.indexOf(className) != -1;
}; }
DAT.GUI.removeClass = function(domElement, className) { DAT.GUI.removeClass = function(domElement, className) {
var reg = new RegExp(' ' + className, 'g'); var reg = new RegExp(' ' + className, 'g');
domElement.className = domElement.className.replace(reg, ''); domElement.className = domElement.className.replace(reg, '');
}; }
if (DAT.GUI.getVarFromURL('saveString') != null) { if (DAT.GUI.getVarFromURL('saveString') != null) {
DAT.GUI.load(DAT.GUI.getVarFromURL('saveString')); DAT.GUI.load(DAT.GUI.getVarFromURL('saveString'));
} }
window["DAT.GUI"] = DAT.GUI; window['DAT'] = DAT;