ANSI Exception Extensions |
Requirements:
The ANSI Exception project implements an exception handling system that conforms The project integrates seamlessly with ST/MT version 2.5. |
T-gen 2.1
http://home.arcor.de/rolf_wilms/
|
Requirements:
Special Features:
"T-gen is a general-purpose object-oriented tool for the automatic generation of string-to-object translators. It is written in Smalltalk and lives in the Smalltalk programming environment. T-gen supports the generation of both top-down (LL) and bottom-up (LR) parsers, which will automatically generate derivation trees, abstract syntax trees, or arbitrary Smalltalk objects. The simple specification syntax and graphical user interface enhance the learning, comprehension, and usefulness of T-gen." (Abstract of original T-gen users guide.) |
Extensions and Utilities |
|
Sometimes it is worthwhile to subclass OrderedCollection and to add new instance
variables to the subclasses. In this case, you will want to be
able to inspect the instance variables of instances of those subclasses. The stock
OrderedCollectionInspector, however, only inspects the contents of
the instance, not its instance variables. So here is an enhancement to
OrderedCollectionInspector which not only inspects the contents of an
instance, but also inspects any added instance variables. (You can also add, edit, and
delete elements, and change instance variable contents.)
OrderedCollection has 3 instance variables itself (m_contents, m_startPos, m_endPos), and
there is normally no reason to inspect these, so
the enhanced OrderedCollectionInspector continues to ignore them. Likewise,
SortedCollection has an additional instance variable (m_sortBlock),
which is also ignored. The enhanced OrderedCollectionInspector, however, inspects any
additional instances. It knows how many instance variables
to ignore by sending the message #basicVariables to the inspected object. #basicVariables
is defined for OrderedCollection as ^3 and for
SortedCollection as ^4. Redefine these as necessary for subclasses to ignore instance
variables you don't wish to inspect
Added instance variables in subclasses appear in the inspector after 'self' and before the
listing of the elements.
SplitPane allows you to specify a minimum position (top and/or bottom for
horizontal split bars, and left and/or right for vertical split bars) below which the
split disappears. In some applications, however, you might want the split bar never to
disappear, and to maintain a minimum distance from the edge(s) of its parent window. This
would be the case if you use a split between two panes that must always be displayed.
This enhancement extends the m_minInfo parameter to allow specifying either a minimum
position below which the split disappears or a minimum position below which the split
cannot be moved. These two concepts are mutually exclusive, but each of the 4 extremities
(top, bottom, left, and right) can be specified independently, so you can mix them
together. For example, a vertical split bar between a left pane and a right pane can be
specified so that at least some minimum of the left pane always shows, but if the bar is
moved past a certain point to the right it disappears to show only the left pane.
The extension works by allowing negative values of the m_minInfo parameter. Positive
values of the m_minInfo parameters are as currently supported (split bars moved below
these minimums vanish). Negative values of the m_minInfo paramters place limits on how
close the split bar may be moved to its respective edge.
For example, in the #initWindow method of the parent, you would include code like:
| split |
...
(split := SplitPane new)
leftPanes: (Array with: ... ) rightPanes: (Array with: ... );
parent: self;
position: ... ;
... . etc.
(split minInfo)
left: -200; "Negative => split bar stays at
least 200 units from left"
right: 100. "Positive => split bar disappears
if moved within 100 units from right"
The split limits are enforced when the user tries to drag the split beyond the limit or
when the parent window is resized and one of the sides would be moved closer to a split
bar than permitted.