Browse Source

Terminal service for alert/confirm/prompt.

Extracted from PlatformInterface.
Herbert Vojčík 9 years ago
parent
commit
963c3bd3bc
4 changed files with 385 additions and 72 deletions
  1. 159 0
      src/Platform-Browser.js
  2. 34 0
      src/Platform-Browser.st
  3. 150 56
      src/Platform-Services.js
  4. 42 16
      src/Platform-Services.st

+ 159 - 0
src/Platform-Browser.js

@@ -190,6 +190,165 @@ messageSends: ["prompt:default:"]
 $globals.BrowserInterface);
 
 
+
+$core.addClass('BrowserTerminal', $globals.Object, [], 'Platform-Browser');
+//>>excludeStart("ide", pragmas.excludeIdeData);
+$globals.BrowserTerminal.comment="I am `Terminal` service implementation for browser.";
+//>>excludeEnd("ide");
+$core.addMethod(
+$core.method({
+selector: "alert:",
+protocol: 'actions',
+fn: function (aString){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1;
+$1=$recv(window)._alert_(aString);
+return $1;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"alert:",{aString:aString},$globals.BrowserTerminal)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aString"],
+source: "alert: aString\x0a\x09^ window alert: aString",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["alert:"]
+}),
+$globals.BrowserTerminal);
+
+$core.addMethod(
+$core.method({
+selector: "confirm:",
+protocol: 'actions',
+fn: function (aString){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1;
+$1=$recv(window)._confirm_(aString);
+return $1;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"confirm:",{aString:aString},$globals.BrowserTerminal)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aString"],
+source: "confirm: aString\x0a\x09^ window confirm: aString",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["confirm:"]
+}),
+$globals.BrowserTerminal);
+
+$core.addMethod(
+$core.method({
+selector: "prompt:",
+protocol: 'actions',
+fn: function (aString){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1;
+$1=$recv(window)._prompt_(aString);
+return $1;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"prompt:",{aString:aString},$globals.BrowserTerminal)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aString"],
+source: "prompt: aString\x0a\x09^ window prompt: aString",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["prompt:"]
+}),
+$globals.BrowserTerminal);
+
+$core.addMethod(
+$core.method({
+selector: "prompt:default:",
+protocol: 'actions',
+fn: function (aString,defaultString){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1;
+$1=$recv(window)._prompt_default_(aString,defaultString);
+return $1;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"prompt:default:",{aString:aString,defaultString:defaultString},$globals.BrowserTerminal)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aString", "defaultString"],
+source: "prompt: aString default: defaultString\x0a\x09^ window prompt: aString default: defaultString",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["prompt:default:"]
+}),
+$globals.BrowserTerminal);
+
+
+$core.addMethod(
+$core.method({
+selector: "initialize",
+protocol: 'testing',
+fn: function (){
+var self=this;
+function $Terminal(){return $globals.Terminal||(typeof Terminal=="undefined"?nil:Terminal)}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1;
+$1=self._isFeasible();
+if($core.assert($1)){
+$recv($Terminal())._registerIfNone_(self._new());
+};
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.BrowserTerminal.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "initialize\x0a\x09self isFeasible ifTrue: [ Terminal registerIfNone: self new ]",
+referencedClasses: ["Terminal"],
+//>>excludeEnd("ide");
+messageSends: ["ifTrue:", "isFeasible", "registerIfNone:", "new"]
+}),
+$globals.BrowserTerminal.klass);
+
+$core.addMethod(
+$core.method({
+selector: "isFeasible",
+protocol: 'testing',
+fn: function (){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+return typeof window !== "undefined";
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"isFeasible",{},$globals.BrowserTerminal.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "isFeasible\x0a<return typeof window !== \x22undefined\x22>",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
+}),
+$globals.BrowserTerminal.klass);
+
 $core.addMethod(
 $core.method({
 selector: "postMessageTo:",

+ 34 - 0
src/Platform-Browser.st

@@ -52,6 +52,40 @@ isAvailable
 <return typeof window !!== "undefined" && typeof jQuery !!== "undefined">
 ! !
 
+Object subclass: #BrowserTerminal
+	instanceVariableNames: ''
+	package: 'Platform-Browser'!
+!BrowserTerminal commentStamp!
+I am `Terminal` service implementation for browser.!
+
+!BrowserTerminal methodsFor: 'actions'!
+
+alert: aString
+	^ window alert: aString
+!
+
+confirm: aString
+	^ window confirm: aString
+!
+
+prompt: aString
+	^ window prompt: aString
+!
+
+prompt: aString default: defaultString
+	^ window prompt: aString default: defaultString
+! !
+
+!BrowserTerminal class methodsFor: 'testing'!
+
+initialize
+	self isFeasible ifTrue: [ Terminal registerIfNone: self new ]
+!
+
+isFeasible
+<return typeof window !!== "undefined">
+! !
+
 !Object methodsFor: '*Platform-Browser'!
 
 postMessageTo: aFrame

+ 150 - 56
src/Platform-Services.js

@@ -335,12 +335,12 @@ selector: "alert:",
 protocol: 'actions',
 fn: function (aString){
 var self=this;
-function $PlatformInterface(){return $globals.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
+function $Terminal(){return $globals.Terminal||(typeof Terminal=="undefined"?nil:Terminal)}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 var $1;
-$1=$recv($PlatformInterface())._alert_(aString);
+$1=$recv($Terminal())._alert_(aString);
 return $1;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"alert:",{aString:aString},$globals.InterfacingObject)});
@@ -348,8 +348,8 @@ return $1;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aString"],
-source: "alert: aString\x0a\x09^ PlatformInterface alert: aString",
-referencedClasses: ["PlatformInterface"],
+source: "alert: aString\x0a\x09^ Terminal alert: aString",
+referencedClasses: ["Terminal"],
 //>>excludeEnd("ide");
 messageSends: ["alert:"]
 }),
@@ -361,12 +361,12 @@ selector: "confirm:",
 protocol: 'actions',
 fn: function (aString){
 var self=this;
-function $PlatformInterface(){return $globals.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
+function $Terminal(){return $globals.Terminal||(typeof Terminal=="undefined"?nil:Terminal)}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 var $1;
-$1=$recv($PlatformInterface())._confirm_(aString);
+$1=$recv($Terminal())._confirm_(aString);
 return $1;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"confirm:",{aString:aString},$globals.InterfacingObject)});
@@ -374,8 +374,8 @@ return $1;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aString"],
-source: "confirm: aString\x0a\x09^ PlatformInterface confirm: aString",
-referencedClasses: ["PlatformInterface"],
+source: "confirm: aString\x0a\x09^ Terminal confirm: aString",
+referencedClasses: ["Terminal"],
 //>>excludeEnd("ide");
 messageSends: ["confirm:"]
 }),
@@ -387,12 +387,12 @@ selector: "prompt:",
 protocol: 'actions',
 fn: function (aString){
 var self=this;
-function $PlatformInterface(){return $globals.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
+function $Terminal(){return $globals.Terminal||(typeof Terminal=="undefined"?nil:Terminal)}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 var $1;
-$1=$recv($PlatformInterface())._prompt_(aString);
+$1=$recv($Terminal())._prompt_(aString);
 return $1;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"prompt:",{aString:aString},$globals.InterfacingObject)});
@@ -400,8 +400,8 @@ return $1;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aString"],
-source: "prompt: aString\x0a\x09^ PlatformInterface prompt: aString",
-referencedClasses: ["PlatformInterface"],
+source: "prompt: aString\x0a\x09^ Terminal prompt: aString",
+referencedClasses: ["Terminal"],
 //>>excludeEnd("ide");
 messageSends: ["prompt:"]
 }),
@@ -413,12 +413,12 @@ selector: "prompt:default:",
 protocol: 'actions',
 fn: function (aString,defaultString){
 var self=this;
-function $PlatformInterface(){return $globals.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
+function $Terminal(){return $globals.Terminal||(typeof Terminal=="undefined"?nil:Terminal)}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 var $1;
-$1=$recv($PlatformInterface())._prompt_default_(aString,defaultString);
+$1=$recv($Terminal())._prompt_default_(aString,defaultString);
 return $1;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"prompt:default:",{aString:aString,defaultString:defaultString},$globals.InterfacingObject)});
@@ -426,8 +426,8 @@ return $1;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aString", "defaultString"],
-source: "prompt: aString default: defaultString\x0a\x09^ PlatformInterface prompt: aString default: defaultString",
-referencedClasses: ["PlatformInterface"],
+source: "prompt: aString default: defaultString\x0a\x09^ Terminal prompt: aString default: defaultString",
+referencedClasses: ["Terminal"],
 //>>excludeEnd("ide");
 messageSends: ["prompt:default:"]
 }),
@@ -1549,16 +1549,13 @@ selector: "alert:",
 protocol: 'actions',
 fn: function (aString){
 var self=this;
+function $Terminal(){return $globals.Terminal||(typeof Terminal=="undefined"?nil:Terminal)}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $2,$1,$receiver;
-$2=self["@worker"];
-if(($receiver = $2) == null || $receiver.isNil){
-$1=self._error_("alert: not available");
-} else {
-$1=$recv(self["@worker"])._alert_(aString);
-};
+var $1;
+self._deprecatedAPI_("Use Terminal alert:");
+$1=$recv($Terminal())._alert_(aString);
 return $1;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"alert:",{aString:aString},$globals.PlatformInterface.klass)});
@@ -1566,10 +1563,10 @@ return $1;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aString"],
-source: "alert: aString\x0a\x09^ worker\x0a\x09\x09ifNotNil: [ worker alert: aString ]\x0a\x09\x09ifNil: [ self error: 'alert: not available' ]",
-referencedClasses: [],
+source: "alert: aString\x0a\x09self deprecatedAPI: 'Use Terminal alert:'.\x0a\x09^ Terminal alert: aString",
+referencedClasses: ["Terminal"],
 //>>excludeEnd("ide");
-messageSends: ["ifNotNil:ifNil:", "alert:", "error:"]
+messageSends: ["deprecatedAPI:", "alert:"]
 }),
 $globals.PlatformInterface.klass);
 
@@ -1579,16 +1576,13 @@ selector: "confirm:",
 protocol: 'actions',
 fn: function (aString){
 var self=this;
+function $Terminal(){return $globals.Terminal||(typeof Terminal=="undefined"?nil:Terminal)}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $2,$1,$receiver;
-$2=self["@worker"];
-if(($receiver = $2) == null || $receiver.isNil){
-$1=self._error_("confirm: not available");
-} else {
-$1=$recv(self["@worker"])._confirm_(aString);
-};
+var $1;
+self._deprecatedAPI_("Use Terminal confirm:");
+$1=$recv($Terminal())._confirm_(aString);
 return $1;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"confirm:",{aString:aString},$globals.PlatformInterface.klass)});
@@ -1596,10 +1590,10 @@ return $1;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aString"],
-source: "confirm: aString\x0a\x09^ worker\x0a\x09\x09ifNotNil: [ worker confirm: aString ]\x0a\x09\x09ifNil: [ self error: 'confirm: not available' ]",
-referencedClasses: [],
+source: "confirm: aString\x0a\x09self deprecatedAPI: 'Use Terminal confirm:'.\x0a\x09^ Terminal confirm: aString",
+referencedClasses: ["Terminal"],
 //>>excludeEnd("ide");
-messageSends: ["ifNotNil:ifNil:", "confirm:", "error:"]
+messageSends: ["deprecatedAPI:", "confirm:"]
 }),
 $globals.PlatformInterface.klass);
 
@@ -1740,16 +1734,13 @@ selector: "prompt:",
 protocol: 'actions',
 fn: function (aString){
 var self=this;
+function $Terminal(){return $globals.Terminal||(typeof Terminal=="undefined"?nil:Terminal)}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $2,$1,$receiver;
-$2=self["@worker"];
-if(($receiver = $2) == null || $receiver.isNil){
-$1=self._error_("prompt: not available");
-} else {
-$1=$recv(self["@worker"])._prompt_(aString);
-};
+var $1;
+self._deprecatedAPI_("Use Terminal prompt:");
+$1=$recv($Terminal())._prompt_(aString);
 return $1;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"prompt:",{aString:aString},$globals.PlatformInterface.klass)});
@@ -1757,10 +1748,10 @@ return $1;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aString"],
-source: "prompt: aString\x0a\x09^ worker\x0a\x09\x09ifNotNil: [ worker prompt: aString ]\x0a\x09\x09ifNil: [ self error: 'prompt: not available' ]",
-referencedClasses: [],
+source: "prompt: aString\x0a\x09self deprecatedAPI: 'Use Terminal prompt:'.\x0a\x09^ Terminal prompt: aString",
+referencedClasses: ["Terminal"],
 //>>excludeEnd("ide");
-messageSends: ["ifNotNil:ifNil:", "prompt:", "error:"]
+messageSends: ["deprecatedAPI:", "prompt:"]
 }),
 $globals.PlatformInterface.klass);
 
@@ -1770,16 +1761,13 @@ selector: "prompt:default:",
 protocol: 'actions',
 fn: function (aString,defaultString){
 var self=this;
+function $Terminal(){return $globals.Terminal||(typeof Terminal=="undefined"?nil:Terminal)}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $2,$1,$receiver;
-$2=self["@worker"];
-if(($receiver = $2) == null || $receiver.isNil){
-$1=self._error_("prompt: not available");
-} else {
-$1=$recv(self["@worker"])._prompt_default_(aString,defaultString);
-};
+var $1;
+self._deprecatedAPI_("Use Terminal prompt:default:");
+$1=$recv($Terminal())._prompt_default_(aString,defaultString);
 return $1;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"prompt:default:",{aString:aString,defaultString:defaultString},$globals.PlatformInterface.klass)});
@@ -1787,10 +1775,10 @@ return $1;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aString", "defaultString"],
-source: "prompt: aString default: defaultString\x0a\x09^ worker\x0a\x09\x09ifNotNil: [ worker prompt: aString default: defaultString ]\x0a\x09\x09ifNil: [ self error: 'prompt: not available' ]",
-referencedClasses: [],
+source: "prompt: aString default: defaultString\x0a\x09self deprecatedAPI: 'Use Terminal prompt:default:'.\x0a\x09^ Terminal prompt: aString default: defaultString",
+referencedClasses: ["Terminal"],
 //>>excludeEnd("ide");
-messageSends: ["ifNotNil:ifNil:", "prompt:default:", "error:"]
+messageSends: ["deprecatedAPI:", "prompt:default:"]
 }),
 $globals.PlatformInterface.klass);
 
@@ -2115,6 +2103,112 @@ messageSends: ["do:on:displaying:", "current"]
 $globals.ProgressHandler.klass);
 
 
+$core.addClass('Terminal', $globals.Service, [], 'Platform-Services');
+//>>excludeStart("ide", pragmas.excludeIdeData);
+$globals.Terminal.comment="I am UI interface service.\x0a\x0a## API\x0a\x0a    Terminal alert: 'Hey, there is a problem'.\x0a    Terminal confirm: 'Affirmative?'.\x0a    Terminal prompt: 'Your name:'.";
+//>>excludeEnd("ide");
+
+$core.addMethod(
+$core.method({
+selector: "alert:",
+protocol: 'dialogs',
+fn: function (aString){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1;
+$1=$recv(self._current())._alert_(aString);
+return $1;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"alert:",{aString:aString},$globals.Terminal.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aString"],
+source: "alert: aString\x0a\x09^ self current alert: aString",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["alert:", "current"]
+}),
+$globals.Terminal.klass);
+
+$core.addMethod(
+$core.method({
+selector: "confirm:",
+protocol: 'dialogs',
+fn: function (aString){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1;
+$1=$recv(self._current())._confirm_(aString);
+return $1;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"confirm:",{aString:aString},$globals.Terminal.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aString"],
+source: "confirm: aString\x0a\x09^ self current confirm: aString",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["confirm:", "current"]
+}),
+$globals.Terminal.klass);
+
+$core.addMethod(
+$core.method({
+selector: "prompt:",
+protocol: 'dialogs',
+fn: function (aString){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1;
+$1=$recv(self._current())._prompt_(aString);
+return $1;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"prompt:",{aString:aString},$globals.Terminal.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aString"],
+source: "prompt: aString\x0a\x09^ self current prompt: aString",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["prompt:", "current"]
+}),
+$globals.Terminal.klass);
+
+$core.addMethod(
+$core.method({
+selector: "prompt:default:",
+protocol: 'dialogs',
+fn: function (aString,defaultString){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1;
+$1=$recv(self._current())._prompt_default_(aString,defaultString);
+return $1;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"prompt:default:",{aString:aString,defaultString:defaultString},$globals.Terminal.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aString", "defaultString"],
+source: "prompt: aString default: defaultString\x0a\x09^ self current prompt: aString default: defaultString",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["prompt:default:", "current"]
+}),
+$globals.Terminal.klass);
+
+
 $core.addClass('Transcript', $globals.Service, [], 'Platform-Services');
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.Transcript.comment="I am a facade for Transcript actions.\x0a\x0aI delegate actions to the currently registered transcript.\x0a\x0a## API\x0a\x0a    Transcript \x0a        show: 'hello world';\x0a        cr;\x0a        show: anObject.";

+ 42 - 16
src/Platform-Services.st

@@ -100,19 +100,19 @@ ajax: anObject
 !
 
 alert: aString
-	^ PlatformInterface alert: aString
+	^ Terminal alert: aString
 !
 
 confirm: aString
-	^ PlatformInterface confirm: aString
+	^ Terminal confirm: aString
 !
 
 prompt: aString
-	^ PlatformInterface prompt: aString
+	^ Terminal prompt: aString
 !
 
 prompt: aString default: defaultString
-	^ PlatformInterface prompt: aString default: defaultString
+	^ Terminal prompt: aString default: defaultString
 ! !
 
 InterfacingObject subclass: #Environment
@@ -381,15 +381,13 @@ ajax: anObject
 !
 
 alert: aString
-	^ worker
-		ifNotNil: [ worker alert: aString ]
-		ifNil: [ self error: 'alert: not available' ]
+	self deprecatedAPI: 'Use Terminal alert:'.
+	^ Terminal alert: aString
 !
 
 confirm: aString
-	^ worker
-		ifNotNil: [ worker confirm: aString ]
-		ifNil: [ self error: 'confirm: not available' ]
+	self deprecatedAPI: 'Use Terminal confirm:'.
+	^ Terminal confirm: aString
 !
 
 existsGlobal: aString
@@ -406,15 +404,13 @@ newXhr
 !
 
 prompt: aString
-	^ worker
-		ifNotNil: [ worker prompt: aString ]
-		ifNil: [ self error: 'prompt: not available' ]
+	self deprecatedAPI: 'Use Terminal prompt:'.
+	^ Terminal prompt: aString
 !
 
 prompt: aString default: defaultString
-	^ worker
-		ifNotNil: [ worker prompt: aString default: defaultString ]
-		ifNil: [ self error: 'prompt: not available' ]
+	self deprecatedAPI: 'Use Terminal prompt:default:'.
+	^ Terminal prompt: aString default: defaultString
 ! !
 
 !PlatformInterface class methodsFor: 'initialization'!
@@ -542,6 +538,36 @@ do: aBlock on: aCollection displaying: aString
 	self current do: aBlock on: aCollection displaying: aString
 ! !
 
+Service subclass: #Terminal
+	instanceVariableNames: ''
+	package: 'Platform-Services'!
+!Terminal commentStamp!
+I am UI interface service.
+
+## API
+
+    Terminal alert: 'Hey, there is a problem'.
+    Terminal confirm: 'Affirmative?'.
+    Terminal prompt: 'Your name:'.!
+
+!Terminal class methodsFor: 'dialogs'!
+
+alert: aString
+	^ self current alert: aString
+!
+
+confirm: aString
+	^ self current confirm: aString
+!
+
+prompt: aString
+	^ self current prompt: aString
+!
+
+prompt: aString default: defaultString
+	^ self current prompt: aString default: defaultString
+! !
+
 Service subclass: #Transcript
 	instanceVariableNames: ''
 	package: 'Platform-Services'!