[e-cvs] cvs commit: e/src/jsrc/org/quasiliteral/term Functor.java

markm@eros.cs.jhu.edu markm@eros.cs.jhu.edu
Sat, 10 Nov 2001 14:40:54 -0500


markm       01/11/10 14:40:53

  Modified:    src/esrc/com/skyhunter/e/lang
                        runConfinedSourceFuncAuthor.emaker
                        sourceRunnerAuthor.emaker
               src/esrc/com/skyhunter/e/net vowToolsMaker.emaker
               src/esrc/com/skyhunter/e/security
                        oldPowerboxControllerMakerAuthor.emaker
                        powerBoxControllerMakerAuthorTester.e
                        powerboxControllerMakerAuthor.emaker
               src/esrc/com/skyhunter/e/util domFromTextFunc.emaker
                        domTreeKit.emaker extractChildNodesFunc.emaker
                        mapDomText.emaker mapDomTextFunc.emaker
                        testDomTreeKit.e timer.e
               src/esrc/com/skyhunter/eDesk capLauncherAuthor.emaker
                        installedAppsManagerMaker.emaker
                        navPanelControllerMakerAuthor.emaker
                        progressWindowMakerAuthor.emaker
                        serverDescVowAuthor.emaker
               src/esrc/com/skyhunter/eDesk/icons folder.gif
               src/esrc/com/skyhunter/ex/swing capFrameMakerAuthor.emaker
                        dialogVowMakerAuthor.emaker
                        standardWindowMakerAuthor.emaker
               src/esrc/com/skyhunter/installer
                        agreedCapsPetsVowMakerAuthor.emaker
                        persistentInstallerAuthor.emaker
                        stringDataKit.emaker testAgreedCapsVow.e
               src/esrc/org/erights/e/tools/text abbrev.emaker
               src/esrc/scripts eBrowser.e
               src/jsrc/net/ertp Assay.java
                        InsufficientERightsException.java Issuer.java
               src/jsrc/net/vattp/data AuthSecrets.java
                        ConnectionAttemptFailed.java
                        ConnectionShutDownException.java DES.java
                        DataCommThunk.java DataPath.java Decrypt3DES.java
                        EARL.java Encrypt3DES.java ListenThread.java
                        Msg.java MsgTransformer.java NetAddr.java
                        NetConfig.java RecvThread.java SendThread.java
                        StartUpProtocol.java StreamMessage.java
                        Suspend.java TripleDESKeyConstructor.java
                        UserThread.java VatIdentity.java
                        VatTPConnection.java
               src/jsrc/org/erights/build EYaccFixer.java
               src/jsrc/org/erights/e/develop/assertion Assertion.java
                        AssertionFailed.java
               src/jsrc/org/erights/e/develop/exception ExceptionMgr.java
                        ExceptionNoticer.java NestedError.java
                        NestedException.java NestedIOException.java
                        PrintStreamWriter.java ThrowableSugar.java
               src/jsrc/org/erights/e/develop/format ETimeFormat.java
                        StringHelper.java
               src/jsrc/org/erights/e/develop/trace Trace.java
                        TraceBuffer.java TraceCaller.java
                        TraceConstants.java TraceController.java
                        TraceDateToString.java TraceLevelTranslator.java
                        TraceLog.java TraceLogDescriptor.java
                        TraceMessage.java TraceMessageAcceptor.java
                        TraceMessageStringifier.java
                        TraceSubsystemMediator.java
                        TraceTxtVersionNamer.java TraceVersionNamer.java
               src/jsrc/org/erights/e/elang/evm AssignExpr.java
                        CallExpr.java CatchExpr.java CdrPattern.java
                        DefineExpr.java EExpr.java EImpl.java
                        EImplByProxy.java EMeta.java EMethod.java
                        EMethodNode.java ENode.java EScript.java
                        EscapeExpr.java FinalPattern.java FinallyExpr.java
                        FrameFinalNounExpr.java FrameSlotNounExpr.java
                        HideExpr.java IfExpr.java IgnorePattern.java
                        ListPattern.java LiteralExpr.java
                        LiteralNounExpr.java LiteralSlotNounExpr.java
                        LocalFinalNounExpr.java LocalSlotNounExpr.java
                        MatchBindExpr.java Matcher.java MetaExpr.java
                        NounExpr.java NounPattern.java ObjectExpr.java
                        OuterNounExpr.java Pattern.java
                        QuasiLiteralExpr.java QuasiLiteralPatt.java
                        QuasiPatternExpr.java QuasiPatternPatt.java
                        ScopeExpr.java SendExpr.java SeqExpr.java
                        SlotExpr.java StaticScope.java SuchThatPattern.java
                        VarPattern.java
               src/jsrc/org/erights/e/elang/interp Help.java
                        InteractiveInterp.java Interp.java
                        LazyEvalSlot.java Loader.java LoaderScope.java
                        Loop.java PackageScope.java ProtocolDesc.java
                        ResourceUriGetter.java ScopeSetup.java
                        URLGetter.java UnsafeLoaderScope.java
               src/jsrc/org/erights/e/elang/scope EvalContext.java
                        InnerScope.java OuterScope.java Scope.java
                        ScopeMap.java UndefinedVariableException.java
               src/jsrc/org/erights/e/elang/syntax Assoc.java EBuilder.java
                        ELexer.java EParser.java FileFeeder.java
                        HilbertHotel.java Indenter.java LineFeeder.java
                        MsgPatt.java NeedMoreException.java
                        PrettyFeeder.java QuasiFeeder.java
                        SyntaxException.java TwineFeeder.java URI.java
               src/jsrc/org/erights/e/elang/visitors
                        AlphaRenameVisitor.java BindFramesVisitor.java
                        CopyVisitor.java ETreeVisitor.java
                        RenameVisitor.java
               src/jsrc/org/erights/e/elib/base ClassDesc.java
                        Ejection.java Ejector.java MessageDesc.java
                        MethodNode.java ParamDesc.java ParseNode.java
                        SourceSpan.java TypeDesc.java
               src/jsrc/org/erights/e/elib/deflect Deflector.java
               src/jsrc/org/erights/e/elib/eio NonBlockingInputStream.java
                        TextReader.java TextWriter.java
               src/jsrc/org/erights/e/elib/prim BERunner.java
                        CallThunk.java ConstructorNode.java E.java
                        FEProblemHandler.java FERunner.java
                        FERunnerEvent.java InstanceMethodNode.java
                        JavaMemberNode.java Message.java
                        MirandaMethods.java NowRunnable.java
                        OverloaderNode.java PendingEvent.java Queue.java
                        Runner.java RunnerThread.java
                        SacrificialComponent.java ScriptMaker.java
                        ShutDownVatException.java StaticMaker.java
                        StaticMethodNode.java SugarMethodNode.java
                        SynchQueue.java Thrower.java VTable.java
                        VarGetterNode.java VarSetterNode.java WeakPtr.java
                        WeakPtrThread.java
               src/jsrc/org/erights/e/elib/prim/tests A.java ERunDemo.java
               src/jsrc/org/erights/e/elib/quasi Identifiers.java
                        IncompleteQuasiException.java MatchMaker.java
                        SimpleQuasiParser.java Substituter.java
               src/jsrc/org/erights/e/elib/ref BufferingRef.java
                        DisconnectedRef.java ExternalRef.java FarRef.java
                        LocalResolver.java NearRef.java
                        OneArgFuncAdapter.java Proxy.java
                        ProxyResolver.java Ref.java RemotePromise.java
                        ResultResolver.java SlotRef.java StemCell.java
                        SwitchableRef.java UnconnectedRef.java
                        ViciousCycleException.java WhenBrokenReactor.java
                        WhenResolvedReactor.java
               src/jsrc/org/erights/e/elib/sealing Unsealer.java
                        UnsealingException.java
               src/jsrc/org/erights/e/elib/serial PassByConstruction.java
                        PassByConstructionGuard.java PassByProxy.java
                        PassByProxyGuard.java PersistenceReplacer.java
                        PersistenceResolver.java Persistent.java
                        RemoteCall.java RemoteDelivery.java Serializer.java
                        Unserializer.java
               src/jsrc/org/erights/e/elib/slot FinalSlotMaker.java
                        NullOkMaker.java RuinedSlot.java SettableSlot.java
                        SettableSlotMaker.java SimpleSlot.java
                        SimpleSlotMaker.java SlotDefiner.java
                        VoidMaker.java
               src/jsrc/org/erights/e/elib/tables ArrayedList.java
                        AtomicTwine.java Column.java CompositeTwine.java
                        ConstList.java ConstListImpl.java ConstMap.java
                        ConstMapImpl.java CycleBreaker.java EList.java
                        EMap.java EmptyTwine.java EqualityKeyColumn.java
                        Equalizer.java FlexList.java FlexListImpl.java
                        FlexMap.java FlexMapImpl.java
                        IdentityCacheTable.java IdentityKeyColumn.java
                        IdentityMap.java IndirectCompFunc.java
                        IntColumn.java IntTable.java KeyColumn.java
                        LocatedTwine.java NotSettledException.java
                        ROList.java ROMap.java RefColumn.java
                        SamenessKeyColumn.java ScalarColumn.java
                        Selfless.java ShareCount.java SimpleCompFunc.java
                        SimpleTwine.java Twine.java VoidColumn.java
                        WeakKey.java WeakKeyMap.java WeakValue.java
                        WeakValueMap.java
               src/jsrc/org/erights/e/elib/tests TestELib.java
                        TestMultiQ.java TestMultiQMain.java
               src/jsrc/org/erights/e/elib/util
                        AlreadyDefinedException.java
                        ArityMismatchException.java ClassCache.java
                        ConditionLock.java DynamicCollection.java
                        DynamicCollectionEnumeration.java
                        HexStringUtils.java IdentityFunc.java
                        TwineException.java
               src/jsrc/org/erights/e/extern/file ConsoleMaker.java
                        ConsoleThread.java
               src/jsrc/org/erights/e/extern/timer Clock.java Timeout.java
                        Timer.java TimerQEntry.java TimerThread.java
                        TimerWatcher.java
               src/jsrc/org/erights/e/meta/java/awt ComponentSugar.java
                        ContainerSugar.java
               src/jsrc/org/erights/e/meta/java/awt/event
                        WindowEventSugar.java
               src/jsrc/org/erights/e/meta/java/io BufferedReaderSugar.java
                        FileGetter.java FileSugar.java
                        InputStreamSugar.java ReadOnlyFile.java
                        ReaderSugar.java
               src/jsrc/org/erights/e/meta/java/lang BooleanSugar.java
                        Bufferer.java ByteGuardSugar.java
                        CharacterSugar.java DoubleGuardSugar.java
                        DoubleSugar.java FloatGuardSugar.java
                        IntegerGuardSugar.java LongGuardSugar.java
                        ProcessSugar.java ShortGuardSugar.java
                        StringBufferSugar.java ThrowableGuardSugar.java
                        VoidGuardSugar.java
               src/jsrc/org/erights/e/meta/java/math
                        BigIntegerGuardSugar.java BigIntegerMakerSugar.java
                        BigIntegerSugar.java
               src/jsrc/org/erights/e/meta/java/net URLSugar.java
               src/jsrc/org/erights/e/meta/java/util DictionarySugar.java
                        EnumerationSugar.java VectorSugar.java
               src/jsrc/org/erights/e/ui/elmer EInterpAdapter.java
                        ElmerMain.java
               src/jsrc/org/erights/e/ui/jed BrickLayer.java EAction.java
                        EActionListener.java EDismissListener.java
                        EItemListener.java EMenuBar.java
                        ETextChangedListener.java EditGroup.java
                        JedMain.java
               src/jsrc/org/quasiliteral/astro Astro.java
                        AstroLexerSharedInputState.java AstroToken.java
               src/jsrc/org/quasiliteral/term Functor.java
  Added:       src/esrc/com/skyhunter/e/icons backArrow.gif fileOpen.gif
                        folder.gif forwardArrow.gif help.gif
                        lightning16x16.gif magnify.gif print2.gif stop.gif
                        text16x16.gif upArrow.gif webpage16x16.gif
               src/esrc/com/skyhunter/eDesk/icons folderOld.gif
  Removed:     src/esrc/com/skyhunter/e/security capWTMakerAuthorOld.emaker
               src/esrc/com/skyhunter/eBrowser analyzeOutlineFunc.emaker
                        outlineAnalyzer.emaker
               src/esrc/com/skyhunter/eBrowser/ebScripts countLines.emaker
                        indentSpaces.emaker indentTabs.emaker
               src/esrc/com/skyhunter/eDesk quickEditMakerAuthor.emaker
               src/esrc/com/skyhunter/eDeskPlus capLauncherAuthor.emaker
                        progressWindowMakerAuthor.emaker
                        quickEditMakerAuthor.emaker
               src/esrc/com/skyhunter/eDeskPlus/icons goto.gif home.gif
                        refresh.gif up.gif
               src/esrc/com/skyhunter/eDeskPlus/strings about.txt help.txt
               src/esrc/com/skyhunter/ex/swing dialogPromiserAuthor.emaker
                        dialogPromiserAuthorOld.emaker
               src/esrc/com/skyhunter/installer
                        agreedCapPromiserAuthorTester.e
                        agreedCapVowMakerAuthorTest.e
                        agreedCapsXMLPromiserAuthor.emaker
               src/esrc/com/skyhunter/testCaplet
                        helloWorldCapletAuthor.caplet
                        helloWorldCapletAuthor.emaker
                        helloWorldCapletPlusAuthor.emaker
                        helloWorldPlusTester.e helloWorldTester.e
                        testCapletAuthor.emaker testLauncher.e
                        testLauncherOld.e
  Log:
  tabs, reformatting, little things

Revision  Changes    Path
1.1                  e/src/esrc/com/skyhunter/e/icons/backArrow.gif

Index: backArrow.gif
===================================================================
GIF89a
(P 



1.1                  e/src/esrc/com/skyhunter/e/icons/fileOpen.gif

Index: fileOpen.gif
===================================================================
GIF89a


1.1                  e/src/esrc/com/skyhunter/e/icons/folder.gif

Index: folder.gif
===================================================================
GIF89a
(P
(p
8P
(p
(p


1.1                  e/src/esrc/com/skyhunter/e/icons/forwardArrow.gif

Index: forwardArrow.gif
===================================================================
GIF89a
(P@
(


1.1                  e/src/esrc/com/skyhunter/e/icons/help.gif

Index: help.gif
===================================================================
GIF89a


1.1                  e/src/esrc/com/skyhunter/e/icons/lightning16x16.gif

Index: lightning16x16.gif
===================================================================
GIF89a
P
$( 
$H
	
$


1.1                  e/src/esrc/com/skyhunter/e/icons/magnify.gif

Index: magnify.gif
===================================================================
GIF89a


1.1                  e/src/esrc/com/skyhunter/e/icons/print2.gif

Index: print2.gif
===================================================================
GIF89a


1.1                  e/src/esrc/com/skyhunter/e/icons/stop.gif

Index: stop.gif
===================================================================
GIF89a
8p
( 
(P @


1.1                  e/src/esrc/com/skyhunter/e/icons/text16x16.gif

Index: text16x16.gif
===================================================================
GIF89a


1.1                  e/src/esrc/com/skyhunter/e/icons/upArrow.gif

Index: upArrow.gif
===================================================================
GIF89a



1.1                  e/src/esrc/com/skyhunter/e/icons/webpage16x16.gif

Index: webpage16x16.gif
===================================================================
GIF89a
(P@



1.2       +29 -29    e/src/esrc/com/skyhunter/e/lang/runConfinedSourceFuncAuthor.emaker

Index: runConfinedSourceFuncAuthor.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/e/lang/runConfinedSourceFuncAuthor.emaker,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- runConfinedSourceFuncAuthor.emaker	2001/09/12 00:01:50	1.1
+++ runConfinedSourceFuncAuthor.emaker	2001/11/10 19:40:35	1.2
@@ -1,33 +1,33 @@
 
 //Copyright (C) 2001 Combex. All Rights Reserved.
 def sourceRunnerAuthor(unsafe__uriGetter, interp, traceln, stdout) :near {
-	def runSource(sourceText) :near {
-		def interpret() :any {
-			traceln("starting run prep")
-			def ScopeSetupMaker := <unsafe:org.erights.e.elang.interp.ScopeSetup>
-			var scope := ScopeSetupMaker universal()
-			def subInterp {
-				to blockAtTop() {
-					# ignored
-				}
-				to continueAtTop() {
-					# ignored
-				}
-				delegate { interp }
-			}
-			scope := scope sprout() bindFinal("interp", subInterp)
-			traceln("made scope 2")
-			try {
-				def tree := e__quasiParser(sourceText)
-				def result := tree eval(scope newPov())
-				traceln("\n# value: " + result)
-				traceln("shown")
-				result
-			} catch problem {
-				traceln("\n# problem: " + problem)
-				traceln("problem shown")
-			}
-		}
-		interpret()
-	}
+    def runSource(sourceText) :near {
+        def interpret() :any {
+            traceln("starting run prep")
+            def ScopeSetupMaker := <unsafe:org.erights.e.elang.interp.ScopeSetup>
+            var scope := ScopeSetupMaker universal()
+            def subInterp {
+                to blockAtTop() {
+                    # ignored
+                }
+                to continueAtTop() {
+                    # ignored
+                }
+                delegate { interp }
+            }
+            scope := scope sprout() bindFinal("interp", subInterp)
+            traceln("made scope 2")
+            try {
+                def tree := e__quasiParser(sourceText)
+                def result := tree eval(scope newPov())
+                traceln("\n# value: " + result)
+                traceln("shown")
+                result
+            } catch problem {
+                traceln("\n# problem: " + problem)
+                traceln("problem shown")
+            }
+        }
+        interpret()
+    }
 }



1.3       +29 -29    e/src/esrc/com/skyhunter/e/lang/sourceRunnerAuthor.emaker

Index: sourceRunnerAuthor.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/e/lang/sourceRunnerAuthor.emaker,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- sourceRunnerAuthor.emaker	2001/09/12 00:01:50	1.2
+++ sourceRunnerAuthor.emaker	2001/11/10 19:40:35	1.3
@@ -1,33 +1,33 @@
 
 //Copyright (C) 2001 Combex. All Rights Reserved.
 def sourceRunnerAuthor(unsafe__uriGetter, interp, traceln, stdout) :near {
-	def runSource(sourceText) :near {
-		def interpret() :any {
-			traceln("starting run prep")
-			def ScopeSetupMaker := <unsafe:org.erights.e.elang.interp.ScopeSetup>
-			var scope := ScopeSetupMaker privileged(false, stdout, stdout, interp)
-			def subInterp {
-				to blockAtTop() {
-					# ignored
-				}
-				to continueAtTop() {
-					# ignored
-				}
-				delegate { interp }
-			}
-			scope := scope sprout() bindFinal("interp", subInterp)
-			traceln("made scope 2")
-			try {
-				def tree := e__quasiParser(sourceText)
-				def result := tree eval(scope newPov())
-				traceln("\n# value: " + result)
-				traceln("shown")
-				result
-			} catch problem {
-				traceln("\n# problem: " + problem)
-				traceln("problem shown")
-			}
-		}
-		interpret()
-	}
+    def runSource(sourceText) :near {
+        def interpret() :any {
+            traceln("starting run prep")
+            def ScopeSetupMaker := <unsafe:org.erights.e.elang.interp.ScopeSetup>
+            var scope := ScopeSetupMaker privileged(false, stdout, stdout, interp)
+            def subInterp {
+                to blockAtTop() {
+                    # ignored
+                }
+                to continueAtTop() {
+                    # ignored
+                }
+                delegate { interp }
+            }
+            scope := scope sprout() bindFinal("interp", subInterp)
+            traceln("made scope 2")
+            try {
+                def tree := e__quasiParser(sourceText)
+                def result := tree eval(scope newPov())
+                traceln("\n# value: " + result)
+                traceln("shown")
+                result
+            } catch problem {
+                traceln("\n# problem: " + problem)
+                traceln("problem shown")
+            }
+        }
+        interpret()
+    }
 }



1.7       +94 -94    e/src/esrc/com/skyhunter/e/net/vowToolsMaker.emaker

Index: vowToolsMaker.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/e/net/vowToolsMaker.emaker,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- vowToolsMaker.emaker	2001/09/12 00:01:50	1.6
+++ vowToolsMaker.emaker	2001/11/10 19:40:35	1.7
@@ -1,97 +1,97 @@
 class vowToolsMaker() :any {
-	def vowTools {
-		# Send a list of promises, this will return a
-		# promise that will be fulfilled when all
-		# the promises in the list have resolved one
-		# way or the other. If any break, the allDone
-		# promise is smashed, with a list of the error
-		# messages, else it returns true.
-		# Some day, this should return a list of all the
-		# resolutions, with a smash if any of the promises
-		# were broken on delivery.
-		to promiseAllDone(thePromiseList) :any {
-			# resolves after all in list resolved, returns true if all promises fulfilled
-			def  [resolutionPromise,resolver] := PromiseMaker()
-			def promiseCount := thePromiseList size
-			define breakMessages := ""
-			if (promiseCount == 0) {resolver resolve(true)}
-			for each in thePromiseList {
-				each <- whenResolved(def obs(result) {
-					if (E isBroken(result)) {breakMessages += " :" +result}
-					promiseCount -= 1
-					if (promiseCount == 0) {
-						if (breakMessages size == 0) {
-							resolver resolve(true)
-						} else {
-							resolver smash(breakMessages)
-						}
-					}
-				})
-			}
-			resolutionPromise
-		}
-		# A vowsMonitor is an upscale promiseAllDone, collecting the
-		# promise list, the promise of completion, and the finishing
-		# process in a single object, making it convenient to pass
-		# around to various objects that must add a promise to the
-		# list and be informed when the list is finished.
-		# Add the promises one at a time to the vowsMonitor,
-		# get the promise of the finish when you want it
-		# and initiate the monitoring for completion by requesting
-		# a finishAll. Adding promises after the finishAll has been
-		# requested is currently an undetected error.
-		to makeVowsMonitor :any {
-			def [bundlePromise,resolver] := PromiseMaker()
-			def bundle := [] diverge
-			def vowsMonitor {
-				to add (thePromise) {bundle push(thePromise)}
-				to finishAll {resolver resolve(netTools promiseAllDone(bundle))}
-				to promiseFinish :any {bundlePromise}
-			}
-		}
-		# Only More Recent Manager:
-		# If you send out multiple requests over time, 
-		# resulting in receiving multiple promises also strewn over time,
-		# and if you are only interested
-		# in the answer if the answer is more recent 
-		# than the most recent of the already-fulfilled promises 
-		# (i.e., only if
-		# the answer is newer than what you currently have),
-		# and if you are not absolutely sure that all the 
-		# requests will move through a
-		# guaranteed sequence on a single vat,
-		# use an onlyMoreRecent object: add the promise
-		# to the onlyMoreRecent when you receive it, and use the promise returned from that operation in
-		# your when clause. If
-		# a newer promise gets fulfilled before an older promise, the older promise is smashed with an "Obsolete Data"
-		# error when it finally resolves.
-		# If a newest promise returns smashed, the promise from onlyMostRecent also is returned smashed,
-		# but with the error object it got from the
-		# original promise.
-		to makeOnlyMoreRecentAcceptor :any  {
-			def obsoleteError := "Obsolete Data"
-			def mostRecentlyFulfilledIndex := 0
-			def nextPromiseIndex := 1
-			def onlyMoreRecent {
-				to promiseMoreRecent(nextPromise) :any {
-					def [onlyMoreRecentPromise,resolver] := PromiseMaker()
-					def thisPromiseIndex := nextPromiseIndex
-					nextPromiseIndex += 1
-					when (nextPromise) -> done(resolution) {
-						if (thisPromiseIndex > mostRecentlyFulfilledIndex) {
-							resolver resolve(resolution)
-							mostRecentlyFulfilledIndex := thisPromiseIndex
-						} else { resolver smash(obsoleteError) }
-					} catch e {
-						if (thisPromiseIndex > mostRecentlyFulfilledIndex) {
-							resolver smash(e)
-							mostRecentlyFulfilledIndex := thisPromiseIndex
-						} else { resolver smash(obsoleteError) }
-					}
-					onlyMoreRecentPromise
-				}
-			}
-		}
-	}
+    def vowTools {
+        # Send a list of promises, this will return a
+        # promise that will be fulfilled when all
+        # the promises in the list have resolved one
+        # way or the other. If any break, the allDone
+        # promise is smashed, with a list of the error
+        # messages, else it returns true.
+        # Some day, this should return a list of all the
+        # resolutions, with a smash if any of the promises
+        # were broken on delivery.
+        to promiseAllDone(thePromiseList) :any {
+            # resolves after all in list resolved, returns true if all promises fulfilled
+            def  [resolutionPromise,resolver] := PromiseMaker()
+            def promiseCount := thePromiseList size
+            define breakMessages := ""
+            if (promiseCount == 0) {resolver resolve(true)}
+            for each in thePromiseList {
+                each <- whenResolved(def obs(result) {
+                    if (E isBroken(result)) {breakMessages += " :" +result}
+                    promiseCount -= 1
+                    if (promiseCount == 0) {
+                        if (breakMessages size == 0) {
+                            resolver resolve(true)
+                        } else {
+                            resolver smash(breakMessages)
+                        }
+                    }
+                })
+            }
+            resolutionPromise
+        }
+        # A vowsMonitor is an upscale promiseAllDone, collecting the
+        # promise list, the promise of completion, and the finishing
+        # process in a single object, making it convenient to pass
+        # around to various objects that must add a promise to the
+        # list and be informed when the list is finished.
+        # Add the promises one at a time to the vowsMonitor,
+        # get the promise of the finish when you want it
+        # and initiate the monitoring for completion by requesting
+        # a finishAll. Adding promises after the finishAll has been
+        # requested is currently an undetected error.
+        to makeVowsMonitor :any {
+            def [bundlePromise,resolver] := PromiseMaker()
+            def bundle := [] diverge
+            def vowsMonitor {
+                to add (thePromise) {bundle push(thePromise)}
+                to finishAll {resolver resolve(netTools promiseAllDone(bundle))}
+                to promiseFinish :any {bundlePromise}
+            }
+        }
+        # Only More Recent Manager:
+        # If you send out multiple requests over time,
+        # resulting in receiving multiple promises also strewn over time,
+        # and if you are only interested
+        # in the answer if the answer is more recent
+        # than the most recent of the already-fulfilled promises
+        # (i.e., only if
+        # the answer is newer than what you currently have),
+        # and if you are not absolutely sure that all the
+        # requests will move through a
+        # guaranteed sequence on a single vat,
+        # use an onlyMoreRecent object: add the promise
+        # to the onlyMoreRecent when you receive it, and use the promise returned from that operation in
+        # your when clause. If
+        # a newer promise gets fulfilled before an older promise, the older promise is smashed with an "Obsolete Data"
+        # error when it finally resolves.
+        # If a newest promise returns smashed, the promise from onlyMostRecent also is returned smashed,
+        # but with the error object it got from the
+        # original promise.
+        to makeOnlyMoreRecentAcceptor :any  {
+            def obsoleteError := "Obsolete Data"
+            def mostRecentlyFulfilledIndex := 0
+            def nextPromiseIndex := 1
+            def onlyMoreRecent {
+                to promiseMoreRecent(nextPromise) :any {
+                    def [onlyMoreRecentPromise,resolver] := PromiseMaker()
+                    def thisPromiseIndex := nextPromiseIndex
+                    nextPromiseIndex += 1
+                    when (nextPromise) -> done(resolution) {
+                        if (thisPromiseIndex > mostRecentlyFulfilledIndex) {
+                            resolver resolve(resolution)
+                            mostRecentlyFulfilledIndex := thisPromiseIndex
+                        } else { resolver smash(obsoleteError) }
+                    } catch e {
+                        if (thisPromiseIndex > mostRecentlyFulfilledIndex) {
+                            resolver smash(e)
+                            mostRecentlyFulfilledIndex := thisPromiseIndex
+                        } else { resolver smash(obsoleteError) }
+                    }
+                    onlyMoreRecentPromise
+                }
+            }
+        }
+    }
 }
 



1.3       +22 -22    e/src/esrc/com/skyhunter/e/security/oldPowerboxControllerMakerAuthor.emaker

Index: oldPowerboxControllerMakerAuthor.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/e/security/oldPowerboxControllerMakerAuthor.emaker,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- oldPowerboxControllerMakerAuthor.emaker	2001/09/12 00:01:50	1.2
+++ oldPowerboxControllerMakerAuthor.emaker	2001/11/10 19:40:36	1.3
@@ -2,9 +2,9 @@
 def powerboxControllerMakerAuthor(unsafe__uriGetter, file__uriGetter, resource__uriGetter, JPanel__quasiParser) :near {
     def uiKit := <import:com.skyhunter.ex.swing.uiToolsAuthor>(
         <unsafe:java.awt.*>, <unsafe:javax.swing.*>)
-	var stdErr := ""
+    var stdErr := ""
     def confinedRunner(sourceTwine) :any {
-		stdErr := ""
+        stdErr := ""
         def traceln(text) {stdErr := `$stdErr $text ${"<br>\n"}`}
         traceln("in confined runner, about to interpret")
         def interpret() :any {
@@ -24,7 +24,7 @@
             } catch problem {
                 traceln(`Error: ${"\n"}$problem`)
                 result := stdErr
-				throw 
+                throw
             }
             result
         }
@@ -46,11 +46,11 @@
             to requestBaseCapabilityVow(capName,justification) :any {}
             //general capability pops drag/drop dialog
             to requestCapabilityVow(capName, justification) :any {}
-			to getCapWT() :near {
-				def makerAuthor := <import:com.skyhunter.e.security.capWTMakerAuthor>
-				def maker := makerAuthor(<unsafe:java.awt.*>, <unsafe:javax.swing.*>, JPanel__quasiParser)
-				maker new(appImage, appTitle, powerbox)
-			}
+            to getCapWT() :near {
+                def makerAuthor := <import:com.skyhunter.e.security.capWTMakerAuthor>
+                def maker := makerAuthor(<unsafe:java.awt.*>, <unsafe:javax.swing.*>, JPanel__quasiParser)
+                maker new(appImage, appTitle, powerbox)
+            }
         }
         def powerboxController {
             to getPowerbox() :near {powerbox}
@@ -75,20 +75,20 @@
             }
         }
         def launchCaplet(source) :near {
-			try {
-			def maker := confinedRunner(source)
-			maker new(powerbox)
-			} catch err {
-				powerbox getCapWT() getDialogPromiser() new(
-					"Caplet failed",
-					`<html>Program runner trace: <br>
-					$stdErr <br>
-					Caplet execution output: <br>
-					$err`, 
-					null,
-					["OK"])
-			}
-				
+            try {
+            def maker := confinedRunner(source)
+            maker new(powerbox)
+            } catch err {
+                powerbox getCapWT() getDialogPromiser() new(
+                    "Caplet failed",
+                    `<html>Program runner trace: <br>
+                    $stdErr <br>
+                    Caplet execution output: <br>
+                    $err`,
+                    null,
+                    ["OK"])
+            }
+
         }
         def bind caplet := launchCaplet(capletSource)
         powerboxController



1.3       +20 -20    e/src/esrc/com/skyhunter/e/security/powerBoxControllerMakerAuthorTester.e

Index: powerBoxControllerMakerAuthorTester.e
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/e/security/powerBoxControllerMakerAuthorTester.e,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- powerBoxControllerMakerAuthorTester.e	2001/09/12 00:01:50	1.2
+++ powerBoxControllerMakerAuthorTester.e	2001/11/10 19:40:36	1.3
@@ -3,20 +3,20 @@
 
 def traceln := println
 def controllerMaker := <import:com.skyhunter.e.security.powerboxControllerMakerAuthor> run(
-	unsafe__uriGetter, file__uriGetter, interp, traceln, stdout)
+    unsafe__uriGetter, file__uriGetter, interp, traceln, stdout)
 
 traceln("created controller")
 def testCapletAuthor := <import:com.skyhunter.testCaplet.testCapletAuthor>
 traceln("created testcaplet author")
 def testAuthor(powerbox,b,c) :any {
-	def test {
-		to start() {
-			def traceln := powerbox optCap(powerbox TRACELN())
-			traceln("traced external caplet worked")
-		}
-	}
-	test start()
-	test
+    def test {
+        to start() {
+            def traceln := powerbox optCap(powerbox TRACELN())
+            traceln("traced external caplet worked")
+        }
+    }
+    test start()
+    test
 }
 
 traceln("created testAuthor")
@@ -24,7 +24,7 @@
 #test when caplet external
 def extController := controllerMaker new(null, "Test External Caplet",null, "<caps></caps>")
 println("starting external caplet")
-extController startExternalCaplet(testAuthor(extController getPowerbox(), null, null)) 
+extController startExternalCaplet(testAuthor(extController getPowerbox(), null, null))
 println("external caplet started")
 
 #test with caplet in emaker
@@ -35,17 +35,17 @@
 
 # test when powerbox launches
 def controller := controllerMaker new(
-	`def testAuthor(powerbox,b,c) :any {
-	def test {
-		to start() {
-			def traceln := powerbox optCap(powerbox TRACELN())
-			traceln("traced internal caplet with powerbox interpreting source, it worked")
-		}
-	}
-	test start()
-	test
+    `def testAuthor(powerbox,b,c) :any {
+    def test {
+        to start() {
+            def traceln := powerbox optCap(powerbox TRACELN())
+            traceln("traced internal caplet with powerbox interpreting source, it worked")
+        }
+    }
+    test start()
+    test
 }`,
-	"Test Caplet", null, "")
+    "Test Caplet", null, "")
 println("internal caplet started")
 def powerbox := controller getPowerbox()
 #def files := powerbox requestFilesPromise(true, "test dialog", "Just Because!", "", null)



1.5       +35 -10    e/src/esrc/com/skyhunter/e/security/powerboxControllerMakerAuthor.emaker

Index: powerboxControllerMakerAuthor.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/e/security/powerboxControllerMakerAuthor.emaker,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- powerboxControllerMakerAuthor.emaker	2001/10/27 17:27:42	1.4
+++ powerboxControllerMakerAuthor.emaker	2001/11/10 19:40:36	1.5
@@ -8,7 +8,7 @@
         awt__uriGetter, swing__uriGetter)
     def uiKit := <import:com.skyhunter.ex.swing.uiKitAuthor> (awt__uriGetter,swing__uriGetter)
     def runSource := <import:com.skyhunter.e.lang.runConfinedSourceFuncAuthor> run(unsafe__uriGetter, interp, traceln, stdout)
-    
+
     class localURIGetterMaker(directoryCanonicalPath) :near {
         def uriGetter {
             to get(relativePath) :near {
@@ -38,18 +38,34 @@
         //XXX document, when a caplet returns a copy or cut value, that
         //XXX value must implement both transferable and ClipboardOwner
         //XXX as does StringSelection
-        
-        def spinoffCapletSource(source) { 
-            def caplet := runSource(source)
-            traceln("ran source made caplet: " + caplet)
-            def capsPetsVow := <import:com.skyhunter.installer.agreedCapsPetsVowMakerAuthor>(unsafe__uriGetter, file__uriGetter) new(caplet getRequestedCaps(), "")
+
+        def spinoffCapletStream(stream) {
+            def io__uriGetter := <unsafe:java.io.*>
+            traceln("in powerbox spinoff caplet stream")
+            def readableStream := <io:BufferedReader> new(<io:InputStreamReader> new(stream))
+            def sourceBuffer := <unsafe:java.lang.StringBuffer> new()
+            while (true ) {
+                def next := readableStream readLine()
+                if (next == null) {
+                    break()
+                } else {E call(sourceBuffer,  "append(String)", [next + "\n"])}
+            }
+            traceln("finished looping stream")
+            def capletAuthor := runSource(sourceBuffer toString())
+
+            traceln("ran source made caplet: " + capletAuthor)
+            def requests := capletAuthor getRequestedCaps()
+            traceln("requests: " + requests)
+            def capsPetsVow := <import:com.skyhunter.installer.agreedCapsPetsVowMakerAuthor>(unsafe__uriGetter, file__uriGetter) new(requests, "")
             when (capsPetsVow) -> done(capsPets) {
                 traceln("got capsxml for spinoff")
                 def pets := capsPets getPetMap()
-                powerboxControllerMaker new(pets get("Name", "Caplet"), pets get("Icon", null), capsPets getCapsXML())
+                def spunPowerController := powerboxControllerMaker new(pets get("Name", "Caplet"), pets get("Icon", null), capsPets getCapsXML())
+                traceln("got spun power: " + spunPowerController)
+                spunPowerController startExternalCaplet(capletAuthor(spunPowerController getPowerbox(),awt__uriGetter, swing__uriGetter))
             } catch prob {traceln("incomplete installation of spinoff caplet" + prob)}
         }
-        
+
         class powerbarControllerMaker(eFrame) :near {
             def cutFunc() {
                 traceln("about to do cut reaction")
@@ -103,6 +119,12 @@
                         url
                     } else {null}
                 }
+                to relative(url, urlString) :near {
+                    if (agreedUrlsMap maps (url getProtocol())) {
+                        traceln("about to get relative url in powerbox")
+                        <unsafe:java.net.URL> new(url, urlString)
+                    } else {null}
+                }
                 to get(urlString) :near {urlMaker new(urlString)}
                 to getAgreedProtocols() :near {agreedUrlsMap snapshot()}
             }
@@ -135,7 +157,7 @@
                 def powerbarController := powerbarControllerMaker new(frame)
                 def outerContentPane :=
                   JPanel`$contentPane.X.Y
-		         ${powerbarController getPowerPanel()}`
+                         ${powerbarController getPowerPanel()}`
                 myJFrame setContentPane(outerContentPane)
                 frame
             }
@@ -183,6 +205,9 @@
             to subsetPowers(restrictedMap) :near {
                 throw("XXX not yet implemented")
             }
+            to requestFileRcvrsVow(editable, title, justification, startPathText, optFilter) :any {
+                powerbox requestFilesPromise(editable, title, justification, startPathText, optFilter)
+            }
             to requestFilesPromise(editable, title, justification, startPathText, filter) :any {
                 def answer := [] diverge()
                 def chooser := <swing:JFileChooser> new()
@@ -221,7 +246,7 @@
             }
             #XXX remove runSource sometime, when capability-free runconfined source emaker available
             to runSource(sourceText) :any {runSource(sourceText)}
-            to spinoffCapletSource(sourceText) {spinoffCapletSource(sourceText)}
+            to spinoffCapletStream(stream) {spinoffCapletStream(stream)}
             to getGifImage(gifFile) :near {<swing:ImageIcon> new(gifFile) getImage()}
             to CAP_TIMER() :any {"capTimer"}
             to FRAME_MAKER() :any {"frameMaker"}



1.2       +1 -1      e/src/esrc/com/skyhunter/e/util/domFromTextFunc.emaker

Index: domFromTextFunc.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/e/util/domFromTextFunc.emaker,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- domFromTextFunc.emaker	2001/09/12 00:01:51	1.1
+++ domFromTextFunc.emaker	2001/11/10 19:40:36	1.2
@@ -1,4 +1,4 @@
 //Copyright (C) 2001 Combex. All Rights Reserved.
 def domFromText(text) :near {
-	 (sml__quasiParser valueMaker(text) substitute(ListMaker run()))
+     (sml__quasiParser valueMaker(text) substitute(ListMaker run()))
 }



1.2       +44 -44    e/src/esrc/com/skyhunter/e/util/domTreeKit.emaker

Index: domTreeKit.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/e/util/domTreeKit.emaker,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- domTreeKit.emaker	2001/09/12 00:01:51	1.1
+++ domTreeKit.emaker	2001/11/10 19:40:36	1.2
@@ -1,50 +1,50 @@
 //Copyright (C) 2001 Combex. All Rights Reserved.
 def domTreeKit {
-	to domFromText(text) :near {
-		(sml__quasiParser valueMaker(text) substitute(ListMaker run()))
-	}
-	to extractChildNodes(tag, node) :near {
-		def nodes := [] diverge()
-		for each in node {
-			if (each getNodeType() == 1 && 
-				each getTagName() == tag) {
-				nodes push(each)			
-			} 
-		}
-		nodes snapshot()
-	}
+    to domFromText(text) :near {
+        (sml__quasiParser valueMaker(text) substitute(ListMaker run()))
+    }
+    to extractChildNodes(tag, node) :near {
+        def nodes := [] diverge()
+        for each in node {
+            if (each getNodeType() == 1 &&
+                each getTagName() == tag) {
+                nodes push(each)
+            }
+        }
+        nodes snapshot()
+    }
 
-	#returns a map with key=tag and value=textOfTheTag,
-	# where the first character of the key is always capitalized 
-	# (so a tag "foo" would yield a key "Foo")
-	to mapDomText(domTextNodes) :any {
-		def table := [] asKeys() diverge()
-		def nodeText(list) :String {
-			if (list size() == 1) {
-				list[0] getData()
-			} else if (list size() ==0 ) {
-				""
-			} else {
-				//badData, no way to inform
-			}
-		}
-		def visitor {
-			match [verb, args] {
-				if (verb =~ `visit@{theKey}`) {
-					table[theKey] := nodeText(args[0])
-				}
-			}
-		}
-		for each in domTextNodes {each welcome(visitor)}
-		table snapshot()
-	}
-	to xmlFromMap(map) :String {
-		var xml := ""
-		for key => value in map {
-			xml := `$xml<$key>$value</$key>${"\n"}`
-		}
-		xml
-	}
+    #returns a map with key=tag and value=textOfTheTag,
+    # where the first character of the key is always capitalized
+    # (so a tag "foo" would yield a key "Foo")
+    to mapDomText(domTextNodes) :any {
+        def table := [] asKeys() diverge()
+        def nodeText(list) :String {
+            if (list size() == 1) {
+                list[0] getData()
+            } else if (list size() ==0 ) {
+                ""
+            } else {
+                //badData, no way to inform
+            }
+        }
+        def visitor {
+            match [verb, args] {
+                if (verb =~ `visit@{theKey}`) {
+                    table[theKey] := nodeText(args[0])
+                }
+            }
+        }
+        for each in domTextNodes {each welcome(visitor)}
+        table snapshot()
+    }
+    to xmlFromMap(map) :String {
+        var xml := ""
+        for key => value in map {
+            xml := `$xml<$key>$value</$key>${"\n"}`
+        }
+        xml
+    }
 }
 
 



1.2       +8 -8      e/src/esrc/com/skyhunter/e/util/extractChildNodesFunc.emaker

Index: extractChildNodesFunc.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/e/util/extractChildNodesFunc.emaker,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- extractChildNodesFunc.emaker	2001/09/12 00:01:51	1.1
+++ extractChildNodesFunc.emaker	2001/11/10 19:40:36	1.2
@@ -1,12 +1,12 @@
 def extractChildNodes(tag, node) :near {
-	def nodes := [] diverge()
-	for each in node {
-		if (each getNodeType() == 1 && 
-			each getTagName() == tag) {
-			nodes push(each)			
-		} 
-	}
-	nodes snapshot()
+    def nodes := [] diverge()
+    for each in node {
+        if (each getNodeType() == 1 &&
+            each getTagName() == tag) {
+            nodes push(each)
+        }
+    }
+    nodes snapshot()
 }
 
  #def tree := sml`<a> <b> <c>blah</c></b></a>`



1.3       +20 -20    e/src/esrc/com/skyhunter/e/util/mapDomText.emaker

Index: mapDomText.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/e/util/mapDomText.emaker,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- mapDomText.emaker	2001/09/12 00:01:51	1.2
+++ mapDomText.emaker	2001/11/10 19:40:36	1.3
@@ -1,26 +1,26 @@
 //Copyright (C) 2001 Combex. All Rights Reserved.
 #returns a map with key=tag and value=textOfTheTag,
-# where the first character of the key is always capitalized 
+# where the first character of the key is always capitalized
 # (so a tag "foo" would yield a key "Foo")
 
 def mapDomText(domTextNodes) :any {
-	def table := [] asKeys() diverge()
-	def nodeText(list) :String {
-		if (list size() == 1) {
-			list[0] getData()
-		} else if (list size() ==0 ) {
-			""
-		} else {
-			//badData, no way to inform
-		}
-	}
-	def visitor {
-		match [verb, args] {
-			if (verb =~ `visit@{theKey}`) {
-				table[theKey] := nodeText(args[0])
-			}
-		}
-	}
-	for each in domTextNodes {each welcome(visitor)}
-	table snapshot()
+    def table := [] asKeys() diverge()
+    def nodeText(list) :String {
+        if (list size() == 1) {
+            list[0] getData()
+        } else if (list size() ==0 ) {
+            ""
+        } else {
+            //badData, no way to inform
+        }
+    }
+    def visitor {
+        match [verb, args] {
+            if (verb =~ `visit@{theKey}`) {
+                table[theKey] := nodeText(args[0])
+            }
+        }
+    }
+    for each in domTextNodes {each welcome(visitor)}
+    table snapshot()
 }



1.2       +19 -19    e/src/esrc/com/skyhunter/e/util/mapDomTextFunc.emaker

Index: mapDomTextFunc.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/e/util/mapDomTextFunc.emaker,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- mapDomTextFunc.emaker	2001/09/12 00:01:51	1.1
+++ mapDomTextFunc.emaker	2001/11/10 19:40:36	1.2
@@ -1,22 +1,22 @@
 //Copyright (C) 2001 Combex. All Rights Reserved.
 def mapDomText(domTextNodes) :any {
-	def table := [] asKeys() diverge()
-	def nodeText(list) :String {
-		if (list size() == 1) {
-			list[0] getData()
-		} else if (list size() ==0 ) {
-			""
-		} else {
-			//badData, no way to inform
-		}
-	}
-	def visitor {
-		match [verb, args] {
-			if (verb =~ `visit@{theKey}`) {
-				table[theKey] := nodeText(args[0])
-			}
-		}
-	}
-	for each in domTextNodes {each welcome(visitor)}
-	table snapshot()
+    def table := [] asKeys() diverge()
+    def nodeText(list) :String {
+        if (list size() == 1) {
+            list[0] getData()
+        } else if (list size() ==0 ) {
+            ""
+        } else {
+            //badData, no way to inform
+        }
+    }
+    def visitor {
+        match [verb, args] {
+            if (verb =~ `visit@{theKey}`) {
+                table[theKey] := nodeText(args[0])
+            }
+        }
+    }
+    for each in domTextNodes {each welcome(visitor)}
+    table snapshot()
 }



1.2       +3 -3      e/src/esrc/com/skyhunter/e/util/testDomTreeKit.e

Index: testDomTreeKit.e
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/e/util/testDomTreeKit.e,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- testDomTreeKit.e	2001/09/12 00:01:51	1.1
+++ testDomTreeKit.e	2001/11/10 19:40:36	1.2
@@ -1,9 +1,9 @@
 println("started test")
 def domTreeKit := <import:com.skyhunter.e.util.domTreeKit>
 def kitTest() {
-	def tree := sml`<a> <b> <c>blah</c></b></a>`
-	println("b of Tree: " + domTreeKit extractChildNodes("b", tree))
-	println("xmlFromMap: " + domTreeKit xmlFromMap(["A" => "1", "b" => "2"]))
+    def tree := sml`<a> <b> <c>blah</c></b></a>`
+    println("b of Tree: " + domTreeKit extractChildNodes("b", tree))
+    println("xmlFromMap: " + domTreeKit xmlFromMap(["A" => "1", "b" => "2"]))
 }
 kitTest()
 



1.7       +9 -9      e/src/esrc/com/skyhunter/e/util/timer.e

Index: timer.e
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/e/util/timer.e,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- timer.e	2001/09/12 00:01:51	1.6
+++ timer.e	2001/11/10 19:40:36	1.7
@@ -2,14 +2,14 @@
 
 //The actionTrio must be a list [target,"verb",[args]]
 def doAfter(seconds,actionTrio) :any {
-	def actionWrapper {
-		to run() {
-			#traceln("stopwatch: performing action" + actionTrio)
-			E call(actionTrio[0], actionTrio[1], actionTrio[2])
-			#traceln("stopwatch: action performed")
-		}
-	}
-	def timer := <import:org.erights.e.extern.timer.Timer> theTimer
-	timer after(seconds * 1000, actionWrapper)
+    def actionWrapper {
+        to run() {
+            #traceln("stopwatch: performing action" + actionTrio)
+            E call(actionTrio[0], actionTrio[1], actionTrio[2])
+            #traceln("stopwatch: action performed")
+        }
+    }
+    def timer := <import:org.erights.e.extern.timer.Timer> theTimer
+    timer after(seconds * 1000, actionWrapper)
 }
 



1.2       +21 -21    e/src/esrc/com/skyhunter/eDesk/capLauncherAuthor.emaker

Index: capLauncherAuthor.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/eDesk/capLauncherAuthor.emaker,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- capLauncherAuthor.emaker	2001/09/12 00:01:51	1.1
+++ capLauncherAuthor.emaker	2001/11/10 19:40:36	1.2
@@ -2,26 +2,26 @@
 //Copyright (C) 2001 Combex. All Rights Reserved.
 
 def capletLauncherAuthor(unsafe__uriGetter, file__uriGetter, interp, stdout) :any {
-	def swing__uriGetter := <unsafe:javax.swing.*>
-	def awt__uriGetter := <unsafe:java.awt.*>
-	def uiKit := <import:com.skyhunter.ex.swing.uiToolsAuthor> run(awt__uriGetter, swing__uriGetter)
-	def traceOut := <unsafe:java.lang.System> out()
-	def trace(text) {E call(traceOut, "print(Object)", [text])}
-	def traceln(text) {trace(text + "\n")}
+    def swing__uriGetter := <unsafe:javax.swing.*>
+    def awt__uriGetter := <unsafe:java.awt.*>
+    def uiKit := <import:com.skyhunter.ex.swing.uiToolsAuthor> run(awt__uriGetter, swing__uriGetter)
+    def traceOut := <unsafe:java.lang.System> out()
+    def trace(text) {E call(traceOut, "print(Object)", [text])}
+    def traceln(text) {trace(text + "\n")}
 
-	def launchCaplet(capletSourceFile) :any {
-		#def sourcePath := capletSourceFile getCanonicalPath()
-		#def capletNameRoot := capletSourceFile nameRoot???
-		#def sourceDir := capletSourceFile getDir()
-		#if (!(<file:installedApps> exists())) {<unsafe:java.io.File> mkdir("installedApps")}
-		#def outFile := <file: (capletNameRoot + year + month + day + hour + min + ".run")>
-		#def capletAuthor := <import:com.skyhunter.RUNSOURCE> run(capletSourceFile getText())
-		#def agreedCapsPromiser := <import:com.skyhunter.installer.agreedCapsXMLPromiserAuthor> run(
-		#	unsafe__uriGetter, file__uriGetter)
-		#def capsXMLVow := agreedCapsPromiser(capletAuthor getRequestedCaps())
-		#when (capsXMLVow) -> done(capsXML) {
-		#	outFile setText(capsXML)
-		#	mapInstalledRunFile(outFile)
-		#} catch prob {traceln("capsXML lost: " + prob)}
-	}
+    def launchCaplet(capletSourceFile) :any {
+        #def sourcePath := capletSourceFile getCanonicalPath()
+        #def capletNameRoot := capletSourceFile nameRoot???
+        #def sourceDir := capletSourceFile getDir()
+        #if (!(<file:installedApps> exists())) {<unsafe:java.io.File> mkdir("installedApps")}
+        #def outFile := <file: (capletNameRoot + year + month + day + hour + min + ".run")>
+        #def capletAuthor := <import:com.skyhunter.RUNSOURCE> run(capletSourceFile getText())
+        #def agreedCapsPromiser := <import:com.skyhunter.installer.agreedCapsXMLPromiserAuthor> run(
+        #    unsafe__uriGetter, file__uriGetter)
+        #def capsXMLVow := agreedCapsPromiser(capletAuthor getRequestedCaps())
+        #when (capsXMLVow) -> done(capsXML) {
+        #    outFile setText(capsXML)
+        #    mapInstalledRunFile(outFile)
+        #} catch prob {traceln("capsXML lost: " + prob)}
+    }
 }



1.2       +65 -62    e/src/esrc/com/skyhunter/eDesk/installedAppsManagerMaker.emaker

Index: installedAppsManagerMaker.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/eDesk/installedAppsManagerMaker.emaker,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- installedAppsManagerMaker.emaker	2001/09/12 00:01:51	1.1
+++ installedAppsManagerMaker.emaker	2001/11/10 19:40:36	1.2
@@ -1,64 +1,67 @@
 class installedAppsManagerMaker (appsXMLFile, traceln) :near {
-	def domTreeKit := <import:com.skyhunter.e.util.domTreeKit>
-	var appMapsBySourcePath := [] asKeys() diverge()
-	var appMapsByPetExtension := [] asKeys() diverge()
-	var appMapsByPetName := [] asKeys() diverge()
-	def addAppMap(map) {
-		appMapsBySourcePath[map["SourcePath"]] := map
-		if (map maps ("Suffix")) {appMapsByPetExtension[map["Suffix"]] := map}
-		if (map maps ("Name")) {appMapsByPetName[map["Name"]] := map}
-	}
-	def loadApps() {
-		appMapsBySourcePath := [] asKeys() diverge()
-		appMapsByPetExtension := [] asKeys() diverge()
-		appMapsByPetName := [] asKeys() diverge()
-		#traceln("about to get domm tree in appsManager loadapps: " + appsXMLFile getText())
-		def appsTree := domTreeKit domFromText(appsXMLFile getText())
-		#traceln("got dom tree in appsManager loadapps: " + appsTree)
-		#traceln("apps from tree: " + domTreeKit extractChildNodes("app", appsTree[0]))
-		for each in domTreeKit extractChildNodes("app", appsTree[0]) {
-			def nextAppMap := domTreeKit mapDomText(each)
-			addAppMap(nextAppMap)		
-		}
-		traceln("got app map in apps manager: " + appMapsBySourcePath)	
-	}
-	def saveApps() {
-		traceln("into saveApps in appsManager, appMaps: " + appMapsBySourcePath)
-		var xml := "<installed>\n"
-		for each in appMapsBySourcePath {
-			xml+= `<app>${"\n"}${domTreeKit xmlFromMap(each)}</app>` 
-		}
-		xml += "</installed>"
-		appsXMLFile setText(xml)
-		traceln("just set appsxmlfile text: " + xml)
-		traceln("the appsxmlfile is: " + appsXMLFile getCanonicalPath())
-	}
-	loadApps()
-	def installedAppsManager {
-		to getAppBySourcePath(path) :near {
-			traceln("getAppBySource: " + path)
-			#traceln("from appMaps: " + appMapsBySourcePath)
-			#appMapsBySourcePath[path]
-			appMapsBySourcePath[path]
-		}
-		to optAppBySourcePath(path) :near {appMapsBySourcePath get(path, null)}
-		to getAppPetNames() :pbc {
-			def names := [] diverge()
-			for each => value in appMapsByPetName {
-				names push(each)
-			}
-			names snapshot()
-		}
-		to optAppByPetName(name) :near {
-			traceln("optAppByPetname name: " + name)
-			appMapsByPetName get(name, null)
-		} 
-		to reload() {loadApps()}
-		to save() {saveApps()}
-		to addApp(appMap) {
-			addAppMap(appMap) 
-			saveApps()
-		}
-		to removeAppBySourcePath(sourcePath) {}
-	}
+    def domTreeKit := <import:com.skyhunter.e.util.domTreeKit>
+    var appMapsBySourcePath := [] asKeys() diverge()
+    var appMapsByPetExtension := [] asKeys() diverge()
+    var appMapsByPetName := [] asKeys() diverge()
+    def addAppMap(map) {
+        appMapsBySourcePath[map["SourcePath"]] := map
+        if (map maps ("Suffix")) {appMapsByPetExtension[map["Suffix"]] := map}
+        if (map maps ("Name")) {appMapsByPetName[map["Name"]] := map}
+    }
+    def loadApps() {
+        appMapsBySourcePath := [] asKeys() diverge()
+        appMapsByPetExtension := [] asKeys() diverge()
+        appMapsByPetName := [] asKeys() diverge()
+        #traceln("about to get domm tree in appsManager loadapps: " + appsXMLFile getText())
+        def appsTree := domTreeKit domFromText(appsXMLFile getText())
+        #traceln("got dom tree in appsManager loadapps: " + appsTree)
+        #traceln("apps from tree: " + domTreeKit extractChildNodes("app", appsTree[0]))
+        for each in domTreeKit extractChildNodes("app", appsTree[0]) {
+            def nextAppMap := domTreeKit mapDomText(each)
+            addAppMap(nextAppMap)
+        }
+        traceln("got app map in apps manager: " + appMapsBySourcePath)
+    }
+    def saveApps() {
+        traceln("into saveApps in appsManager, appMaps: " + appMapsBySourcePath)
+        var xml := "<installed>\n"
+        for each in appMapsBySourcePath {
+            xml+= `<app>${"\n"}${domTreeKit xmlFromMap(each)}</app>`
+        }
+        xml += "</installed>"
+        appsXMLFile setText(xml)
+        traceln("just set appsxmlfile text: " + xml)
+        traceln("the appsxmlfile is: " + appsXMLFile getCanonicalPath())
+    }
+    loadApps()
+    def installedAppsManager {
+        to getAppBySourcePath(path) :near {
+            traceln("getAppBySource: " + path)
+            #traceln("from appMaps: " + appMapsBySourcePath)
+            #appMapsBySourcePath[path]
+            appMapsBySourcePath[path]
+        }
+        to optAppBySourcePath(path) :near {appMapsBySourcePath get(path, null)}
+        to getAppPetNames() :pbc {
+            def names := [] diverge()
+            for each => value in appMapsByPetName {
+                names push(each)
+            }
+            names snapshot()
+        }
+        to optAppByPetName(name) :near {
+            traceln("optAppByPetname name: " + name)
+            appMapsByPetName get(name, null)
+        }
+        to optAppByPetSuffix(suffix) :near {
+            appMapsByPetExtension get(suffix, null)
+        }
+        to reload() {loadApps()}
+        to save() {saveApps()}
+        to addApp(appMap) {
+            addAppMap(appMap)
+            saveApps()
+        }
+        to removeAppBySourcePath(sourcePath) {}
+    }
 }



1.2       +15 -6     e/src/esrc/com/skyhunter/eDesk/navPanelControllerMakerAuthor.emaker

Index: navPanelControllerMakerAuthor.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/eDesk/navPanelControllerMakerAuthor.emaker,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- navPanelControllerMakerAuthor.emaker	2001/10/27 17:34:08	1.1
+++ navPanelControllerMakerAuthor.emaker	2001/11/10 19:40:36	1.2
@@ -65,7 +65,7 @@
         }
     }
     
-    class cellMaker(var name, isDir) :near {
+    class cellMaker(var name, isDir, suffixMapper) :near {
         var component := null
         var label := null
         var icon := null
@@ -75,7 +75,16 @@
                 if (component != null) {
                     component
                 } else {
-                    icon := if (isDir) {dirIcon} else {unAssociatedIcon}
+                    var icon := unAssociatedIcon
+                    if (isDir) {
+                        icon := dirIcon
+                    } else { 
+                        def optApp := suffixMapper optAppByPetSuffix(computeSuffix(name)) 
+                        if (optApp != null) {
+                            traceln ("found suffix app: " + optApp)
+                            icon := <swing:ImageIcon> new(optApp["Icon"])
+                        } 
+                    }
                     iconPane := <swing:JLabel> new(icon)
                     iconPane setIcon(icon)
                     label := <swing:JTextField> new(name)
@@ -94,13 +103,13 @@
         }
     }
     
-    def composeCellArray(dirsFiles) :pbc {
+    def composeCellArray(dirsFiles, suffixMapper) :pbc {
         def list := [] diverge()
         for each in dirsFiles[0] {
-            list push(cellMaker new(each, true))
+            list push(cellMaker new(each, true, suffixMapper))
         }
         for each in dirsFiles[1] {
-            list push(cellMaker new(each, false))
+            list push(cellMaker new(each, false, suffixMapper))
         }
         list snapshot()
     }
@@ -158,7 +167,7 @@
                 def dirsVow := recentFilesListVow (diskNavRcvr <- listCurrentSubdirectoriesAndFiles())
                 when (dirsVow, currentPathVow) -> done(dirsFilesTuple, currentPath) {
                     locationLabel setText(dirNameFromPath(currentPath))
-                    listPanel setListData(composeCellArray(dirsFilesTuple))
+                    listPanel setListData(composeCellArray(dirsFilesTuple, suffixMapper))
                     windowController setStatus("Refresh done.")
                 } catch err {
                     #connectionWarning("Screen Refresh Failed\n" + err)



1.2       +23 -23    e/src/esrc/com/skyhunter/eDesk/progressWindowMakerAuthor.emaker

Index: progressWindowMakerAuthor.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/eDesk/progressWindowMakerAuthor.emaker,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- progressWindowMakerAuthor.emaker	2001/09/12 00:01:51	1.1
+++ progressWindowMakerAuthor.emaker	2001/11/10 19:40:36	1.2
@@ -1,25 +1,25 @@
 def progressWindowMakerAuthor(swing__uriGetter, standardWindow) :near {
-	class progressWindowMaker(title) :near {
-		var fileSize := 1000000000
-		def progressWindow
-		def myFrame := standardWindow(title,progressWindow)
-		def myProgressPane := <swing:JProgressBar> new()
-		myProgressPane setStringPainted(true)
-		myFrame getContentPane() add(myProgressPane)
-		myFrame pack()
-		myFrame setSize(150,50)
-		myFrame show()
-		def bind progressWindow {
-			to setProgress(amountCopied) {
-				def percent := (amountCopied *100) _/ fileSize
-				myProgressPane setValue(percent)
-				myProgressPane setString(`$percent%`)
-			}
-			to setFileSize(size) {
-				fileSize := size
-			}
-			to windowClosing() {}
-			to closeWindow() {myFrame dispose()}
-		}
-	}
+    class progressWindowMaker(title) :near {
+        var fileSize := 1000000000
+        def progressWindow
+        def myFrame := standardWindow(title,progressWindow)
+        def myProgressPane := <swing:JProgressBar> new()
+        myProgressPane setStringPainted(true)
+        myFrame getContentPane() add(myProgressPane)
+        myFrame pack()
+        myFrame setSize(150,50)
+        myFrame show()
+        def bind progressWindow {
+            to setProgress(amountCopied) {
+                def percent := (amountCopied *100) _/ fileSize
+                myProgressPane setValue(percent)
+                myProgressPane setString(`$percent%`)
+            }
+            to setFileSize(size) {
+                fileSize := size
+            }
+            to windowClosing() {}
+            to closeWindow() {myFrame dispose()}
+        }
+    }
 }



1.2       +17 -17    e/src/esrc/com/skyhunter/eDesk/serverDescVowAuthor.emaker

Index: serverDescVowAuthor.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/eDesk/serverDescVowAuthor.emaker,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- serverDescVowAuthor.emaker	2001/10/27 17:34:08	1.1
+++ serverDescVowAuthor.emaker	2001/11/10 19:40:36	1.2
@@ -12,7 +12,7 @@
 //**********
 
 def serverDescVowAuthor(unsafe__uriGetter, awt__uriGetter, swing__uriGetter, frameMaker, traceln) :any {
-    
+
     def JPanel__quasiParser := <import:org.erights.ex.swing.JPanelQParserMaker> new(awt__uriGetter, swing__uriGetter)
     def promiseAllResolved := <import:com.skyhunter.e.net.promiseAllResolved>
     #def uriTools := <import:com.skyhunter.e.net.uriToolsAuthor>(introducer,
@@ -24,14 +24,14 @@
         swing__uriGetter,
         JPanel__quasiParser,
         frameMaker)
-    
+
     #integer string converter
     def toInt(numString) :near {(<unsafe:java.lang.Integer> new(numString)) intValue()}
-    
+
     #****** Configurator Specific Code ***********
-    
+
     def mainFrame := frameMaker new()
-    def [configVow, configSolver] := PromiseMaker() 
+    def [configVow, configSolver] := PromiseMaker()
     def configReady
     def windowTitleField := <swing:JTextField> new("My eDesk Server")
     def rootPathField := <swing:JTextField> new()
@@ -46,16 +46,16 @@
     def okButton := uiSet newButton("OK",configReady)
     def l(text) :near {<swing:JLabel> new(text)}
     def formPane :=
-      JPanel`${l("Browser-Window Title")}          $windowTitleField.X
-		${l("Home Path")}                   $homePathField.X
-		$serverOnlyBox                      >
-		${l("   Write Capability To")}      $capFileField.X 
-		${l(" ")}                           >
-		${l("    Security Configuration")}  >      
-		$isReadOnlyBox                      >      
-		${l("Top Accessible Directory")}    $rootPathField.X 
-		$okButton                           > `
-    
+      JPanel`${l("Browser-Window Title")}        $windowTitleField.X
+             ${l("Home Path")}                   $homePathField.X
+             $serverOnlyBox                      >
+             ${l("   Write Capability To")}      $capFileField.X
+             ${l(" ")}                           >
+             ${l("    Security Configuration")}  >
+             $isReadOnlyBox                      >
+             ${l("Top Accessible Directory")}    $rootPathField.X
+             $okButton                           > `
+
     traceln("config form about to make window")
     #create form window
     def mainPane := mainFrame getContentPane()
@@ -65,7 +65,7 @@
     mainFrame pack()
     #mainFrame setSize(400,200)
     mainFrame show()
-    
+
     def bind configReady() {
         #traceln("made it")
         configSolver resolve (`
@@ -80,6 +80,6 @@
             `)
         mainFrame dispose()
     }
-    
+
     configVow
 }



1.2       +6 -2      e/src/esrc/com/skyhunter/eDesk/icons/folder.gif

Index: folder.gif
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/eDesk/icons/folder.gif,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
Binary files /tmp/cvsrcomX2 and /tmp/cvserUsSV differ



1.1                  e/src/esrc/com/skyhunter/eDesk/icons/folderOld.gif

Index: folderOld.gif
===================================================================
GIF89a
0j1S	HJ*ëX


1.3       +2 -2      e/src/esrc/com/skyhunter/ex/swing/capFrameMakerAuthor.emaker

Index: capFrameMakerAuthor.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/ex/swing/capFrameMakerAuthor.emaker,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- capFrameMakerAuthor.emaker	2001/09/12 00:01:51	1.2
+++ capFrameMakerAuthor.emaker	2001/11/10 19:40:36	1.3
@@ -46,7 +46,7 @@
 
     class capFrameMaker() :near {
         def innerFrame := <swing:JFrame> new()
-		if (appImage != null) {innerFrame setIconImage(appImage)}
+        if (appImage != null) {innerFrame setIconImage(appImage)}
         innerFrame setTitle(appTitle)
         def contentPane := <swing:JPanel> new()
         def powerPane := <swing:JPanel> new()
@@ -71,6 +71,6 @@
 }
 
 #def powerbox {match [verb,arg] {}}
-#def maker := capFrameMakerAuthor(powerbox, <swing:JFrame>, null, "test") 
+#def maker := capFrameMakerAuthor(powerbox, <swing:JFrame>, null, "test")
 #def win := maker new()
 #win show()



1.2       +6 -6      e/src/esrc/com/skyhunter/ex/swing/dialogVowMakerAuthor.emaker

Index: dialogVowMakerAuthor.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/ex/swing/dialogVowMakerAuthor.emaker,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- dialogVowMakerAuthor.emaker	2001/09/12 00:01:51	1.1
+++ dialogVowMakerAuthor.emaker	2001/11/10 19:40:36	1.2
@@ -11,11 +11,11 @@
 //**********
 
 //XXX fix this author to require only jframe when capwt is working
-def dialogVowMakerAuthor (awt__uriGetter, swing__uriGetter, dummyJPanel, frameMaker) :near  {   
+def dialogVowMakerAuthor (awt__uriGetter, swing__uriGetter, dummyJPanel, frameMaker) :near  {
     def JPanel__quasiParser := <import:org.erights.ex.swing.JPanelQParserMaker> new(
         awt__uriGetter, swing__uriGetter)
     def uiTools := <import:com.skyhunter.ex.swing.uiToolsAuthor> (awt__uriGetter, swing__uriGetter)
-    
+
     class dialogPromiser (title, label, textFieldDefaultValue, buttonNames) :any {
         var myClickedButton := null
         def [finishedDialogPromise, resolver] := PromiseMaker()
@@ -28,9 +28,9 @@
                 }
                 to windowClosed(event) {
                     if (undisposed) {
-		myWin dispose()
-		undisposed := false
-	     }
+        myWin dispose()
+        undisposed := false
+         }
                 }
                 match _ {}
             }
@@ -68,7 +68,7 @@
             $buttonPane `
             #traceln("made buttons")
             def border := <awt:BorderLayout> new()
-            mainPane setLayout(border)            
+            mainPane setLayout(border)
             mainPane add(dialogPane, "Center")
             myWin pack()
             myWin show()



1.4       +25 -25    e/src/esrc/com/skyhunter/ex/swing/standardWindowMakerAuthor.emaker

Index: standardWindowMakerAuthor.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/ex/swing/standardWindowMakerAuthor.emaker,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- standardWindowMakerAuthor.emaker	2001/09/12 00:01:51	1.3
+++ standardWindowMakerAuthor.emaker	2001/11/10 19:40:36	1.4
@@ -1,29 +1,29 @@
 def standardWindowMakerAuthor(interp, frameMaker) :near {
-	//close whole app when windowset returns to zero size
-	def windowSet := [] asKeys() diverge()
-	def standardWindowMaker (title, windowClosingHandler) :near {
-		var undisposed := true
-		def mainFrame := frameMaker new(title)
-		windowSet[mainFrame] := mainFrame
-		def windowListener {
-			to windowClosing(event) {
-				windowClosingHandler windowClosing()
-			}
-			to windowClosed(event) {
-				windowSet removeKey(mainFrame)
-				if (undisposed) {
-					mainFrame dispose()
-					undisposed := false
-				}
-				if (windowSet size() == 0) {
-					interp continueAtTop()
-				}
-			}
-			match _ {}
-		}
-		mainFrame addWindowListener(windowListener)
-		mainFrame
-	}
+    //close whole app when windowset returns to zero size
+    def windowSet := [] asKeys() diverge()
+    def standardWindowMaker (title, windowClosingHandler) :near {
+        var undisposed := true
+        def mainFrame := frameMaker new(title)
+        windowSet[mainFrame] := mainFrame
+        def windowListener {
+            to windowClosing(event) {
+                windowClosingHandler windowClosing()
+            }
+            to windowClosed(event) {
+                windowSet removeKey(mainFrame)
+                if (undisposed) {
+                    mainFrame dispose()
+                    undisposed := false
+                }
+                if (windowSet size() == 0) {
+                    interp continueAtTop()
+                }
+            }
+            match _ {}
+        }
+        mainFrame addWindowListener(windowListener)
+        mainFrame
+    }
 }
 
 



1.3       +70 -65    e/src/esrc/com/skyhunter/installer/agreedCapsPetsVowMakerAuthor.emaker

Index: agreedCapsPetsVowMakerAuthor.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/installer/agreedCapsPetsVowMakerAuthor.emaker,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- agreedCapsPetsVowMakerAuthor.emaker	2001/10/27 17:27:42	1.2
+++ agreedCapsPetsVowMakerAuthor.emaker	2001/11/10 19:40:37	1.3
@@ -13,9 +13,9 @@
     def winImage := <swing:ImageIcon> new(
         <resource:com/skyhunter/eDesk/icons/super.gif>) getImage()
     def lbl(contents) :near { <swing:JLabel> new(contents)}
-    
+
     def mapDomText := <import:com.skyhunter.e.util.mapDomText>
-    
+
     class capsPetsMaker(capsXML,petMap) :near {
         def capsPets {
             to getCapsXML() :String {capsXML}
@@ -39,7 +39,7 @@
         var petIconField := lbl(" ")
         #petListPanel setLayout(<awt:GridLayout> new(3,2))
         def capTabsPane := <swing:JTabbedPane> new()
-        
+
         def buildPetIconSelectionPane(defaultsTable) :near {
             def tempPath := baseDirPath + defaultsTable["Icon"]
             var iconPath := <file: tempPath> getCanonicalPath()
@@ -47,10 +47,10 @@
             def pathLabel := <swing:JLabel> new(iconPath)
             petFieldsMap["Icon"] := pathLabel
             def icon := <swing:ImageIcon> new(
-                <unsafe:java.net.URL> new("file:" + iconPath)) 
+                <unsafe:java.net.URL> new("file:" + iconPath))
             def iconLabel := <swing:JLabel> new(icon)
             def changeIconFunc() {
-                def dialog := <awt:FileDialog> new(<swing:JFrame> new(), 
+                def dialog := <awt:FileDialog> new(<swing:JFrame> new(),
                                                    "Select Icon For This Caplet",
                                                    0)
                 dialog show()
@@ -62,45 +62,45 @@
                         <unsafe:java.net.URL> new("file:" + iconPath))
                     iconLabel setIcon(newIcon)
                 }
-            
+
             }
             def newIconB := uiKit newButton("Change Icons",changeIconFunc)
             traceln("about to build JPanel")
             JPanel`$iconLabel $pathLabel    >
                    V          $newIconB     ${lbl(" ")}.X  `
         }
-        
+
         def protocolsVisitor {
             to visitProtocol(subnodes) {
                 def table := mapDomText(subnodes)
                 traceln("table: " + table)
                 #if (validUrlProtocols maps(table["Name"])) {
-                    def protocolCheck := <swing:JCheckBox> new(table["Name"])
-                    def whyLabel := <swing:JLabel> new(table["Why"])
-                    def protocolPane := JPanel`$protocolCheck $whyLabel.X`
-                    def clickedRunner() {
-                        traceln("into clickedRunner")
-                        if (protocolCheck isEnabled()) {
-                            agreedUrlProtocols[table["Name"]] := null
-                        } else {
-                            agreedUrlProtocols removeKey(table["Name"])
-                        }
-                        traceln("did clickedRunner: " + agreedUrlProtocols)
+                def protocolCheck := <swing:JCheckBox> new(table["Name"])
+                def whyLabel := <swing:JLabel> new(table["Why"])
+                def protocolPane := JPanel`$protocolCheck $whyLabel.X`
+                def clickedRunner() {
+                    traceln("into clickedRunner")
+                    if (protocolCheck isEnabled()) {
+                        agreedUrlProtocols[table["Name"]] := null
+                    } else {
+                        agreedUrlProtocols removeKey(table["Name"])
                     }
-                    uiKit attachAction(protocolCheck, clickedRunner)
-                    urlProtocolsListPanel add(protocolPane)
+                    traceln("did clickedRunner: " + agreedUrlProtocols)
+                }
+                uiKit attachAction(protocolCheck, clickedRunner)
+                urlProtocolsListPanel add(protocolPane)
                 #} else {traceln("invalid protocol: " + table["Name"])}
             }
             to viewText(text) {}
         }
-        
+
         def requestsVisitor {
             to visitUrlProtocols(subnodes) {
                 for each in subnodes {each welcome(protocolsVisitor)}
                 def helpLabel := <swing:JLabel> new(stringDataKit  getUrlProtocolHelp())
                 def urlProtocolsMainPanel :=
                   JPanel`$urlProtocolsListPanel
-				$helpLabel.Y`
+                $helpLabel.Y`
                 urlProtocolsMainPanel setName("Web")
                 capTabsPane add(urlProtocolsMainPanel)
             }
@@ -119,28 +119,28 @@
                     #insertLabelFieldPair("Pet Name:", "Name")
                     petNameLabel := lbl("Pet Name: ")
                     petNameField := <swing:JTextField> new(table["Name"])
-                    petFieldsMap["Name"] := petNameField  
+                    petFieldsMap["Name"] := petNameField
                     petTabNeeded := true
                 }
                 if (table maps("Suffix")) {
                     #insertLabelFieldPair("Default File Extension: ", "Suffix")
                     petSuffixLabel  := lbl("Default File Extension: ")
                     petSuffixField  := <swing:JTextField> new(table["Suffix"])
-                    petFieldsMap["Suffix"] := petSuffixField 
+                    petFieldsMap["Suffix"] := petSuffixField
                     petTabNeeded := true
                 }
                 if (table maps("Icon")) {
                     #insertLabelFieldPair("Icon Path:", "Icon")
                     #def iconLabel :=
                     petIconLabel  := <swing:JLabel> new("Pet Icon")
-                    petIconField  := buildPetIconSelectionPane(table) 
-                    traceln("addedIconpanel to pet list panel") 
+                    petIconField  := buildPetIconSelectionPane(table)
+                    traceln("addedIconpanel to pet list panel")
                     petTabNeeded := true
                 }
                 if (petTabNeeded) {
                     def helpLabel := <swing:JLabel> new(stringDataKit getPetHelp())
-                    def petListPanel := 
-                        JPanel`$petNameLabel    $petNameField.X
+                    def petListPanel :=
+                      JPanel`$petNameLabel    $petNameField.X
                                ${lbl(" ")}      ${lbl(" ")}
                                $petSuffixLabel  $petSuffixField
                                ${lbl(" ")}      ${lbl(" ")}
@@ -163,44 +163,49 @@
             to viewText(blah) {}
         }
         for each in requestsTree {each welcome(topVisitor)}
-        def frame := <swing:JFrame> new()
-        frame setIconImage(winImage) 
-        def windowListener {
-            to windowClosing(event) {
-                capsSolver smash("Grants not made")
+        if (capTabsPane getComponentCount() > 0) {
+            def frame := <swing:JFrame> new()
+            frame setIconImage(winImage)
+            def windowListener {
+                to windowClosing(event) {
+                    capsSolver smash("Grants not made")
+                    frame dispose()
+                }
+                match [verb, args] {}
+            }
+            frame addWindowListener(windowListener)
+            def grantFunc() {
+                traceln("into grantfunc: " )
                 frame dispose()
-            }
-            match [verb, args] {}
-        }
-        frame addWindowListener(windowListener)
-        def grantFunc() {
-            traceln("into grantfunc: " )
-            frame dispose()
-            var xmlOut := "<caps>"
-            if (agreedUrlProtocols size() > 0) {
-                xmlOut += "<urlProtocols>"
-                for each => dummy in agreedUrlProtocols {
-                    xmlOut += `<protocol>$each</protocol>`
-                }
-                xmlOut += "</urlProtocols>"
-            }
-            xmlOut += "</caps>"
-            def petData := [] asKeys() diverge()
-            for key => value in petFieldsMap {
-                petData[key] := value getText()
-            }
-            capsSolver resolve(capsPetsMaker new(xmlOut,petData snapshot() ) )
-        }
-        def grantButton := uiKit newButton("Finish Installation", grantFunc)
-        def spacer := <swing:JLabel> new(" ")
-        def realPane :=
-          JPanel`$capTabsPane.Y
+                var xmlOut := "<caps>"
+                if (agreedUrlProtocols size() > 0) {
+                    xmlOut += "<urlProtocols>"
+                    for each => dummy in agreedUrlProtocols {
+                        xmlOut += `<protocol>$each</protocol>`
+                    }
+                    xmlOut += "</urlProtocols>"
+                }
+                xmlOut += "</caps>"
+                def petData := [] asKeys() diverge()
+                for key => value in petFieldsMap {
+                    petData[key] := value getText()
+                }
+                capsSolver resolve(capsPetsMaker new(xmlOut,petData snapshot() ) )
+            }
+            def grantButton := uiKit newButton("Finish Installation", grantFunc)
+            def spacer := <swing:JLabel> new(" ")
+            def realPane :=
+              JPanel`$capTabsPane.Y
                 $spacer
-		$grantButton `
-        frame getContentPane() add(realPane)
-        frame pack()
-        frame setSize(600,600)
-        frame show()
+        $grantButton `
+            frame getContentPane() add(realPane)
+            frame pack()
+            frame setSize(600,600)
+            frame show()
+        } else {
+            capsSolver resolve(capsPetsMaker new("<caps></caps>", [] asMap()))
+        }
         capsPromise
+
     }
-} 
+}



1.4       +6 -1      e/src/esrc/com/skyhunter/installer/persistentInstallerAuthor.emaker

Index: persistentInstallerAuthor.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/installer/persistentInstallerAuthor.emaker,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- persistentInstallerAuthor.emaker	2001/10/27 17:27:42	1.3
+++ persistentInstallerAuthor.emaker	2001/11/10 19:40:37	1.4
@@ -56,8 +56,13 @@
                     outFile setText(capsPets getCapsXML() )
                     def appMap := capsPets getPetMap() diverge()
                     traceln("new appMap in persistentInstaller: " + appMap)
-                    appMap["SourcePath"] := capletSourceFile getCanonicalPath()
+                    traceln("sourcepath: " + sourcePath)
+                    #appMap["SourcePath"] := capletSourceFile getCanonicalPath()
+                    appMap["SourcePath"] := sourcePath
+                    
+                    traceln("set source path")
                     appMap["RunPath"] := outFile getCanonicalPath()
+                    traceln("set source and run paths")
                     appsManager addApp(appMap )
                     dialogVowMaker new("Installation Complete",
                                        `<html><center>Installation of <p>$capletNameRoot <p> succeeded</center>`, null, ["OK"])



1.3       +14 -14    e/src/esrc/com/skyhunter/installer/stringDataKit.emaker

Index: stringDataKit.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/installer/stringDataKit.emaker,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- stringDataKit.emaker	2001/10/27 17:27:42	1.2
+++ stringDataKit.emaker	2001/11/10 19:40:37	1.3
@@ -2,31 +2,31 @@
 //Copyright (C) 2001 Combex. All Rights Reserved.
 
 def stringDataKit {
-	to getUrlProtocolHelp() :String {
-"<html><b><i>Warning! </i></b>The <b>file</b> protocol is very powerful, 
-it can read every file on your disk. It cannot enable a cracker to take control 
+    to getUrlProtocolHelp() :String {
+"<html><b><i>Warning! </i></b>The <b>file</b> protocol is very powerful,
+it can read every file on your disk. It cannot enable a cracker to take control
 of your computer, but it does put all your confidential data at risk if combined with
-any of the other protocols in this tab. 
+any of the other protocols in this tab.
 <p><b>General Rating: </b>Medium-high power <br>
 <b>Legitimate applications: </b> Web browsers, FTP servers, some chat programs
  <br><b>Risks: </b>
-A program granted URL protocols can transmit any data you supply the program to 
-anyone on the network. So be careful about granting both read authority on your 
+A program granted URL protocols can transmit any data you supply the program to
+anyone on the network. So be careful about granting both read authority on your
 confidential files and URL protocols to the same program.<br>
 The program can also receive orders from other people through these protocols.
-<br>These protocols can be used in denial of service attacks on other people by 
+<br>These protocols can be used in denial of service attacks on other people by
 the program.
-<br> URL protocols cannot be directly used to gain control of your computer. However, 
-any attempt to gain control of your system is likely to include a request for these 
+<br> URL protocols cannot be directly used to gain control of your computer. However,
+any attempt to gain control of your system is likely to include a request for these
 protocols so that the attacker can communicate with the suborned system.
 </html>"
-	}
-	to getPetHelp() :String {
+    }
+    to getPetHelp() :String {
 "<html>The Pet Name is your personal name for this program.
-<p> The File Extension is the last part of the names of documents 
+<p> The File Extension is the last part of the names of documents
 which will be opened with this caplet by default
-<p> The Pet Icon is the image that will be placed in the top left 
+<p> The Pet Icon is the image that will be placed in the top left
 corner of all windows opened by this caplet
 </html>"
-	}
+    }
 }



1.2       +2 -2      e/src/esrc/com/skyhunter/installer/testAgreedCapsVow.e

Index: testAgreedCapsVow.e
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/installer/testAgreedCapsVow.e,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- testAgreedCapsVow.e	2001/11/01 06:56:49	1.1
+++ testAgreedCapsVow.e	2001/11/10 19:40:37	1.2
@@ -31,8 +31,8 @@
 
 println(`capPet promise: $capPetvow`)
 when (capPetvow) -> done(capPet) {
-	println("got answer, xml: " + capPet getCapsXML())
-	println("appMap: " + capPet getPetMap())
+    println("got answer, xml: " + capPet getCapsXML())
+    println("appMap: " + capPet getPetMap())
 } catch prob {println("prob: " + prob)}
 
 interp blockAtTop()



1.2       +1 -1      e/src/esrc/org/erights/e/tools/text/abbrev.emaker

Index: abbrev.emaker
===================================================================
RCS file: /cvs/e/src/esrc/org/erights/e/tools/text/abbrev.emaker,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- abbrev.emaker	2001/09/04 10:45:03	1.1
+++ abbrev.emaker	2001/11/10 19:40:37	1.2
@@ -9,7 +9,7 @@
         str
     } else {
         def segLen := budget _/ 2 - 1
-		def restLen := budget - segLen - 3
+        def restLen := budget - segLen - 3
         str(0,segLen) + "..." + str(len - restLen, len)
     }
 }



1.45      +43 -43    e/src/esrc/scripts/eBrowser.e

Index: eBrowser.e
===================================================================
RCS file: /cvs/e/src/esrc/scripts/eBrowser.e,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -r1.44 -r1.45
--- eBrowser.e	2001/10/27 17:27:42	1.44
+++ eBrowser.e	2001/11/10 19:40:37	1.45
@@ -44,7 +44,7 @@
     JFrameMaker)
 def setupDrop := <import:com.skyhunter.e.awt.dnd.setupDropFuncAuthor> (
     <awt:dnd.DropTarget>, println)
-    
+
 def StringReaderMaker := <unsafe:java.io.StringReader>
 def textSelectorMaker := <import:org.erights.ex.swing.textSelectorMaker>
 def abbrev := <import:org.erights.e.tools.text.abbrev>
@@ -92,17 +92,17 @@
 def popAboutBox() {
     def props := interp getProps()
     def text := `<html>For Help with eBrowser, see<br>
-	http://www.skyhunter.com/marcs/eBrowserIndex.html<p><p>
+    http://www.skyhunter.com/marcs/eBrowserIndex.html<p><p>
 
-	Copyright 1999 Marc Stiegler. All rights reserved.<br>
-	This software covered by the Mozilla license. For details see<p><p>
+    Copyright 1999 Marc Stiegler. All rights reserved.<br>
+    This software covered by the Mozilla license. For details see<p><p>
 
-	http://www.skyhunter.com/marcs/eBrowser-license.html<p><p>
+    http://www.skyhunter.com/marcs/eBrowser-license.html<p><p>
 
-	OS version: ${props["os.name"]} ${props["os.version"]} on ${props["os.arch"]}<br>
-	Java version: ${props["java.version"]} at ${props["java.home"] replaceAll("\\", "/")}<br>
-	E version: ${props["e.version"]} at ${props["e.home"]}<br>
-	for ${props["user.name"]} in ${props["user.region"]}</html>`
+    OS version: ${props["os.name"]} ${props["os.version"]} on ${props["os.arch"]}<br>
+    Java version: ${props["java.version"]} at ${props["java.home"] replaceAll("\\", "/")}<br>
+    E version: ${props["e.version"]} at ${props["e.home"]}<br>
+    for ${props["user.name"]} in ${props["user.region"]}</html>`
     dialogVowMaker new("About eBrowser", text, null, ["OK"])
 }
 
@@ -350,11 +350,11 @@
             resultPane setText("Execution ended:\n# value: " + result)
             statusPane setText("Execution ended")
             traceln("shown")
-            
+
         } catch problem {
             problemReporter(problem)
         }
-        
+
     }
     interpret <- run()
 }
@@ -487,7 +487,7 @@
             <resource: `com/skyhunter/e/icons/$name`>
         }
     }
-    
+
     def eBrowser
     textModel addFuncsChangedAlertRecipient(eBrowser)
     var closingInProcess := false
@@ -532,7 +532,7 @@
     def runButton :=  newToolButton(
         <icons:run.gif>,
         "Run","executeProgram",eBrowser)
-    
+
     # build text pane
     def textPane := <swing:JTextArea> new()
     textPane setMargin(<awt:Insets> new(0,5,0,10))
@@ -556,7 +556,7 @@
             textModel replaceStubFile(file)
             openFiles [path] := eBrowser
             setTitle()
-            textPane setText(textModel reload()) 
+            textPane setText(textModel reload())
         } else {
             def browser := eBrowserMaker new(textModelMaker new(file))
             openFiles[path] := browser
@@ -567,9 +567,9 @@
             openFile(files[i])
         }
     }
-    setupDrop(textPane, [<awt:datatransfer.DataFlavor> javaFileListFlavor() 
+    setupDrop(textPane, [<awt:datatransfer.DataFlavor> javaFileListFlavor()
         => reactToFilesDrop])
-    
+
     # build variable list pane
     def varListPopup := <swing:JPopupMenu> new("Var Ops")
     addMenuItem(varListPopup,"Insert","insertVar", eBrowser)
@@ -607,7 +607,7 @@
     }
     varListPane addMouseListener(varListPaneListener)
     scrollingVarPane setMinimumSize(<awt:Dimension> new(50, 100))
-    
+
     # build function list pane
     def funcListPane := <swing:JList> new(<unsafe:java.util.Vector> new())
     funcListPane setFont(<awt:Font> new("Monospaced",<awt:Font> PLAIN(),12))
@@ -646,7 +646,7 @@
     #funcListPane setPreferredSize(<awt:Dimension> new(200, 100)) # why no effect?
     #scrollingFuncPane setMinimumSize(<awt:Dimension> new(100, 100))
     #scrollingFuncPane setPreferredSize(<awt:Dimension> new(200, 100)) # why no effect?
-    
+
     # build output viewpane
     def outputPane := <swing:JTextArea> new()
     outputPane setMinimumSize(<awt:Dimension> new(20, 20))
@@ -655,7 +655,7 @@
         <swing:ScrollPaneConstants> VERTICAL_SCROLLBAR_AS_NEEDED(),
         <swing:ScrollPaneConstants> HORIZONTAL_SCROLLBAR_AS_NEEDED())
     scrollingOutputPane getViewport() add(outputPane)
-    
+
     # build splitter panes
     def varLineSplitter := <swing:JSplitPane> new()
     varLineSplitter setLeftComponent(scrollingTextPane)
@@ -666,23 +666,23 @@
     def outLineSplitter := <swing:JSplitPane> new()
     outLineSplitter setLeftComponent(scrollingFuncPane)
     outLineSplitter setRightComponent(outputSplitter)
-    
+
     # build status pane
     def statusPane := E call(<swing:JLabel>, "new(String)",["   "])
     statusPane setFont(<awt:Font> new("Monospaced",<awt:Font> PLAIN(),11))
-    
+
     def s1 := uiTools labelIcon(<icons:separator.gif>)
     def s2 := uiTools labelIcon(<icons:separator.gif>)
     def s3 := uiTools labelIcon(<icons:separator.gif>)
-    
+
     # real pane
     def buttonPane :=
       JPanel`$saveButton $reformatButton $s1 $pasteUpdocButton $elmerButton $s2 $runHiLiteButton $runButton $s3 $gotoButton $findButton  $searchField.X`
     def realPane :=
       JPanel`$buttonPane
-	$outLineSplitter.X.Y
-	$statusPane   `
-    
+    $outLineSplitter.X.Y
+    $statusPane   `
+
     # def text replacer function
     def replaceSelectionHilite(replacement) {
         def location := textPane getSelectionStart()
@@ -691,7 +691,7 @@
         textPane moveCaretPosition(location + replacement size())
         textPane requestFocus()
     }
-    
+
     # menubar
     def newFileFunc() {
         eBrowserMaker new(textModelMaker new(null))
@@ -729,7 +729,7 @@
             }
         }
     }
-    
+
     def makeFontLarger() {
         def oldFont := textPane getFont()
         def newFont := oldFont deriveFont(0.0 + oldFont getSize() + 2.0)
@@ -737,7 +737,7 @@
         funcListPane setFont(newFont)
         varListPane setFont(newFont)
     }
-    
+
     def makeFontSmaller() {
         def oldFont := textPane getFont()
         def newFont := oldFont deriveFont(0.0 + oldFont getSize() - 2.0)
@@ -745,7 +745,7 @@
         funcListPane setFont(newFont)
         varListPane setFont(newFont)
     }
-    
+
     # Option menu
     var capScriptsMaySubstitute := false
     #def substitutionAllowedMenuItem :=
@@ -755,8 +755,8 @@
     #capScriptsMaySubstitute := substitutionAllowedMenuItem getState()
     #}
     #uiTools attachAction(substitutionAllowedMenuItem,toggleSubstitution)
-    
-    
+
+
     # capScript menu
     # scriptEvaluator must be a single-argument receiver, receiving a
     # source text
@@ -800,10 +800,10 @@
     #scriptFolder,
     #def confiner(source) :any {confinedRunner(source, outputPane)})
     #E call(menubar, "add(JMenu)", [capScriptMenu])
-    
+
     #def indentGroup := <swing:ButtonGroup> new()
     #var defaultIndentItem := null
-    
+
     def menuReactor {
         to doNew(){newFileFunc()}
         to doOpen() {openFunc()}
@@ -816,7 +816,7 @@
         to doAbout() {eBrowser about()}
         match [verb,args] {traceln("menu hit for " + verb)}
     }
-    
+
     #make the menus
     def mm := <import:com.skyhunter.ex.swing.menuMakerAuthor> (
         swing__uriGetter,
@@ -843,7 +843,7 @@
     ])
     #defaultIndentItem setSelected(true)
     mainFrame setJMenuBar(menuBar)
-    
+
     # configure and show window
     mainPane add(realPane)
     setTitle()
@@ -857,7 +857,7 @@
     # def width := varLineSplitter getBounds() width()
     E call(varLineSplitter, "setDividerLocation(int)",[600])
     mainFrame show()
-    
+
     def windowActiveListener {
         to windowActivated(e) {
             if (textModel storedVersionIsNewer()) {
@@ -873,24 +873,24 @@
                 if (shouldUpdate == <swing:JOptionPane> YES_OPTION()) {
                     textPane setText(textModel reload())
                 } else {textModel resetSaveTimeNoReload()}
-                
+
             }
         }
         match _ {}
     }
     mainFrame addWindowListener(windowActiveListener)
-    
+
     startOutlineSyncer(farBrowseServerMaker <- new(), textModel, textPane)
-    
+
     def path := textModel getFilePath()
     def textSelector := textSelectorMaker new(textPane, `file:$path`)
     def problemReporter := problemReporterMaker new(textSelector, outputPane, statusPane)
-    
+
     def getTwine() :Twine {
         def reader := StringReaderMaker new(textPane getText())
         reader getTwine(`file:$path`)
     }
-    
+
     var undisposed := true
     def closeCleanly() {
         textModel close()
@@ -899,7 +899,7 @@
             undisposed := false
         }
     }
-    
+
     def bind eBrowser {
         to save() {
             if (textModel saveFileIsSet()) {
@@ -926,7 +926,7 @@
                     startFoundIndex + searchField getText() size())
                 eBrowser setStatus("Found")
                 textPane requestFocus()
-                
+
             } else {eBrowser setStatus("Not Found")}
         }
         to goto() {



1.5       +1 -1      e/src/jsrc/net/ertp/Assay.java

Index: Assay.java
===================================================================
RCS file: /cvs/e/src/jsrc/net/ertp/Assay.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Assay.java	2001/09/06 09:55:39	1.4
+++ Assay.java	2001/11/10 19:40:37	1.5
@@ -105,7 +105,7 @@
      * contain adequate erights to fund the transfer.
      */
     void transfer(Purse src, Purse dest)
-         throws UnsealingException, InsufficientERightsException;
+      throws UnsealingException, InsufficientERightsException;
 
     /**
      * Return -1.0, 0.0, 1.0, or NaN as the erights represented by this Assay



1.5       +7 -2      e/src/jsrc/net/ertp/InsufficientERightsException.java

Index: InsufficientERightsException.java
===================================================================
RCS file: /cvs/e/src/jsrc/net/ertp/InsufficientERightsException.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- InsufficientERightsException.java	2001/09/06 09:55:39	1.4
+++ InsufficientERightsException.java	2001/11/10 19:40:37	1.5
@@ -29,7 +29,12 @@
  * @author <a href="mailto:markm@erights.org">Mark S. Miller</a>
  */
 public class InsufficientERightsException extends Exception {
-    public InsufficientERightsException() {}
-    public InsufficientERightsException(String msg) { super(msg); }
+
+    public InsufficientERightsException() {
+    }
+
+    public InsufficientERightsException(String msg) {
+        super(msg);
+    }
 }
 



1.6       +1 -1      e/src/jsrc/net/ertp/Issuer.java

Index: Issuer.java
===================================================================
RCS file: /cvs/e/src/jsrc/net/ertp/Issuer.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Issuer.java	2001/09/06 09:55:39	1.5
+++ Issuer.java	2001/11/10 19:40:37	1.6
@@ -63,7 +63,7 @@
      * @return If so, it returns the candidate.
      * @exception UnsealingException If not, it throws
      UnsealingException.
-    */
+     */
     Object vouch(Object candidate) throws UnsealingException;
 
     /**



1.3       +11 -2     e/src/jsrc/net/vattp/data/AuthSecrets.java

Index: AuthSecrets.java
===================================================================
RCS file: /cvs/e/src/jsrc/net/vattp/data/AuthSecrets.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AuthSecrets.java	2001/10/02 01:29:18	1.2
+++ AuthSecrets.java	2001/11/10 19:40:37	1.3
@@ -27,15 +27,24 @@
  * @author Bill Frantz
  */
 
-/*package*/ class AuthSecrets {
+/*package*/
+class AuthSecrets {
+
     String myEProtocolVersion;
+
     String myProtocolSuite;
+
     byte[] myMacKey;
+
     byte[] myDHSecret;
+
     byte[] myOutgoingSequence;
+
     byte[] myIncomingSequence;
+
+    AuthSecrets() {
+    }
 
-    AuthSecrets() {}
     public String toString() {
         return "EProtocol=" + myEProtocolVersion + " AuthProtocol=" + myProtocolSuite;
     }



1.3       +3 -1      e/src/jsrc/net/vattp/data/ConnectionAttemptFailed.java

Index: ConnectionAttemptFailed.java
===================================================================
RCS file: /cvs/e/src/jsrc/net/vattp/data/ConnectionAttemptFailed.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ConnectionAttemptFailed.java	2001/09/06 09:55:39	1.2
+++ ConnectionAttemptFailed.java	2001/11/10 19:40:37	1.3
@@ -27,7 +27,9 @@
  *
  * @author Bill Frantz
  */
-/*package*/ class ConnectionAttemptFailed extends IOException {
+/*package*/
+class ConnectionAttemptFailed extends IOException {
+
     /*package*/ ConnectionAttemptFailed(String s) {
         super(s);
     }



1.2       +3 -2      e/src/jsrc/net/vattp/data/ConnectionShutDownException.java

Index: ConnectionShutDownException.java
===================================================================
RCS file: /cvs/e/src/jsrc/net/vattp/data/ConnectionShutDownException.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ConnectionShutDownException.java	2000/12/21 22:15:18	1.1
+++ ConnectionShutDownException.java	2001/11/10 19:40:37	1.2
@@ -18,11 +18,12 @@
 
 Contributor(s): ______________________________________.
 */
+
 import java.io.IOException;
 
 /**
-   An Exception to report that the connection was shut down normally.
-   @author Bill Frantz
+ An Exception to report that the connection was shut down normally.
+ @author Bill Frantz
  */
 public class ConnectionShutDownException extends IOException {
 



1.6       +149 -132  e/src/jsrc/net/vattp/data/DES.java

Index: DES.java
===================================================================
RCS file: /cvs/e/src/jsrc/net/vattp/data/DES.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- DES.java	2001/09/06 09:55:39	1.5
+++ DES.java	2001/11/10 19:40:37	1.6
@@ -1,7 +1,11 @@
 package net.vattp.data;
-// $Id: DES.java,v 1.5 2001/09/06 09:55:39 markm Exp $
+
+// $Id: DES.java,v 1.6 2001/11/10 19:40:37 markm Exp $
 //
 // $Log: DES.java,v $
+// Revision 1.6  2001/11/10 19:40:37  markm
+// tabs, reformatting, little things
+//
 // Revision 1.5  2001/09/06 09:55:39  markm
 // just formatting and import cleanups
 //
@@ -132,7 +136,7 @@
  * <a href="http://www.systemics.com/docs/cryptix/">Cryptix Development Team</a>.
  * <br>All rights reserved.
  *
- * <p><b>$Revision: 1.5 $</b>
+ * <p><b>$Revision: 1.6 $</b>
  * @author  Systemics Ltd
  * @author  Geoffrey Keating (this Java implementation)
  * @author  Eric Young
@@ -148,6 +152,7 @@
 //...........................................................................
 
     static private final boolean DEBUG = true;
+
     static private final int debuglevel = DEBUG ? 1 : 0;
 
 
@@ -159,17 +164,20 @@
 //...........................................................................
 
     static private final int
-        ROUNDS = 16,                        // number of encryption/decryption rounds
-        BLOCK_SIZE = 8,                     // DES block size in bytes
-        KEY_LENGTH = 8,                     // DES key length in bytes
-        INTERNAL_KEY_LENGTH = ROUNDS * 2;   // number of elements in key schedule
+      ROUNDS = 16,                        // number of encryption/decryption rounds
+    BLOCK_SIZE = 8,                     // DES block size in bytes
+    KEY_LENGTH = 8,                     // DES key length in bytes
+    INTERNAL_KEY_LENGTH = ROUNDS * 2;   // number of elements in key schedule
 
     /**
      * State for encrypt/decrypt/uninitialized.
      */
     private int encryptDecryptState = UNINITIALIZED;
+
     static private final int UNINITIALIZED = 0;
+
     static private final int ENCRYPT = 1;
+
     static private final int DECRYPT = 2;
 
     /**
@@ -199,7 +207,7 @@
         // represent the bit number that each permutated bit is derived from
         // according to FIPS-46
         String cd =
-            "D]PKESYM`UBJ\\@RXA`I[T`HC`LZQ"+"\\PB]TL`[C`JQ@Y`HSXDUIZRAM`EK";
+          "D]PKESYM`UBJ\\@RXA`I[T`HC`LZQ" + "\\PB]TL`[C`JQ@Y`HSXDUIZRAM`EK";
         int j, s, bit;
         int count = 0;
         int offset = 0;
@@ -224,24 +232,26 @@
         // that would be terribly inefficient (code size + time).
         // Instead we use a compressed representation --GK
         String spt =
-            "g3H821:80:H03BA0@N1290BAA88::3112aIH8:8282@0@AH0:1W3A8P810@22;22"+
-            "A18^@9H9@129:<8@822`?:@0@8PH2H81A19:G1@03403A0B1;:0@1g192:@919AA"+
-            "0A109:W21492H@0051919811:215011139883942N8::3112A2:31981jM118::A"+
-            "101@I88:1aN0<@030128:X;811`920:;H0310D1033@W980:8A4@804A3803o1A2"+
-            "021B2:@1AH023GA:8:@81@@12092B:098042P@:0:A0HA9>1;289:@1804:40Ph="+
-            "1:H0I0HP0408024bC9P8@I808A;@0@0PnH0::8:19J@818:@iF0398:8A9H0<13@"+
-            "001@11<8;@82B01P0a2989B:0AY0912889bD0A1@B1A0A0AB033O91182440A9P8"+
-            "@I80n@1I03@1J828212A`A8:12B1@19A9@9@8^B:0@H00<82AB030bB840821Q:8"+
-            "310A302102::A1::20A1;8"; // OK, try to type _that_!
-            // [526 chars, 3156 bits]
+          "g3H821:80:H03BA0@N1290BAA88::3112aIH8:8282@0@AH0:1W3A8P810@22;22" +
+          "A18^@9H9@129:<8@822`?:@0@8PH2H81A19:G1@03403A0B1;:0@1g192:@919AA" +
+          "0A109:W21492H@0051919811:215011139883942N8::3112A2:31981jM118::A" +
+          "101@I88:1aN0<@030128:X;811`920:;H0310D1033@W980:8A4@804A3803o1A2" +
+          "021B2:@1AH023GA:8:@81@@12092B:098042P@:0:A0HA9>1;289:@1804:40Ph=" +
+          "1:H0I0HP0408024bC9P8@I808A;@0@0PnH0::8:19J@818:@iF0398:8A9H0<13@" +
+          "001@11<8;@82B01P0a2989B:0AY0912889bD0A1@B1A0A0AB033O91182440A9P8" +
+          "@I80n@1I03@1J828212A`A8:12B1@19A9@9@8^B:0@H00<82AB030bB840821Q:8" +
+          "310A302102::A1::20A1;8"; // OK, try to type _that_!
+        // [526 chars, 3156 bits]
         // The theory is that each bit position in each int of SP_TRANS is
         // set in exactly 32 entries. We keep track of set bits.
         offset = 0;
         int k, c, param;
-        for (int i = 0; i < 32; i++) { // each bit position
+        for (int i = 0; i < 32; i++) {
+            // each bit position
             k = -1; // pretend the -1th bit was set
             bit = 1 << i;
-            for (j = 0; j < 32; j++) { // each set bit
+            for (j = 0; j < 32; j++) {
+                // each set bit
                 // Each character consists of two three-bit values:
                 c = spt.charAt(offset >> 1) - '0' >> (offset & 1) * 3 & 7;
                 offset++;
@@ -304,7 +314,9 @@
      *
      * @return the length in bytes of an input block for this cipher.
      */
-    public int blockSize() { return BLOCK_SIZE; }
+    public int blockSize() {
+        return BLOCK_SIZE;
+    }
 
     /**
      * <b>SPI</b>: Initializes this cipher for encryption, using the
@@ -316,8 +328,8 @@
      *                <li> The length of the user key array is not KEY_LENGTH.
      *              </ul>
      */
-    public void initEncrypt (byte[] key)
-    throws InvalidKeyException {
+    public void initEncrypt(byte[] key)
+      throws InvalidKeyException {
         makeKey(key);
         encryptDecryptState = ENCRYPT;
     }
@@ -332,8 +344,8 @@
      *                <li> The length of the user key array is not KEY_LENGTH.
      *              </ul>
      */
-    public void initDecrypt (byte[] key)
-    throws InvalidKeyException {
+    public void initDecrypt(byte[] key)
+      throws InvalidKeyException {
         makeKey(key);
         encryptDecryptState = DECRYPT;
     }
@@ -341,10 +353,10 @@
     public byte[] crypt(byte[] data) {
         if (data.length != BLOCK_SIZE) {
             throw new IllegalArgumentException("data.length != BLOCK_SIZE");
-	}
-	byte [] ans = new byte[BLOCK_SIZE];
-	update(data, 0, BLOCK_SIZE, ans, 0);
-	return ans;
+        }
+        byte[] ans = new byte[BLOCK_SIZE];
+        update(data, 0, BLOCK_SIZE, ans, 0);
+        return ans;
     }
 
     /**
@@ -369,8 +381,8 @@
         boolean doEncrypt = (encryptDecryptState == ENCRYPT);
 
         // Avoid overlapping input and output regions.
-        if (in == out && (outOffset >= inOffset && outOffset < (long)inOffset+inLen ||
-                          inOffset >= outOffset && inOffset < (long)outOffset+inLen)) {
+        if (in == out && (outOffset >= inOffset && outOffset < (long)inOffset + inLen ||
+          inOffset >= outOffset && inOffset < (long)outOffset + inLen)) {
             byte[] newin = new byte[inLen];
             System.arraycopy(in, inOffset, newin, 0, inLen);
             in = newin;
@@ -398,8 +410,8 @@
      *                <li> The length of the user key array is not KEY_LENGTH.
      *              </ul>
      */
-    private void makeKey (byte[] userkey)
-    throws InvalidKeyException {
+    private void makeKey(byte[] userkey)
+      throws InvalidKeyException {
 
         if (userkey == null)
             throw new InvalidKeyException(getAlgorithm() + ": Null user key");
@@ -408,14 +420,14 @@
             throw new InvalidKeyException(getAlgorithm() + ": Invalid user key length");
 
         int i = 0;
-        int c = (userkey[i++] & 0xFF)       |
-                (userkey[i++] & 0xFF) <<  8 |
-                (userkey[i++] & 0xFF) << 16 |
-                (userkey[i++] & 0xFF) << 24;
-        int d = (userkey[i++] & 0xFF)       |
-                (userkey[i++] & 0xFF) <<  8 |
-                (userkey[i++] & 0xFF) << 16 |
-                (userkey[i++] & 0xFF) << 24;
+        int c = (userkey[i++] & 0xFF) |
+          (userkey[i++] & 0xFF) << 8 |
+          (userkey[i++] & 0xFF) << 16 |
+          (userkey[i++] & 0xFF) << 24;
+        int d = (userkey[i++] & 0xFF) |
+          (userkey[i++] & 0xFF) << 8 |
+          (userkey[i++] & 0xFF) << 16 |
+          (userkey[i++] & 0xFF) << 24;
 
         int t = ((d >>> 4) ^ c) & 0x0F0F0F0F;
         c ^= t;
@@ -434,10 +446,10 @@
         c ^= t;
         d ^= t << 1;
 
-        d = (d & 0x000000FF) <<  16 |
-            (d & 0x0000FF00)        |
-            (d & 0x00FF0000) >>> 16 |
-            (c & 0xF0000000) >>>  4;
+        d = (d & 0x000000FF) << 16 |
+          (d & 0x0000FF00) |
+          (d & 0x00FF0000) >>> 16 |
+          (c & 0xF0000000) >>> 4;
         c &= 0x0FFFFFFF;
 
         int s;
@@ -451,19 +463,19 @@
                 c = (c >>> 1 | c << 27) & 0x0FFFFFFF;
                 d = (d >>> 1 | d << 27) & 0x0FFFFFFF;
             }
-            s = SKB[           c         & 0x3F                        ] |
-                SKB[0x040 | (((c >>>  6) & 0x03) | ((c >>>  7) & 0x3C))] |
-                SKB[0x080 | (((c >>> 13) & 0x0F) | ((c >>> 14) & 0x30))] |
-                SKB[0x0C0 | (((c >>> 20) & 0x01) | ((c >>> 21) & 0x06)
-                                                 | ((c >>> 22) & 0x38))];
-            t = SKB[0x100 | ( d         & 0x3F                      )] |
-                SKB[0x140 | (((d >>>  7) & 0x03) | ((d >>>  8) & 0x3c))] |
-                SKB[0x180 | ((d >>> 15) & 0x3F                      )] |
-                SKB[0x1C0 | (((d >>> 21) & 0x0F) | ((d >>> 22) & 0x30))];
-
-            sKey[j++] = t <<  16 | (s & 0x0000FFFF);
-            s         = s >>> 16 | (t & 0xFFFF0000);
-            sKey[j++] = s <<   4 |  s >>> 28;
+            s = SKB[c & 0x3F] |
+              SKB[0x040 | (((c >>> 6) & 0x03) | ((c >>> 7) & 0x3C))] |
+              SKB[0x080 | (((c >>> 13) & 0x0F) | ((c >>> 14) & 0x30))] |
+              SKB[0x0C0 | (((c >>> 20) & 0x01) | ((c >>> 21) & 0x06)
+              | ((c >>> 22) & 0x38))];
+            t = SKB[0x100 | (d & 0x3F)] |
+              SKB[0x140 | (((d >>> 7) & 0x03) | ((d >>> 8) & 0x3c))] |
+              SKB[0x180 | ((d >>> 15) & 0x3F)] |
+              SKB[0x1C0 | (((d >>> 21) & 0x0F) | ((d >>> 22) & 0x30))];
+
+            sKey[j++] = t << 16 | (s & 0x0000FFFF);
+            s = s >>> 16 | (t & 0xFFFF0000);
+            sKey[j++] = s << 4 | s >>> 28;
         }
     }
 
@@ -477,16 +489,16 @@
      * @param  encrypt  true to encrypt, false to decrypt
      */
     private void
-    des (byte[] in, int inOffset, byte[] out, int outOffset, boolean encrypt) {
+      des(byte[] in, int inOffset, byte[] out, int outOffset, boolean encrypt) {
         int[] lr = {
-            (in[inOffset++] & 0xFF)       |
-            (in[inOffset++] & 0xFF) <<  8 |
-            (in[inOffset++] & 0xFF) << 16 |
-            (in[inOffset++] & 0xFF) << 24,
-            (in[inOffset++] & 0xFF)       |
-            (in[inOffset++] & 0xFF) <<  8 |
-            (in[inOffset++] & 0xFF) << 16 |
-            (in[inOffset  ] & 0xFF) << 24};
+            (in[inOffset++] & 0xFF) |
+          (in[inOffset++] & 0xFF) << 8 |
+          (in[inOffset++] & 0xFF) << 16 |
+          (in[inOffset++] & 0xFF) << 24,
+            (in[inOffset++] & 0xFF) |
+          (in[inOffset++] & 0xFF) << 8 |
+          (in[inOffset++] & 0xFF) << 16 |
+          (in[inOffset] & 0xFF) << 24};
 
         initialPermutation(lr);
 
@@ -501,18 +513,18 @@
         int R = lr[0];
         int L = lr[1];
 
-        out[outOffset++] = (byte) L;
-        out[outOffset++] = (byte)(L >>  8);
+        out[outOffset++] = (byte)L;
+        out[outOffset++] = (byte)(L >> 8);
         out[outOffset++] = (byte)(L >> 16);
         out[outOffset++] = (byte)(L >> 24);
-        out[outOffset++] = (byte) R;
-        out[outOffset++] = (byte)(R >>  8);
+        out[outOffset++] = (byte)R;
+        out[outOffset++] = (byte)(R >> 8);
         out[outOffset++] = (byte)(R >> 16);
-        out[outOffset  ] = (byte)(R >> 24);
+        out[outOffset] = (byte)(R >> 24);
     }
 
     /** Implements DES encryption without IP and FP. */
-    private void encrypt_base (int[] io) {
+    private void encrypt_base(int[] io) {
         int L = io[0];
         int R = io[1];
 
@@ -527,33 +539,33 @@
             u = R ^ sKey[i++];
             t = R ^ sKey[i++];
             t = t >>> 4 | t << 28;
-            L ^= (SP_TRANS[0x040 | (t         & 0x3F)] |
-                  SP_TRANS[0x0C0 | ((t >>>  8) & 0x3F)] |
-                  SP_TRANS[0x140 | ((t >>> 16) & 0x3F)] |
-                  SP_TRANS[0x1C0 | ((t >>> 24) & 0x3F)] |
-                  SP_TRANS[          u         & 0x3F ] |
-                  SP_TRANS[0x080 | ((u >>>  8) & 0x3F)] |
-                  SP_TRANS[0x100 | ((u >>> 16) & 0x3F)] |
-                  SP_TRANS[0x180 | ((u >>> 24) & 0x3F)]);
+            L ^= (SP_TRANS[0x040 | (t & 0x3F)] |
+              SP_TRANS[0x0C0 | ((t >>> 8) & 0x3F)] |
+              SP_TRANS[0x140 | ((t >>> 16) & 0x3F)] |
+              SP_TRANS[0x1C0 | ((t >>> 24) & 0x3F)] |
+              SP_TRANS[u & 0x3F] |
+              SP_TRANS[0x080 | ((u >>> 8) & 0x3F)] |
+              SP_TRANS[0x100 | ((u >>> 16) & 0x3F)] |
+              SP_TRANS[0x180 | ((u >>> 24) & 0x3F)]);
 
             u = L ^ sKey[i++];
             t = L ^ sKey[i++];
             t = t >>> 4 | t << 28;
-            R ^= (SP_TRANS[0x040 | (t         & 0x3F)] |
-                  SP_TRANS[0x0C0 | ((t >>>  8) & 0x3F)] |
-                  SP_TRANS[0x140 | ((t >>> 16) & 0x3F)] |
-                  SP_TRANS[0x1C0 | ((t >>> 24) & 0x3F)] |
-                  SP_TRANS[          u         & 0x3F ] |
-                  SP_TRANS[0x080 | ((u >>>  8) & 0x3F)] |
-                  SP_TRANS[0x100 | ((u >>> 16) & 0x3F)] |
-                  SP_TRANS[0x180 | ((u >>> 24) & 0x3F)]);
+            R ^= (SP_TRANS[0x040 | (t & 0x3F)] |
+              SP_TRANS[0x0C0 | ((t >>> 8) & 0x3F)] |
+              SP_TRANS[0x140 | ((t >>> 16) & 0x3F)] |
+              SP_TRANS[0x1C0 | ((t >>> 24) & 0x3F)] |
+              SP_TRANS[u & 0x3F] |
+              SP_TRANS[0x080 | ((u >>> 8) & 0x3F)] |
+              SP_TRANS[0x100 | ((u >>> 16) & 0x3F)] |
+              SP_TRANS[0x180 | ((u >>> 24) & 0x3F)]);
         }
         io[0] = R >>> 1 | R << 31;
         io[1] = L >>> 1 | L << 31;
     }
 
     /** Implements DES decryption without IP and FP. */
-    private void decrypt_base (int[] io) {
+    private void decrypt_base(int[] io) {
         int L = io[0];
         int R = io[1];
 
@@ -568,32 +580,32 @@
             t = R ^ sKey[i--];
             u = R ^ sKey[i--];
             t = t >>> 4 | t << 28;
-            L ^= (SP_TRANS[0x040 | (t         & 0x3F)] |
-                  SP_TRANS[0x0C0 | ((t >>>  8) & 0x3F)] |
-                  SP_TRANS[0x140 | ((t >>> 16) & 0x3F)] |
-                  SP_TRANS[0x1C0 | ((t >>> 24) & 0x3F)] |
-                  SP_TRANS[          u         & 0x3F ] |
-                  SP_TRANS[0x080 | ((u >>>  8) & 0x3F)] |
-                  SP_TRANS[0x100 | ((u >>> 16) & 0x3F)] |
-                  SP_TRANS[0x180 | ((u >>> 24) & 0x3F)]);
+            L ^= (SP_TRANS[0x040 | (t & 0x3F)] |
+              SP_TRANS[0x0C0 | ((t >>> 8) & 0x3F)] |
+              SP_TRANS[0x140 | ((t >>> 16) & 0x3F)] |
+              SP_TRANS[0x1C0 | ((t >>> 24) & 0x3F)] |
+              SP_TRANS[u & 0x3F] |
+              SP_TRANS[0x080 | ((u >>> 8) & 0x3F)] |
+              SP_TRANS[0x100 | ((u >>> 16) & 0x3F)] |
+              SP_TRANS[0x180 | ((u >>> 24) & 0x3F)]);
 
             t = L ^ sKey[i--];
             u = L ^ sKey[i--];
             t = t >>> 4 | t << 28;
-            R ^= (SP_TRANS[0x040 | (t         & 0x3F)] |
-                  SP_TRANS[0x0C0 | ((t >>>  8) & 0x3F)] |
-                  SP_TRANS[0x140 | ((t >>> 16) & 0x3F)] |
-                  SP_TRANS[0x1C0 | ((t >>> 24) & 0x3F)] |
-                  SP_TRANS[          u         & 0x3F ] |
-                  SP_TRANS[0x080 | ((u >>>  8) & 0x3F)] |
-                  SP_TRANS[0x100 | ((u >>> 16) & 0x3F)] |
-                  SP_TRANS[0x180 | ((u >>> 24) & 0x3F)]);
+            R ^= (SP_TRANS[0x040 | (t & 0x3F)] |
+              SP_TRANS[0x0C0 | ((t >>> 8) & 0x3F)] |
+              SP_TRANS[0x140 | ((t >>> 16) & 0x3F)] |
+              SP_TRANS[0x1C0 | ((t >>> 24) & 0x3F)] |
+              SP_TRANS[u & 0x3F] |
+              SP_TRANS[0x080 | ((u >>> 8) & 0x3F)] |
+              SP_TRANS[0x100 | ((u >>> 16) & 0x3F)] |
+              SP_TRANS[0x180 | ((u >>> 24) & 0x3F)]);
         }
         io[0] = R >>> 1 | R << 31;
         io[1] = L >>> 1 | L << 31;
     }
 
-    static private void initialPermutation (int[] io) {
+    static private void initialPermutation(int[] io) {
         int L = io[0];
         int R = io[1];
         int t = ((R >>> 4) ^ L) & 0x0F0F0F0F;
@@ -613,7 +625,7 @@
         io[1] = R ^ (t << 1);
     }
 
-    static private void finalPermutation (int[] io) {
+    static private void finalPermutation(int[] io) {
         int L = io[1];
         int R = io[0];
         int t = (R >>> 1 ^ L) & 0x55555555;
@@ -633,7 +645,9 @@
         io[0] = R ^ (t << 4);
     }
 
-  static private String getAlgorithm() { return "DES"; }
+    static private String getAlgorithm() {
+