CDSatellitesDoc.tioga
Copyright © 1985, 1986 by Xerox Corporation. All rights reserved.
Written by: Pradeep Sindhu, December 23, 1985 4:23:09 pm PST
Pradeep Sindhu, February 20, 1986 7:08:11 pm PST
Bertrand Serlet August 3, 1986 8:05:09 pm PDT
Christian Jacobi August 3, 1986 8:05:09 pm PDT
CDSATELLITES: WYSIWYG CHIPNDALE PROPERTIES
CDSATELLITES: WYSIWYG CHIPNDALE PROPERTIES
CDSATELLITES: WYSIWYG CHIPNDALE PROPERTIES
DATOOLS — FOR INTERNAL XEROX USE ONLY
DATOOLS — FOR INTERNAL XEROX USE ONLY
DATOOLS — FOR INTERNAL XEROX USE ONLY
CDSatellites: WYSIWYG ChipNDale Properties
Release as [DATools]<DATools7.0>CDSatellites25>CDSatellitesDoc.tioga

© Copyright 1985, 1986 Xerox Corporation. All rights reserved.
Abstract: CDSatellites provide a way to associate arbitrary textual information such as names and expressions with Chipndale cells and Chipndale instances. A useful way to think about satellites is that they are visible properties. However, satellites differ from properties in three important ways: they require no explicit action on the part of a user to display them, their looks and placement are entirely under user control, and they are ordinary text strings with no hidden semantics.
XEROX  Xerox Corporation
   Palo Alto Research Center
   3333 Coyote Hill Road
   Palo Alto, California 94304



For Internal Xerox Use Only
Contents
Basics
Programming Interface
User Interface
Running CDSatellites
Acknowledgements
Appendix A: Problems with the Instance List Method
Basics
Satellites provide a way to associate arbitrary textual information such as names and expressions with Chipndale instances and Chipndale cells. This document describes all users need to know about satellites in order to use them.
Satellites come in two flavors: instance and object. An instance satellite is a Chipndale text instance that has been associated explicitly with another (non-text) Chipndale instance called the satellite's master; a master along with its satellites is called an instance group. A text instance that has been associated with the containing cell object or design is called an object satellite. Either flavor of satellite can be marked to be a comment, permitting it to be ignored if desired, but still remembering its master.
A useful model of satellites is that they are visible properties attached to a master or to an object. However, there are three important differences between satellites and properties: First, satellites are always visible, while a user must do something explicit to display properties. Second, the user has complete control over the looks and placement of satellites, while properties are displayed in a fixed way. Finally, satellites are simply text strings; this is in contrast with properties, which have type information associated with them.
The previous version of CDSatellites did list its internal invariants here. Carefull checking showed that they were not true because the implementation changed faster than the documentation. The current version has its invariants listed with the implementation module.
Programming Interface
The programming interface provides high level procedures to query satellites and master, and, lower level procedures to associate satellites with a master. The highlevel procedures cache the result and check the invariants by looking whther ChipNDale removed the invariant properties.
See CDSatellites.mesa for more information.
User Interface
Satellite Commands
The user interface consists of commands divided into three groups: instance satellite commands, object satellite commands, and comment commands. All commands are available via the satellites menu (Space-L).
The instance and object satellite commands are Select Satellites, Draw Satellite, Set Satellites and Un-Satellite.
Select Satellites selects the group to which the currently selected instance belongs. Multiple selections are not allowed. This command may also be executed directly via I-LeftClick for instance satellites and via O-LeftClick for object satellites.
Draw Satellite prompts for text and makes that text a satellite of the currently selected instance. Multiple selections are not allowed, and the current selection must not be a text instance. This command may also be executed directly via I-MiddleClick for instance satellites and via O-MiddleClick for object satellites.
Set Satellites inclusive/exclusive takes a single non-text instance and zero or more text instances and makes the text instances satellites of the non-text instance. If the non-text instance was a master already and mode is exclusive, it loses its old satellites. Multiple non-text instances are not allowed in the selection. The inclusive version of this command may also be executed directly via I-RightClick for instance satellites and via O-RightClick for object satellites.
Un-Satellite takes the selection instances and makes shure they are not part of any satellite-master association. If a selected instance was a master, its satellites loose the satellite property.
Comment and UnComment Commands
Comment satellites are satellites with a special property that makes them invisble to client code. The two commands are CTRL-\ and SHIFT-CTRL-\ (as in Cedar).
Subtleties
Considerable care has been taken in the design of satellites to ensure that they mesh well with other Chipndale commands. In almost all cases the "right" thing will happen when these commands are used on instances that are in a satellite group:
Copy: If the selection contains just satellites, then the new copies are added to the master's list of satellites. If the selection contains a master, then a new group is created, with the new satellites being associated with the new master and the old ones with the old.
Delete: If the deleted instance is a master then its satellites will become ordinary pieces of text. If the deleted instance is a satellite then that satellite will get removed from its group.
Undelete: The undelete will preserve all satellite groupings back up until the last satellite command was executed. So, for example, if you delete a master and then do a number of non-satellite commands and then undelete that master, the master's group will be reincarnated.
Stretch: If the instance being stretched is a master, it remains a master.
Replace Text: If the text was a satellite of some master then the replaced text replaces the old satellite of that master.
Design satellites
Uniformity of concepts provide a good way to have design satellites: the design can be viewed as a top-level object, and so commands for showing, adding or setting object properties will affect the design when there is no object pushed in.
Design satellites complicate the implementation for very little benefit; their use is not recommended.
Running CDSatellites
CDSatellites is stored in CDSatellites25.df. So, to run it, you need to do the following:
1. Bringover [Datools]<Datools7.0>Top>CDSatellites25.df
3. Use the load file "CDSatellites.load"
Acknowledgements
The current version of satellites has gone through a number of redesigns and reimplementations as deficiencies were discovered and fixed, and several people have contributed their ideas and time. An initial implementation was by Louis Monier with lots of help by Christian Jacobi. Two complete redesigns were done by Bertrand Serlet and Pradeep Sindhu, followed by several iterations over it. It took one more complete redesign and reimplmentation (by Christian Jacobi) to get to the current version.