The Artima Developer Community
Sponsored Link

Agile Buzz Forum
Pollock Changes - Part 9

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page
James Robertson

Posts: 29924
Nickname: jarober61
Registered: Jun, 2003

David Buck, Smalltalker at large
Pollock Changes - Part 9 Posted: Sep 28, 2005 10:45 AM
Reply to this message Reply

This post originated from an RSS feed registered with Agile Buzz by James Robertson.
Original Post: Pollock Changes - Part 9
Feed Title: Pollock
Feed URL: http://www.cincomsmalltalk.com/rssBlog/pollock-rss.xml
Feed Description: Pollock - the next VW GUI
Latest Agile Buzz Posts
Latest Agile Buzz Posts by James Robertson
Latest Posts From Pollock

Advertisement

Today we describe the additional changes that were included in the 6.16.0 release, beyond those in the 6.13.0 release.

#preferredExtentChanged

We have added a new event #preferredExtentChanged to the mix.

This is triggered whenever the affect of adding or removing an attribute to a pane, or changing the model, might cause the preferred extent to change.... Pretty obvious there.

This occurs in the following general circumstances:

  • Whenever a border is added or removed from a pane
  • In any enumeration pane (ListBox, Grid, TreeView), when items are added or removed from the list
  • In any editing pane (TextEdit & InputField) when text is added or removed, or the attributes of a run of text is changed.
  • In any pane that supports scrollbars, when scrollbars are turned on or off.
  • In any pane that supports subpanes, when a subpane is added or removed
  • In any pane that has a label, when the text of the label is added, removed or changed

Also in the following specific circumstances

PaneTrigering Action
DividerThickness changes
GridAdding columns, turning on or off row or column headers, adding or removing row or column lines or resizing a column
RegionTurning on or off the edge line or changing the size of the edge line
ProgressBarTurning on or off percent done display or turning on or off the percent done tenths display
ResizingSplitterTurning on or off the noDisplay attribute
SliderChanging to/from vertical/horizontal or changing the display of ticks
SpinButtonDoing an increment or decrement (having the effect of changing the value displayed)
TabControlTurning on or off the display of the tabs, adding a page, turning on or off the interior decoration
MenuBarAdding or removing items or changing the hidden attribute of an item
ToolbarAdding or removing items or changing the hidden attribute of an item
TreeViewExpanding or collapsing an item, turning on or off the showing of expanders or turning on or off of item images

New Pane : ActiveImage

The ActiveImage is a new pane that will in the future replace the image part of the CheckBox and RadioButton.

The ActiveImage acts like a toggle for images, but has no specific model itself. The typical minimum image is the primaryImage, and if this is all that is specified, it acts just like a DisplayImage. If a secondaryImage is specified, when the mouse is pressed over the ActiveImage then released within it's bounds, the image changes to the secondaryImage.

If a transitionImage is specified, then this image is displayed when the mouse is pressed over the ActiveImage and when the mouse is released in the bounds of the ActiveImage, the ActiveImage changes either to the secondary image if there is one, or to the primary image if there is no secondary image.

If a flyOverImage is specified, then this image is displayed when the mouse is moved over the ActiveImage in a non pressed state.

The disabledPrimaryImage and disabledSecondaryImage, if specified, are used when the ActiveImage is told to be disabled, depending if there is a corresponding primary/secondary image, and the current state of the ActiveImage.

The state of the activeImage (showingPrimary) can be changed with the #showPrimary: method. If there is no secondary image, then the showPrimary value will change, but the view will not

ActiveImage, unlike its cousin DisplayImage, does not "build" the images from images and masks, instead it simply has images that it uses. Thus, the parts can be any the usual Image things, such as Images, CachedImages, OpaqueImages and OpaqueImageWithEnablement.

If an OpaqueImageWithEnablement is used for the Primary image or Secondary image, then that image will be used as the disabled image (disabled of course) if there is no corresponding primary/secondary disabled image.

Events Triggered

EventDescription
#aboutToChangeViewTriggered when ActiveImage is about to change its view if there are both primary and secondary images. This event is vetoable, and if VetoAction is raised in the scope of this event, then the pane will not change its view
#changingViewTriggered before the ActiveImage changes it's view if there are both primary and secondary images and the #aboutToChangeView event is not vetoed.
#changedViewTriggered before the ActiveImage changes it's view if there are both primary and secondary images and the #aboutToChangeView event is not vetoed.

Specification Synchronization

These changes are mostly in the guts of the Specifications, how they're built and decomposed into XML and LiteralArrays. Instance variables have been changed in the specs, along with accessing methods.... For instance, backgroundColor has become background, to match the same thing in Panes.

The point to this set of changes, and there were many, was to make the Specifications more polymorphic with Panes, where possible. This will allow the UI Painter in the future to build Panes from Specifications, or Specifications from Panes, and code from and to either.

There were very few actual changes in the APIs of the Panes themselves:

TextEdit had #beWordWrapped(:), and Label had #wordWrapped(:), so we changed TextEdit to use #wordWrapped(:) and got rid of #beWordWrapped(:).

ScheduledWindow now has #openingPosition:, #minimumSize:, #maximumSize: and #specifiedSize: methods, which talk to the underlying frame, thus removing the need to have to send stuff like "window frame maximumSize: <aPoint>" and so on.

Button has two new methods: #beCancel: <aBoolean> and #beDefault: <aBoolean> which do the right things by making a Button behave like a cancel button (execute itself when the ESC key is pressed anywhere in the pane) or behave like a default button (execute itself when the Enter/Return key is pressed anywhere in a non TextEdit pane).

noDecoration: fix

Any pane that had scrollbars, and also the TabControl also had a #noDecoration: <aBoolean> method. However, it simply removed the decoration including the scrollbar! That was wrong. Now, it simply removes the default interior border for these panes, still allowing you to turn on or off scrollbars or in the case of the TabControl, the tabs.

No More

Well, that's all the big changes. There are many smaller bug fixes in there also, but making things work right is hardly a notable/blogable thing.

I have no idea what's next. How about some suggestions on what I should post about next.

In the mean time..

And So It Goes
Sames

Read: Pollock Changes - Part 9

Topic: Get out of the way now! Previous Topic   Next Topic Topic: Wait a sec

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use