eXept Software AG Logo

Smalltalk/X Webserver

Documentation of class 'Project':

Home

Documentation
www.exept.de
Everywhere
for:
[back]

Class: Project


Inheritance:

   Object
   |
   +--Project

Package:
stx:libbasic
Category:
System-Support
Version:
rev: 1.220 date: 2018/05/24 19:09:36
user: cg
file: Project.st directory: libbasic
module: stx stc-classLibrary: libbasic
Author:
Claus Gittinger

Description:


WARNING:
    This class is almost completely obsolete 
    (before even being finished)

Most references to this class are being removed, and we are only
looking at PackageId and ProjectDefinition in the future.
Please ignore everything regarding to packaging and building below.
Project instance(s) are still used to keep a reference to the current changeSet,
but even that may move to a projectDefinition in the future.

All this class does is to keep track of per-project views 
(to hide or show them), define the directory when filing-out,
and define packageNames for new classes and methods.

instance variables:
    name            <String>        the name of this project, as shown
                                    in a ProjectView

    changeSet       <ChangeSet>     changes done, while this was the active project

    views           <Collection>    views opened while this was the active project

    directoryName   <String>        directory name, where fileOuts are done

    properties 

    packageName     <String>        given to classes/methods which are created while
                                    this is the active project

    repositoryDirectory             (default) name of the repository, when a new source containers are
                                    created.

    repositoryModule                (default) name of the module, when new source containers are
                                    created.

Future: 
    - keep track of per-project changes
    - allow speficiation of the type of the project (application or library)
    - allow building of whatever the target (as defined by the type) is
      (this will allow build of class libs and apps by clicking a button)
    - allow removal of project specific classes, methods etc.


Class protocol:

accessing
o  addKnownProject: aProject

o  addLoadedProject: aProject

o  current
return the currently active project
usage example(s):
     Project current

o  current: aProject
set the currently active project

o  currentPackageName
Project currentPackageName

o  defaultNameSpace
return the default namespace, where new classes are installed,
if NO special nameSpace handler is present

o  defaultProject
return the SystemDefault project
usage example(s):
     Project defaultProject package

o  knownProjects

o  loadedProjects

o  noProjectID

o  projectNamed: aProjectName
retrieve the named project; return nil if not known
usage example(s):
     Project projectNamed:'stx'
     Project projectNamed:'default'

o  projectWithId: aPackageId
retrieve the project with a particular id; return nil if not known
usage example(s):
     Project projectWithId:#'stx:libbasic'
     Project projectWithId:'__NoProject__'

o  setDefaultProject
set the currently active project to be the SystemDEfault project

o  setProject: aProjectOrNil
set the currently active project without updating others

changes management
o  addClassCommentChangeFor: aClass
add a comment-change for aClass to the current project

o  addClassDefinitionChangeFor: aClass
add a class-def-change for aClass to the current project

o  addClassRemoveChange: oldClass
add a class-remove-change to the current project

o  addClassRenameChangeFrom: oldName to: newName
add a class-rename-change to the current project

o  addDoIt: aString
add a doIt to the current project

o  addInstVarDefinitionChangeFor: aClass
add an instvar-change for aClass to the current project

o  addMethodCategoryChange: aMethod category: newCategory in: aClass
add a method-category-change for aMethod in aClass to the current project

o  addMethodChange: aMethod fromOld: oldMethod in: aClass
add a method change in aClass to the current project

o  addMethodChange: aMethod in: aClass
add a method change in aClass to the current project

o  addMethodPackageChange: aMethod package: newPackage in: aClass
add a method-package-change for aMethod in aClass to the current project

o  addMethodPrivacyChange: aMethod in: aClass
add a privacy change for aMethod in aClass to the current project

o  addPrimitiveDefinitionsChangeFor: aClass
add a primitiveDef change for aClass to the current project

o  addPrimitiveFunctionsChangeFor: aClass
add a primitiveFuncs change for aClass to the current project

o  addPrimitiveVariablesChangeFor: aClass
add a primitiveVars change for aClass to the current project

o  addRemoveSelectorChange: aSelector fromOld: oldMethod in: aClass
add a method-remove change in aClass to the current project

o  addRenameCategoryChangeIn: aClass from: oldCategory to: newCategory
add a category rename change for aClass to the current project

o  currentProjectDirectory
return the name of the directory to use for fileOut.
The returned name already includes a file-separator at the end,
so the filename can be concatenated to it.

initialization
o  initKnownProjects
this is a temporary experimental kludge
usage example(s):
     AllProjects := nil.
     self initKnownProjects

o  initialize
SystemProject := nil.
Project initialize

o  initializeSystemProject

o  reinitKnownProjects
rescan the image for projects

instance creation
o  new


Instance protocol:

accessing
o  changeSet
return the set of changes made in this project

o  changeSet: aChangeSet
set the set of changes made in this project - dangerous, you may loose
the actual changeSet.

o  changedClasses
Project current changedClasses

o  defaultNameSpace
return the defaultNameSpace of this project.
New classes will (if not specified by a directive) be installed
in this nameSpace. Useful, when filing in ST-80 code, to avoid
overwriting of standard classes.

o  defaultNameSpace: aNamespace
set the defaultNameSpace of this project.
New classes will (if not specified by a directive) be installed
in this nameSpace. Useful, when filing in ST-80 code, to avoid
overwriting of standard classes.

o  directory
return the projects directory.
If not specified, a fileOut will be done into that directory

o  directory: aDirectoryName
set the projects directory.
If not specified, a fileOut will be done into that directory

o  isLoaded: aBoolean

o  libraryName
return the projects library name.
This is the name of a classLibrary, created from this project

o  name
return the projects name.
This is for the user only - shown in the projectViews label

o  name: aString
set the projects name.
This is for the user only - shown in the projectViews label

o  package
return the projects package identifier.
This identifier marks all methods and new classes which are created
in this project.

o  package: aPackageId
set the projects package identifier.
This identifier marks all methods and new classes which are created
in this project.

o  repositoryDirectory
return the projects default repository location.
This is offered initially, when classes are checked into the
source repository initially

o  repositoryDirectory: aRelativePathName
set the projects default repository location.
This will be offered initially, when classes are checked into the
source repository initially

o  repositoryModule
return the projects default repository module name.
This is offered initially, when classes are checked into the
source repository initially

o  repositoryModule: aString
set the projects default repository module name.
This is offered initially, when classes are checked into the
source repository initially

o  views
return a collection of views which were opened in this project

o  views: aSetOfViews
set the collection of views which were opened in this project

administration
o  removeClassesFromSystem
remove the all of my classes & patches from the system

o  removeFromSystem
remove the project and all of its classes & patches from the system

changes
o  addClassCommentChangeFor: aClass
add a comment-change for aClass to the receiver's changeSet

o  addClassDefinitionChangeFor: aClass
add a class-def-change for aClass to the receiver's changeSet

o  addClassRemoveChange: oldClass
add a class-remove-change to the current project

o  addClassRenameChangeFrom: oldName to: newName
add a class-rename-change to the current project

o  addDoIt: aString
add a doIt to the receiver's changeSet

o  addInstVarDefinitionChangeFor: aClass
add an instvar-definition-change for aClass to the receiver's changeSet

o  addMethodCategoryChange: aMethod category: newCategory in: aClass
add a method-category-change for aMethod in aClass to the receiver's changeSet

o  addMethodChange: aMethod fromOld: oldMethod in: aClass
add a method change in aClass to the receiver's changeSet

o  addMethodChange: aMethod in: aClass
add a method change in aClass to the receiver's changeSet

o  addMethodPackageChange: aMethod package: newPackage in: aClass
add a method-package-change for aMethod in aClass to the receiver's changeSet

o  addMethodPrivacyChange: aMethod in: aClass
add a privacy change for aMethod in aClass to the receiver's changeSet

o  addPrimitiveDefinitionsChangeFor: aClass
add a primitiveDef change for aClass to the receiver's changeSet

o  addPrimitiveFunctionsChangeFor: aClass
add a primitiveFuncs change for aClass to the receiver's changeSet

o  addPrimitiveVariablesChangeFor: aClass
add a primitiveVars change for aClass to the receiver's changeSet

o  addRemoveSelectorChange: aSelector fromOld: oldMethod in: aClass
add a method-remove change in aClass to the receiver's changeSet

o  addRenameCategoryChangeIn: aClass from: oldCategory to: newCategory
add a category rename change in aClass to the receiver's changeSet

o  condenseChangesForClassCheckin: aClass

o  condenseChangesForExtensionsCheckInInPackage: package

initialization
o  initialize
OperatingSystem getLoginName

printing & storing
o  displayOn: aGCOrStream
Compatibility
append a printed desription on some stream (Dolphin, Squeak)
OR:
display the receiver in a graphicsContext at 0@0 (ST80).
This method allows for any object to be displayed in some view
(although the fallBack is to display its printString ...)

properties
o  addClass: classOrClassName
add a class to the project

o  addClass: classOrClassName classFileName: fileName
add a class to the project

o  addClass: classOrClassName conditionForInclusion: conditionBlock classFileName: fileName
add a class to the project

o  addClassInfo: newInfo
add a class info to the project

o  classInfo: aClassInfoCollection
set the class info of the project

o  properties
return the property dictionary

o  properties: p
set the property dictionary

o  propertyAt: aKey
return a property; the key is a symbol

o  propertyAt: aKey put: aValue
set a property; the key is a symbol

queries
o  areAllClassesLoaded
return true, if all classes of the package are loaded
(i.e. there are no autoloaded stubs present)

o  classInfo
return a classInfo collection of classes belonging to that project

o  classInfoFor: aClassOrClassName
return a classInfo for a particular class

o  classes
return a collection of classes belonging to that project.
This excludes any private classes.

o  includesClass: aClassOrClassName
return true, if a class is contained in the project

o  includesMethod: aMethod
return true, if the given method is contained in the project
(either as patch/extension or as class

o  includesMethodPatch: aMethod
return true, if the given method is contained in the project
as patch/extension

o  isDefaultProject

o  isLoaded
return true, if all of this project-package has been loaded
into the system
usage example(s):
     (Project projectWithId:#'stx:libbasic') isLoaded
     (Project projectWithId:#'stx:goodies/persistency') isLoaded 

o  methodInfo
return a methodInfo collection of methods belonging to that project
usage example(s):
already a methodInfo

o  methods
return a collection of methods belonging to that project.
This excludes any methods which are already in my class-set.

views
o  addView: aView
add a view to this projects set of views

o  destroyViews
destroy all views of this project

o  hideViews
hide all views of this project

o  removeView: aView
remove a view from this projects set of views

o  showViews
show all views of this project


Private classes:

    ClassInfo
    MethodInfo


ST/X 7.1.0.0; WebServer 1.663 at exept.de:8081; Wed, 12 Dec 2018 21:06:39 GMT