| 
					
				 | 
			
			
				@@ -339,7 +339,7 @@ renderButtonsOn: html 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 TabWidget subclass: #Browser 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	instanceVariableNames: 'selectedPackage selectedClass selectedProtocol selectedMethod commitButton packagesList classesList protocolsList methodsList sourceArea tabsList selectedTab saveButton classButtons methodButtons unsavedChanges renameButton deleteButton commitLocalButton' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	instanceVariableNames: 'selectedPackage selectedClass selectedProtocol selectedMethod packagesList classesList protocolsList methodsList sourceArea tabsList selectedTab saveButton classButtons methodButtons unsavedChanges' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	category: 'IDE'! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 !Browser methodsFor: 'accessing'! 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -555,7 +555,8 @@ compileDefinition 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     self  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	resetClassesList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	updateCategoriesList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	updateClassesList 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	updateClassesList. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    self selectClass: newClass 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 cancelChanges 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -657,7 +658,7 @@ selectTab: aString 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 renameClass 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     | newName | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     newName := self prompt: 'Rename class ', selectedClass name. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    newName notEmpty ifTrue: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (newName notNil and: [newName notEmpty]) ifTrue: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	selectedClass rename: newName. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	self  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		updateClassesList; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -748,6 +749,17 @@ commitPackageToLocalStorage 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           	key := 'smalltalk.packages.' , selectedPackage. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		sourceCode := (Exporter new exportPackage: selectedPackage). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		<localStorage[key] = sourceCode>] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+addNewClass 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	| className | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	className := self prompt: 'New class'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	(className notNil and: [className notEmpty]) ifTrue: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Object subclass: className instanceVariableNames: '' package: self selectedPackage. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          	 self  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			resetClassesList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			updateClassesList. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		self selectClass: (Smalltalk current at: className)] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 !Browser methodsFor: 'initialization'! 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -769,40 +781,37 @@ renderBoxOn: html 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 renderTopPanelOn: html 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    html div  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	class: 'top';  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	with: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	    packagesList := html ul class: 'jt_column browser packages'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	    commitButton := html button  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		class: 'jt_commit'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		title: 'Commit classes in this package to disk'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		onClick: [self commitPackage]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		with: 'Commit'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            commitLocalButton := html button  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		class: 'jt_commit_local'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		title: 'Commit classes in this package to local storage'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		onClick: [self commitPackageToLocalStorage]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		with: 'Local'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            renameButton := html button  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		class: 'jt_rename'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		title: 'Rename package'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		onClick: [self renamePackage]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		with: 'Rename'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            deleteButton := html button  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		class: 'jt_delete'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		title: 'Remove this package from the system'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		onClick: [self removePackage]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		with: 'Remove'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	    classesList := ClassesList on: self. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	    classesList renderOn: html. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	    protocolsList := html ul class: 'jt_column browser protocols'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	    methodsList := html ul class: 'jt_column browser methods'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	    self 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		updateCategoriesList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		updateClassesList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		updateProtocolsList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		updateMethodsList. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	    html div class: 'jt_clear'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	html div  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		class: 'top';  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		with: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			packagesList := html ul class: 'jt_column browser packages'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          		html div class: 'jt_packagesButtons'; with: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				html button  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					title: 'Commit classes in this package to disk'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					onClick: [self commitPackage]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					with: 'Commit'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        			html button  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					title: 'Commit classes in this package to local storage'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					onClick: [self commitPackageToLocalStorage]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					with: 'Local'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        			html button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					title: 'Rename package'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					onClick: [self renamePackage]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					with: 'Rename'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        			html button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					title: 'Remove this package from the system'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					onClick: [self removePackage]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					with: 'Remove']. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			classesList := ClassesList on: self. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			classesList renderOn: html. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			protocolsList := html ul class: 'jt_column browser protocols'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			methodsList := html ul class: 'jt_column browser methods'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			self 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				updateCategoriesList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				updateClassesList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				updateProtocolsList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				updateMethodsList. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			html div class: 'jt_clear'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 renderTabsOn: html 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -930,6 +939,10 @@ updateTabsList 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 updateSourceAndButtons 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	self disableSaveButton. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	classButtons contents: [:html | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		html button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			title: 'Create a new class'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			onClick: [self addNewClass]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			with: 'New class'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		html button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			with: 'Rename class'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			onClick: [self renameClass]. 
			 |