Просмотр исходного кода

Implementation of Workspace plus refactoring to prepare the terrain for making tools work with local and/or remote environments

Sebastian Sastre 11 лет назад
Родитель
Сommit
f43fc4cf56
3 измененных файлов с 371 добавлено и 0 удалено
  1. 132 0
      js/Helios-Workspace.deploy.js
  2. 172 0
      js/Helios-Workspace.js
  3. 67 0
      st/Helios-Workspace.st

+ 132 - 0
js/Helios-Workspace.deploy.js

@@ -0,0 +1,132 @@
+smalltalk.addPackage('Helios-Workspace', {});
+smalltalk.addClass('HLWorkspaceModel', smalltalk.Object, ['announcer', 'environment'], 'Helios-Workspace');
+smalltalk.addMethod(
+"_announcer",
+smalltalk.method({
+selector: "announcer",
+fn: function (){
+var self=this;
+var $1;
+if(($receiver = self["@announcer"]) == nil || $receiver == undefined){
+$1=smalltalk.send(self,"_initializeAnnouncer",[]);
+} else {
+$1=self["@announcer"];
+};
+return $1;
+}
+}),
+smalltalk.HLWorkspaceModel);
+
+smalltalk.addMethod(
+"_environment",
+smalltalk.method({
+selector: "environment",
+fn: function (){
+var self=this;
+var $1;
+if(($receiver = self["@environment"]) == nil || $receiver == undefined){
+$1=smalltalk.send(self,"_initializeEnvironment",[]);
+} else {
+$1=self["@environment"];
+};
+return $1;
+}
+}),
+smalltalk.HLWorkspaceModel);
+
+smalltalk.addMethod(
+"_environment_",
+smalltalk.method({
+selector: "environment:",
+fn: function (anEnvironment){
+var self=this;
+self["@environment"]=anEnvironment;
+return self}
+}),
+smalltalk.HLWorkspaceModel);
+
+smalltalk.addMethod(
+"_initializeAnnouncer",
+smalltalk.method({
+selector: "initializeAnnouncer",
+fn: function (){
+var self=this;
+var $1;
+self["@announcer"]=smalltalk.send((smalltalk.Announcer || Announcer),"_new",[]);
+$1=self["@announcer"];
+return $1;
+}
+}),
+smalltalk.HLWorkspaceModel);
+
+smalltalk.addMethod(
+"_initializeEnvironment",
+smalltalk.method({
+selector: "initializeEnvironment",
+fn: function (){
+var self=this;
+var $1;
+self["@environment"]=smalltalk.send((smalltalk.Smalltalk || Smalltalk),"_current",[]);
+$1=self["@environment"];
+return $1;
+}
+}),
+smalltalk.HLWorkspaceModel);
+
+smalltalk.addMethod(
+"_onKeyDown_",
+smalltalk.method({
+selector: "onKeyDown:",
+fn: function (anEvent){
+var self=this;
+if(anEvent.ctrlKey) {
+		if(anEvent.keyCode === 80) { //ctrl+p
+			self._printIt();
+			anEvent.preventDefault();
+			return false;
+		}
+		if(anEvent.keyCode === 68) { //ctrl+d
+			self._doIt();
+			anEvent.preventDefault();
+			return false;
+		}
+		if(anEvent.keyCode === 73) { //ctrl+i
+			self._inspectIt();
+			anEvent.preventDefault();
+			return false;
+		}
+	};
+;
+return self}
+}),
+smalltalk.HLWorkspaceModel);
+
+smalltalk.addMethod(
+"_subscribe_",
+smalltalk.method({
+selector: "subscribe:",
+fn: function (aWidget){
+var self=this;
+smalltalk.send(aWidget,"_subscribeTo_",[smalltalk.send(self,"_announcer",[])]);
+return self}
+}),
+smalltalk.HLWorkspaceModel);
+
+
+smalltalk.addMethod(
+"_on_",
+smalltalk.method({
+selector: "on:",
+fn: function (anEnvironment){
+var self=this;
+var $2,$3,$1;
+$2=smalltalk.send(self,"_new",[]);
+smalltalk.send($2,"_environment_",[anEnvironment]);
+$3=smalltalk.send($2,"_yourself",[]);
+$1=$3;
+return $1;
+}
+}),
+smalltalk.HLWorkspaceModel.klass);
+
+

+ 172 - 0
js/Helios-Workspace.js

@@ -0,0 +1,172 @@
+smalltalk.addPackage('Helios-Workspace', {});
+smalltalk.addClass('HLWorkspaceModel', smalltalk.Object, ['announcer', 'environment'], 'Helios-Workspace');
+smalltalk.addMethod(
+"_announcer",
+smalltalk.method({
+selector: "announcer",
+category: 'accessing',
+fn: function (){
+var self=this;
+var $1;
+if(($receiver = self["@announcer"]) == nil || $receiver == undefined){
+$1=smalltalk.send(self,"_initializeAnnouncer",[]);
+} else {
+$1=self["@announcer"];
+};
+return $1;
+},
+args: [],
+source: "announcer\x0a\x09^ announcer ifNil: [ self initializeAnnouncer ]",
+messageSends: ["ifNil:", "initializeAnnouncer"],
+referencedClasses: []
+}),
+smalltalk.HLWorkspaceModel);
+
+smalltalk.addMethod(
+"_environment",
+smalltalk.method({
+selector: "environment",
+category: 'accessing',
+fn: function (){
+var self=this;
+var $1;
+if(($receiver = self["@environment"]) == nil || $receiver == undefined){
+$1=smalltalk.send(self,"_initializeEnvironment",[]);
+} else {
+$1=self["@environment"];
+};
+return $1;
+},
+args: [],
+source: "environment\x0a\x09^ environment ifNil: [ self initializeEnvironment]",
+messageSends: ["ifNil:", "initializeEnvironment"],
+referencedClasses: []
+}),
+smalltalk.HLWorkspaceModel);
+
+smalltalk.addMethod(
+"_environment_",
+smalltalk.method({
+selector: "environment:",
+category: 'accessing',
+fn: function (anEnvironment){
+var self=this;
+self["@environment"]=anEnvironment;
+return self},
+args: ["anEnvironment"],
+source: "environment: anEnvironment\x0a\x09environment := anEnvironment",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLWorkspaceModel);
+
+smalltalk.addMethod(
+"_initializeAnnouncer",
+smalltalk.method({
+selector: "initializeAnnouncer",
+category: 'initialization',
+fn: function (){
+var self=this;
+var $1;
+self["@announcer"]=smalltalk.send((smalltalk.Announcer || Announcer),"_new",[]);
+$1=self["@announcer"];
+return $1;
+},
+args: [],
+source: "initializeAnnouncer\x0a\x09^ announcer := Announcer new",
+messageSends: ["new"],
+referencedClasses: ["Announcer"]
+}),
+smalltalk.HLWorkspaceModel);
+
+smalltalk.addMethod(
+"_initializeEnvironment",
+smalltalk.method({
+selector: "initializeEnvironment",
+category: 'initialization',
+fn: function (){
+var self=this;
+var $1;
+self["@environment"]=smalltalk.send((smalltalk.Smalltalk || Smalltalk),"_current",[]);
+$1=self["@environment"];
+return $1;
+},
+args: [],
+source: "initializeEnvironment\x0a\x09^ environment := Smalltalk current ",
+messageSends: ["current"],
+referencedClasses: ["Smalltalk"]
+}),
+smalltalk.HLWorkspaceModel);
+
+smalltalk.addMethod(
+"_onKeyDown_",
+smalltalk.method({
+selector: "onKeyDown:",
+category: 'reactions',
+fn: function (anEvent){
+var self=this;
+if(anEvent.ctrlKey) {
+		if(anEvent.keyCode === 80) { //ctrl+p
+			self._printIt();
+			anEvent.preventDefault();
+			return false;
+		}
+		if(anEvent.keyCode === 68) { //ctrl+d
+			self._doIt();
+			anEvent.preventDefault();
+			return false;
+		}
+		if(anEvent.keyCode === 73) { //ctrl+i
+			self._inspectIt();
+			anEvent.preventDefault();
+			return false;
+		}
+	};
+;
+return self},
+args: ["anEvent"],
+source: "onKeyDown: anEvent\x0a\x0a\x09<if(anEvent.ctrlKey) {\x0a\x09\x09if(anEvent.keyCode === 80) { //ctrl+p\x0a\x09\x09\x09self._printIt();\x0a\x09\x09\x09anEvent.preventDefault();\x0a\x09\x09\x09return false;\x0a\x09\x09}\x0a\x09\x09if(anEvent.keyCode === 68) { //ctrl+d\x0a\x09\x09\x09self._doIt();\x0a\x09\x09\x09anEvent.preventDefault();\x0a\x09\x09\x09return false;\x0a\x09\x09}\x0a\x09\x09if(anEvent.keyCode === 73) { //ctrl+i\x0a\x09\x09\x09self._inspectIt();\x0a\x09\x09\x09anEvent.preventDefault();\x0a\x09\x09\x09return false;\x0a\x09\x09}\x0a\x09}>",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.HLWorkspaceModel);
+
+smalltalk.addMethod(
+"_subscribe_",
+smalltalk.method({
+selector: "subscribe:",
+category: 'actions',
+fn: function (aWidget){
+var self=this;
+smalltalk.send(aWidget,"_subscribeTo_",[smalltalk.send(self,"_announcer",[])]);
+return self},
+args: ["aWidget"],
+source: "subscribe: aWidget\x0a\x09aWidget subscribeTo: self announcer",
+messageSends: ["subscribeTo:", "announcer"],
+referencedClasses: []
+}),
+smalltalk.HLWorkspaceModel);
+
+
+smalltalk.addMethod(
+"_on_",
+smalltalk.method({
+selector: "on:",
+category: 'actions',
+fn: function (anEnvironment){
+var self=this;
+var $2,$3,$1;
+$2=smalltalk.send(self,"_new",[]);
+smalltalk.send($2,"_environment_",[anEnvironment]);
+$3=smalltalk.send($2,"_yourself",[]);
+$1=$3;
+return $1;
+},
+args: ["anEnvironment"],
+source: "on: anEnvironment\x0a\x0a\x09^ self new\x0a    \x09environment: anEnvironment;\x0a        yourself",
+messageSends: ["environment:", "new", "yourself"],
+referencedClasses: []
+}),
+smalltalk.HLWorkspaceModel.klass);
+
+

+ 67 - 0
st/Helios-Workspace.st

@@ -0,0 +1,67 @@
+Smalltalk current createPackage: 'Helios-Workspace' properties: #{}!
+Object subclass: #HLWorkspaceModel
+	instanceVariableNames: 'announcer environment'
+	package: 'Helios-Workspace'!
+
+!HLWorkspaceModel methodsFor: 'accessing'!
+
+announcer
+	^ announcer ifNil: [ self initializeAnnouncer ]
+!
+
+environment
+	^ environment ifNil: [ self initializeEnvironment]
+!
+
+environment: anEnvironment
+	environment := anEnvironment
+! !
+
+!HLWorkspaceModel methodsFor: 'actions'!
+
+subscribe: aWidget
+	aWidget subscribeTo: self announcer
+! !
+
+!HLWorkspaceModel methodsFor: 'initialization'!
+
+initializeAnnouncer
+	^ announcer := Announcer new
+!
+
+initializeEnvironment
+	^ environment := Smalltalk current
+! !
+
+!HLWorkspaceModel methodsFor: 'reactions'!
+
+onKeyDown: anEvent
+
+	<if(anEvent.ctrlKey) {
+		if(anEvent.keyCode === 80) { //ctrl+p
+			self._printIt();
+			anEvent.preventDefault();
+			return false;
+		}
+		if(anEvent.keyCode === 68) { //ctrl+d
+			self._doIt();
+			anEvent.preventDefault();
+			return false;
+		}
+		if(anEvent.keyCode === 73) { //ctrl+i
+			self._inspectIt();
+			anEvent.preventDefault();
+			return false;
+		}
+	}>
+! !
+
+!HLWorkspaceModel class methodsFor: 'actions'!
+
+on: anEnvironment
+
+	^ self new
+    	environment: anEnvironment;
+        yourself
+! !
+