Browse Source

Editor: Saving theme in LocalStorage.

Mr.doob 11 years ago
parent
commit
4c0431b6ad
5 changed files with 45 additions and 4 deletions
  1. 3 0
      editor/index.html
  2. 1 0
      editor/js/Editor.js
  3. 5 4
      editor/js/Loader.js
  4. 34 0
      editor/js/LocalStorage.js
  5. 2 0
      editor/js/Menubar.View.js

+ 3 - 0
editor/index.html

@@ -48,6 +48,7 @@
 
 		<script src="js/Editor.js"></script>
 		<script src="js/Loader.js"></script>
+		<script src="js/LocalStorage.js"></script>
 		<script src="js/Menubar.js"></script>
 		<script src="js/Menubar.File.js"></script>
 		<script src="js/Menubar.Edit.js"></script>
@@ -91,6 +92,8 @@
 			var sidebar = new Sidebar( editor ).setId( 'sidebar' );
 			document.body.appendChild( sidebar.dom );
 
+			editor.setTheme( editor.localStorage.getKey( 'theme' ) );
+
 			//
 
 			document.addEventListener( 'dragover', function ( event ) {

+ 1 - 0
editor/js/Editor.js

@@ -38,6 +38,7 @@ var Editor = function () {
 	};
 
 	this.loader = new Loader( this );
+	this.localStorage = new LocalStorage();
 
 	this.scene = new THREE.Scene();
 	this.sceneHelpers = new THREE.Scene();

+ 5 - 4
editor/js/Loader.js

@@ -5,10 +5,12 @@ var Loader = function ( editor ) {
 
 	this.loadLocalStorage = function () {
 
-		if ( localStorage.threejsEditor !== undefined ) {
+		var state = editor.localStorage.getKey( 'state' );
+
+		if ( state !== undefined ) {
 
 			var loader = new THREE.ObjectLoader();
-			var scene = loader.parse( JSON.parse( localStorage.threejsEditor ) );
+			var scene = loader.parse( state );
 
 			editor.setScene( scene );
 
@@ -25,8 +27,7 @@ var Loader = function ( editor ) {
 
 		timeout = setTimeout( function () {
 
-			localStorage.threejsEditor = JSON.stringify( exporter.parse( editor.scene ) );
-			console.log( '[' + /\d\d\:\d\d\:\d\d/.exec( new Date() )[ 0 ] + ']', 'Saved state to LocalStorage.' );
+			editor.localStorage.setKey( 'state', exporter.parse( editor.scene ) );
 
 		}, 3000 );
 

+ 34 - 0
editor/js/LocalStorage.js

@@ -0,0 +1,34 @@
+var LocalStorage = function () {
+
+	var name = 'threejs-editor';
+
+	var storage = {
+		theme: 'css/light.css'
+	};
+
+	if ( localStorage[ name ] !== undefined ) {
+
+		storage = JSON.parse( localStorage[ name ] );
+
+	}
+
+	return {
+		getKey: function ( key ) {
+
+			return storage[ key ];
+
+		},
+
+		setKey: function ( key, value ) {
+
+			storage[ key ] = value;
+
+			localStorage[ name ] = JSON.stringify( storage );
+
+			console.log( '[' + /\d\d\:\d\d\:\d\d/.exec( new Date() )[ 0 ] + ']', 'Saved state to LocalStorage.' );
+
+		}
+
+	}
+
+};

+ 2 - 0
editor/js/Menubar.View.js

@@ -27,6 +27,7 @@ Menubar.View = function ( editor ) {
 	option.onClick( function () {
 
 		editor.setTheme( 'css/light.css' );
+		editor.localStorage.setKey( 'theme', 'css/light.css' );
 
 	} );
 	options.add( option );
@@ -39,6 +40,7 @@ Menubar.View = function ( editor ) {
 	option.onClick( function () {
 
 		editor.setTheme( 'css/dark.css' );
+		editor.localStorage.setKey( 'theme', 'css/dark.css' );
 
 	} );
 	options.add( option );