
Features and operations of teikade windows
==========================================

This file contains description about features and operations
for each window used by teikade system.


- Transcript
  This frame is used by the system to tell any informations
  to the user. This window opens automatically when the system
  comes up. Adding new project and opening browser on a project
  is done via this frame's menu.

	+------------------------------------------------+
	| File  Project  Frame                           |
	+------------------------------------------------+
	|                                                |
	|                                                |
	|                                                |
	|                  messages                      |
	|                                                |
	|                                                |
	|                                                |
	+------------------------------------------------+

  Menu bar:

    File menu

      open changes
	Open ChangeListFrame on certain change file.
	You can browse change list written by another ChangeListFrame
	onto the file.

      memory monitor
	Open memory status monitor window. It allows you to kick garbage
	collector manually.

      quit
	Quit the system.
	If there are any changes which are not accepted or synced,
	the system asks you accept/sync them or not before exitting.

    Project menu

      new project
	Regist new project.
	A dialog requesting project name and corresponding directory
	will be shown.

      remove project
	Remove project.
	A cascaded menu which lists all projects currently registered
	will appear. Choose one and answer yes to the confirm dialog
	to remove project from database.
	It affects only on database entry managed by teikade, so source
	files belongs to the project will not be removed.

      spawn <ProjectName>
	Open a browser for project specified by <ProjectName>.

    Frame menu

	Popup the specified frame.

  messages:
    Any messages from the system (welcome message, status report
    for reading/writing file, and so on) go here.


- Browser
  This is frame to refer/edit codes and package/project
  comments hierarchically. Database management operations,
  compilation and class execution are also done via these
  windows.

	+------------------------------------------------+
	| File Edit Option Project Package Class Method  |
	+------------------------------------------------+
	| +------------+ +-------------+ +-------------+ |
	| |            | |             | |             | |
	| |  packages  | |   classes   | |   methods   | |
	| |            | |             | |             | |
	| +------------+ +-------------+ +-------------+ |
	| +--------------------------+------+----+-----+ |
	| |         current          |Accept|Sync|Reset| |
	| +--------------------------+------+----+-----+ |
	| +--------------------------------------------+ |
	| |                                            | |
	| |                                            | |
	| |                                            | |
	| |                 codeView                   | |
	| |                                            | |
	| |                                            | |
	| |                                            | |
	| +--------------------------------------------+ |
	+------------------------------------------------+

  Menu bar:

    File menu

      go to line
	Open a window displays source code by file name and line
	number. Stack trace dumps produced by java or error messages
	which javac shows are suitable for this window.

      spawn changes
	Open ChangeListFrame for the project.
	Changes list are saved into a file called change list file,
	change list file is created for each project in
	    <Project directory>/.dejava/.changes
	If the directory .dejava is not exist for the project,
	changes will go on $HOME/.dejava/.changes.

	Note: changes file name is renamed to .changes

      spawn file
	Open a fie editor window for the file contains currently
	displayed code.

      raise transcript
	Raise the system transcript window.

      sync database
	All of changes are written on the files.

      close
	Close this browser window.

    Edit menu
      copy
	Copy the selected text into the copy buffer.
	You can paste it to another text field using paste menu item.
 
      cut
	Move selected text into the copy buffer.
	Similer to copy menu item except that the selected text is
	removed from codeView.

      paste
	Paste the text saved in the copy buffer to codeView.
	The text will be inserted after the cursor position.

      search/replace
	Open a window for search/replace string in codeView.

      shift lines {right|left}
	Indent selected lines to right or left.

      shift block {right|left}
	Indent block contains selected region to right or left.

	    1) Indent inside of block when the cursor is on inside
	       of block.
	      ex.a)
	        while (c != null) {	  while (c != null) {
		  if (a == b) {I	    if (a == b) {I
		  update();		=>    update();
		  }			    }
	        }			  }

	      ex.b)
	        while (c != null) {	  while (c != null) {
		  if (a == b) { 	    if (a == b) {
		  update();I		=>    update();I
		  }			    }
	        }			  }

	    2) Indent whole block when the cursor is on outside
	       of block but the line contains '{' or '}'.
	      ex.)
	        while (c != null) {	  while (c != null) {
		  if (a == b)I{ 	      if (a == b)I{
		  update();		=>    update();
		  }			      }
		}			  }


    Option menu

      hide {class|instance} method
	Toggle visibilities of static/instance methods.

      hide {public|friendly|protected|private} method
	Toggle visibilities of public, friendly, protected, private
	methods.

    Project menu

      sync
	Write all of changes for this project on the source files.

      grep
	Execute egrep for all the source files in this project and
	open grep frame.

      rebuild database
	Rebuild whole database for all projects teikade maintains.

      spawn
	Open another browser window for this project.

    Package menu

      sync
	Write all of changes for selected package on the source files.

      compile
	Compile all source files in this package.
	Compile frame for selected package will open.

      compile updated sources
	Compile all source files in selected package which are updated
	but not compiled.

      grep
	Execute egrep for all the source files in selected package and
	open grep frame.

      remove package
	Remove selected package from database.
	Package is removed only from the database, so it will come back
	again when database is rebuit.

      rename
	Rename selected package.
	All source files in the package will moved into new package
	directory and package names of the package statements in source
	files are replaced with new package name.

      rebuild database
	Rebuild database for selected package.

      spawn
	Open another browser for selected package.
	The browser does not have selection list for packages.

    Class menu

      sync
	Write all changes for the source file contains selected	class
	on the file.

      compile
	Compile the source file contains selected class.

      execute
	Run the selected class.
	Only classes who have static void main(String[]) method
	or who have Applet class in their ancesters are executable.

      execute with args
	Run the selected class with command line args.

      grep
	Execute egrep on the source file contains selected class
	and open grep frame.

      new class
	Create a new class.
	A dialog asking name of the class, name of the super class,
	names of interfaces the class implements, abstract or not,
	public or not, final or not is open.
	Import statements for super class and interfaces are
	automatically generated if they are found in teikade database.
	And prototype for methods to be implmented (are figured out
	from super class and interfaces source files) are also generated
	automatically.

      new interface
	Create a new interface.
	A dialog asking name of the interface, names of the super
	interfaces, public or not, final or not is open.

      remove class
	Remove selected class. Methods of the class are also removed.
	If it is the only class for the source file, file is also
	removed. The original file is moved into file.java,org.

      rename
	Rename selected class. 
	Constructers are also renamed to match with new class name.

      spawn
	Open another browser for selected class.
	The browser does not have selection lists for neither packages 
	nor classes.

      hierarchy
	Open hierarchical browser for selected class.

      implementers
	Open browser for implementers of selected interface.

      users
	Open browser for users of selected class.

    Method menu
	To create a new method, select one entry listed in methods
	and edit source code for new method in codeView, then select
	accept buttun described below. New method will be defined if
	no errors are found in new code, and its entry will be
	selected and appear below the entry you selected at first.

      change order
	Open method order management window.
	Choose method entry to be moved, then select position where
	selected entry should go.

      new constructor
	Create a new constructor.
	A dialog asking access level (public, protected or private),
	arguments and thows exceptions. Constructor name desided
	same as class name.

      new method
	Create a new method.
	A dialog asking accessing level (public, protected or private),
	method characteristics (static, abstract, final, native or
	synchronized), return type, method name, arguments, array and
	throws exceptions.

      set prototype
	Listing frequently override method names. Set selected method's
	prototype code into the codeView.

      remove method
	Remove selected method.

      rename
	Rename selected method.

      spawn
	Open another browser for selected method.
	The browser have no list for selecting package, class, method.

      hierarchy
	Open hierarhical browser for selected method.

      implementers
	Open browser for methods who have similer prototype to
	currently selected method's one.

      senders
	Open browser for senders of selected method.

      messages
	Open browser for methods used in currently selected method.
	A cascaded menu which lists all method used in the selected
	method. Choosing one. Then, all corresponding methods are
	searched and listed.

  packages:
    Selection list for packages in the project.
    Some browsers don't have this list.
    To regist exsiting package to project, rebuild database
    via Project menu.

  classes:
    Selection list for classes in the package.
    No classes will be shown until a package is selected.
    Some browsers don't hace this list.
    To regist existing class to package, rebuild database
    via Package menu.

  methods:
    Selection list for methods in the class.
    No methods will be shown until a class is selected.
    This list usualy has special item shown as *header*.
    It is pseudo method entry managing package statements and
    import statements for the source file contains selected class.

  current:
    Displays currently selected code path.
    Giving string representation of code path to this field
    causes list selection. The format of code path is:
	projectName/package.name.ClassName#method(args,args)
    System trys to complete input string if it can.

  codeView:
    Text area for editing/viewing comments or source codes.

  Accept:
    Accept changes for currently displayed code and add change to
    change list for this code. Contents of the file is not changed
    untill it is synced.

  Sync:
    Write changes for the file contains currently displayed code
    on the source file.
    This buttun is disabled when no changes are available for this
    code segment.

  Reset:
    Restore contents of codeView to original ones. Used to avoid
    changes.


- CompileFrame
  This frame opens on classes' compilation. You can compile classes
  via Class->compile, Package->compile, Package->'compile updated sources'
  menu items. This frame parses error messages produced by javac, and lists
  errors.

	+-----------------------------------------+
	| File Edit Project Package Class Method  |
	+-----------------------------------------+
	| +-------------------------------------+ |
	| |                                     | |
	| |              errorList              | |
	| |                                     | |
	| +-------------------------------------+ |
	| +-------------------------------------+ |
	| |             errorMessage            | |
	| +-------------------------------------+ |
	| +-------------------+------+----+-----+ |
	| |      current      |Accept|Sync|Reset| |
	| +-------------------+------+----+-----+ |
	| +-------------------------------------+ |
	| |                                     | |
	| |                                     | |
	| |                                     | |
	| |               codeView              | |
	| |                                     | |
	| |                                     | |
	| |                                     | |
	| +-------------------------------------+ |
	+-----------------------------------------+

  Menu bar:

    File menu

      stop
	Stop compilation.

      recompile
	Redo compilation.

      {mark|unmark} selection
        Mark/unmark selected error item.

      {mark|unmark} all
	Mark/unmark all of error items.

      spawn {marked|unmarked}
	Open another compile frame for marked/unmarked error items.
 
      open replacer
	Open string replace for all error items.

      raise transcript
	Raise the system transcript window.

      sync database
	Write all changed files.

      close
	Close this window.

    Edit, Project, Package, Class, Method menu
	Similar to browser's ones.

  errorMessage:
    Displays detailed error message for selected error item.

  current:
    Displays code path for currently selected error item.

  codeView:
    Displays corresponding source codes for selected error item.
    You can edit source codes here.

  Accept, Sync, Reset:
    Similar to browser's ones.

- GrepFrame
  Window for execute grep and list matching source codes.
	
	+-----------------------------------------+
	| File Edit Project Package Class Method  |
	+-----------------------------------------+
	| +-------------------------------------+ |
	| |               pattern               | |
	| +-------------------------------------+ |
	| +-------------------------------------+ |
	| |                                     | |
	| |               grepList              | |
	| |                                     | |
	| +-------------------------------------+ |
	| +-------------------+------+----+-----+ |
	| |      current      |Accept|Sync|Reset| |
	| +-------------------+------+----+-----+ |
	| +-------------------------------------+ |
	| |                                     | |
	| |                                     | |
	| |                                     | |
	| |               codeView              | |
	| |                                     | |
	| |                                     | |
	| |                                     | |
	| +-------------------------------------+ |
	+-----------------------------------------+

  Menu bar:
    Similar to CompileFrame's one.

  pattern:
    Text field for giving searhing pattern for egrep.

  grepList:
    Selection list for matching code location items.

  current:
    Displays code path for currently selected code location item.

  codeView:
    Displays corresponding source codes for selected code location
    item. You can edit source codes here.

   Accept, Sync, Reset:
    Similar to browser's ones.

- GotoLineFrame
  Window for editing/viewing source codes corresponding to code location
  specified by file name and line number.
  You can omit file name if you invoked this frame when a class is selected.

	+-----------------------------------------+
	| File Edit Project Package Class Method  |
	+-----------------------------------------+
	| +-------------------------------------+ |
	| |fileName:lineNumber                  | |
	| +-------------------------------------+ |
	| +-------------------------------------+ |
	| |                                     | |
	| |                 list                | |
	| |                                     | |
	| +-------------------------------------+ |
	| +-------------------+------+----+-----+ |
	| |      current      |Accept|Sync|Reset| |
	| +-------------------+------+----+-----+ |
	| +-------------------------------------+ |
	| |                                     | |
	| |                                     | |
	| |                                     | |
	| |               codeView              | |
	| |                                     | |
	| |                                     | |
	| |                                     | |
	| +-------------------------------------+ |
	+-----------------------------------------+

  Menu bar:
    Similar to CompileFrame's one.

  fileName:lineNumber:
    Text field for give file names and line numbers.
    Since gabages around file name and line number are ignored, you can
    put whole output of grep, javac, java and so on.

  list:
    Lists given code location items.

  current:
    Displays code path for currently selected code location item.

  codeView:
    Displays corresponding source codes for selected code location
    item. You can edit source codes here.

   Accept, Sync, Reset:
    Similar to browser's ones.

- ChangeListFrame
  Window for browsing change list written on change list file.
  Actions you did in teikade are saved into the file called change
  list file. And you can select any changes using ChangeListFrame,
  can write selected changes onto another change list file, and
  can read any changes from change list files and apply them to
  sources you're browsing.

	+-----------------------------------------+
	| File Edit Project Package Class Method  |
	+-----------------------------------------+
	| +-------------------------------------+ |
	| |                                     | |
	| |                 list                | |
	| |                                     | |
	| +-------------------------------------+ |
	| +-------------------+------+----+-----+ |
	| |      current      |Accept|Sync|Reset| |
	| +-------------------+------+----+-----+ |
	| +-------------------------------------+ |
	| |                                     | |
	| |                                     | |
	| |                                     | |
	| |               codeView              | |
	| |                                     | |
	| |                                     | |
	| |                                     | |
	| +-------------------------------------+ |
	+-----------------------------------------+

  Menu bar:
    Similer to CompileFrame's one except followings:

    File menu

      load(overload)
	Browse another change list file.

      load(merge)
	Read another change list file and add change entrys to
	this list.

      save all
	Save all entries into file. Saved file can load by another
	ChangeListFrame.

      save marked
	Save all marked entries into file.

    Edit, Project, Package, Class, Method menu
	Similar to CompileFrame's ones.

  list:
    Displays all change entries in the change list file.
    Each entry consists of date, time, action and CodePath.
    Action is signed by a charcter:
	+  created
	-  removed
	!  changed
	=  renamed
	%  version changed(not supported yet)

  current:
    Displays code path for currently selected change entry.

  codeView:
    Displays corresponding source codes for selected change entry.

  Accept, Sync, Reset:
    Similar to browser's ones.


(Java and HotJava are trademarks of Sun Microsystems, Inc.)

