SlideShare une entreprise Scribd logo
1  sur  67
Télécharger pour lire hors ligne
Pollock




           Preparing
          For Pollock
Number 1, 1950 (Lavender Mist)
                           Jackson Pollock 1912-1956




Copyright © 2002, Cincom Systems, Inc.
Pollock




    Why a new GUI Framework
    Pollock Philosophy and Goals
    The Path
    The Metaphor
    The Basics
    Pollock & The Trigger Events Framework
    Models & ValueEvents

Copyright © 2002, Cincom Systems, Inc.
Pollock




    Pollock & DragDrop
    Pollock & Edit Keys
    Coding Today With The Future In Mind
    Pollock Tools
    Building A New Widget – An Example
    Q&A


Copyright © 2002, Cincom Systems, Inc.
Pollock




    What needs to be obsolete
             Wrappers
             Look Specific Widgets
             Ball Of Mud Controllers
             Static Edit Keys
             Fragile & Noisy Change/Updates in the Guts
             Do Too Much Builder


Copyright © 2002, Cincom Systems, Inc.
Pollock




    What needs to be added
             Configurable Hotkeys
             Dynamic Look Changing
             Stupid Controllers
             Full Use of the Trigger Event System
             Separate Builder and Widget Inventory
             E-Z Developer Widget Creation
             E-Z Developer Widget Extension Capability
Copyright © 2002, Cincom Systems, Inc.
Pollock




    Widgets In General
             Out of the box they need
                       To Do More
                       To Do It Faster
                       To Do It Better
                       Where Required: To Do It More Platform Faithfully
             And if not:
                       E-Z To Make Them Do It


Copyright © 2002, Cincom Systems, Inc.
Pollock




Copyright © 2002, Cincom Systems, Inc.
Pollock




Copyright © 2002, Cincom Systems, Inc.
Pollock




    Wrappers
             SpecWrappers: Hold on to too much runtime
             information, waste space with the rest
             Bounded, Bounding, Bordered… Baloney!
             Scrollbars : The result of composition run
             rampant
             Menus : Not much better
             Bounds calculation : The progenitor of
             modern C obfuscation contests

Copyright © 2002, Cincom Systems, Inc.
Pollock




    Look Specific Widgets
             Can’t change their look on the fly without
             rebuilding whole window
             Complex build rules (<widget>:into:)
             Forces duplicated build code
             Commingled common and look specific code



Copyright © 2002, Cincom Systems, Inc.
Pollock




    Ball Of Mud Controllers
             Controllers have lost their “MVC” meaning
             They have become sophomoric
             Because of wrappers are involved in
             downcasting & upcasting events
             Knows too much about view



Copyright © 2002, Cincom Systems, Inc.
Pollock




    Static Edit Keys
             Controllers do too much
             Controllers contain too much feel specific
             code
             Dispatch tables are code based
             The Developer knows best (i.e. least)



Copyright © 2002, Cincom Systems, Inc.
Pollock




 Fragile & Noisy Change/Updates in the Guts
        All dependents get all update information, even
        when they don’t care (which in the guts of the GUI,
        is most of the time)
        Updates fling up and down the wrapper hierarchy
        Changing models and views is fraught with
        danger, making existing Widgets fragile
        Debugging is a nightmare


Copyright © 2002, Cincom Systems, Inc.
Pollock




    Do Too Much Builder
             Builds then sticks around
             “self builder componentAt:” (‘nuff said!)
             Can’t properly get nested components (sub-
             canvases)
             Throws out important build time information



Copyright © 2002, Cincom Systems, Inc.
Pollock




    Configurable Hotkeys
    Dynamic Look Changing
    Stupid Controllers
    Full Use of the Trigger Event System
    Separate Builder and Widget Inventory
    E-Z Developer Widget Creation
    E-Z Developer Widget Extension
    Capability
Copyright © 2002, Cincom Systems, Inc.
Pollock




    Goals
             Must be more accessible to both novice and
             expert developers
             Must be more modular
             Must be more adaptable to new looks and
             feels
             Must have tools to migrate from old
             framework
             Must have comprehensive unit tests
             Must be developed “Out In The Open”
Copyright © 2002, Cincom Systems, Inc.
Pollock




    Philosophy : XP (as much as possible)
              Make it work,
               Make it right,
               Make it fast
                      (in that order)
             You aren’t going to need it
             The simplest thing that can possibly work
             Let the code tell me what to do
             Test first
             Continuous integration
Copyright © 2002, Cincom Systems, Inc.
Pollock




                      Window

                              MenuBar      Toolbar




                                         AdvancedText




Copyright © 2002, Cincom Systems, Inc.
Pollock




    Beta 1: VW 7
             ApplicationWindow, Button, Label & Image
             Simple layouts (OriginExtent, Alignment)
             Win9x, MacOSX & Motif looks
             Build, Read & Write from XML and Array
             DTD for XML
             Window opening styles
             Full Trigger Event usage
             Builder, UserInterface, WidgetInventory
Copyright © 2002, Cincom Systems, Inc.
Pollock




    Beta 2 : VW 7.1
             CheckBox, Radio, InputField, List, Menu,
             DropDown (list and menu), AdvancedText,
             Grid (Table & Dataset combined), Dialog,
             Toolbar & Toolbar panes, TreeView,
             TabControl, GroupBox
             DragDrop
             Fractional Layouts
             UIPainter written in Pollock

Copyright © 2002, Cincom Systems, Inc.
Pollock




    Production 1 : VW 7.2
             SubpaneHolder, Resizer, SpinButton, Divider,
             ClickWidget, Region, Progress, Slider
             UIPainter, MenuEditor, ToolbarEditor
             Translation & Conversion tools
             Co-exist in image with existing framework
             Existing framework default user interface
             creation tool
             Last changes to existing framework
             All widgets have at least basic functionality
Copyright © 2002, Cincom Systems, Inc.
Pollock




    Production 2 : VW “7.2”
             All widgets have full capability
             WinXP Look & Feel
             Some internal tools use Pollock
             Co-exist in image with existing framework
             Pollock default new user interface creation
             tool
             Existing framework “Soft” obsolete

Copyright © 2002, Cincom Systems, Inc.
Pollock




    Production 3 : VW “7.3”
             All tools use Pollock
             Existing framework “Hard” obsolete
             Only Pollock in image
             Existing framework fully loadable from
             Obsolete parcel



Copyright © 2002, Cincom Systems, Inc.
Pollock




    Panes & Frames, Agents & Artists
             Pane
                       Like a VisualComponent
                       Some Panes have Subpanes
                       Window is a Pane
                       Screen is a Pane
                       All subclass from AbstractPane



Copyright © 2002, Cincom Systems, Inc.
Pollock




    Panes & Frames, Agents & Artists (cont.)
             Frame
                       Like a Layout
                       visible bounds
                       displayable bounds
                       origin
                       [alignment]
                       [fractional positions]
                       [relation positions]
                       [viewport]
Copyright © 2002, Cincom Systems, Inc.
Pollock




    Panes & Frames, Agents & Artists
             Agent
                       Offload behavior from controller
                       Tell the artist when to draw
                       Maintain most state (visibility, enablement,
                       selected, pushedness, cursor position)
                       Behavior for mouse and keyboard (keyboard
                       processor, focus, “handler for mouse event”)


Copyright © 2002, Cincom Systems, Inc.
Pollock




    Panes & Frames, Agents & Artists
             Artist
                       Does all drawing
                       Interacts with Agent and Pane to get information
                       about what to draw, and when




Copyright © 2002, Cincom Systems, Inc.
Pollock




                                                                     Object


                            AbstractPane                            AbstractDraw                         Frame


 CompositePane                           DisplayLabel           AbstractAgent         AbstractArtist   LayoutFrame


                       Button                      ButtonAgent         ButtonArtist



                        Radio                      RadioAgent           RadioArtist


                                                        …                     …




Copyright © 2002, Cincom Systems, Inc.
Pollock




                                           ButtonArtist


     MacOSXButtonArtist                  MotifButtonArtist   Win95ButtonArtist




Copyright © 2002, Cincom Systems, Inc.
Pollock




                                           RadioAgent


    MacOSXRadioAgent                     MotifRadioAgent   Win95RadioAgent




Copyright © 2002, Cincom Systems, Inc.
Pollock




    Creating, configuring and opening a window

    | window |
    window := Pollock.ScheduledWindow new.
    window frame: ((WindowFrame new)
                       maximumSize: 400 @ 400;
                       openingPosition: 100 @ 100;
                       yourself).
    window border: #etched.
    window open

Copyright © 2002, Cincom Systems, Inc.
Pollock




    Creating, configuring and adding a Pane

      | window radio |
      window := self openWindow.
      radio := Radio new.
      radio frame: (OriginExtentFrame origin: 10 @ 10 extent: 30 @ 30).
      window addComponent: radio.




Copyright © 2002, Cincom Systems, Inc.
Pollock




    Labels are NOT part of panes, but can be
    subpanes
    | window radio displayLabel labelModel |
    window := self openWindow.
    radio := self createRadio.
    displayLabel := Pollock.DisplayLabel new.
    labelModel := Pollock.Label string: 'Hi&Ho'.
    displayLabel label: labelModel.
    displayLabel frame origin: 0 @ 0.
    radio addComponent: displayLabel.
    window addComponent: radio
Copyright © 2002, Cincom Systems, Inc.
Pollock




    CompositePanes
             Any subclass can have subpanes
             Can have any number of subpanes
             Can have any kind of subpanes
    Common subpanes
             Buttons : Labels and DisplayImages
             Radios : Labels

Copyright © 2002, Cincom Systems, Inc.
Pollock




    Controllers are much more dumb
             Controllers and Trackers still exist
             New hierarchy
             Forward all events to the Agent
    The Agent holds the Keyboard Processor
             Because of compatibility, controller passes it
             to the Agent


Copyright © 2002, Cincom Systems, Inc.
Pollock




    Decorations and Borders
             Decorations : Things inside a pane
                       Scrollbars in an Advanced Text pane
                       The “3D Look / Raised” portion of a Button
                       Clip the drawable bounds
             Borders : Things that surround a pane
                       Effectively clip the visible bounds
             Most panes have borders
             Some panes have decorations
             Borders and Decorations have Artists

Copyright © 2002, Cincom Systems, Inc.
Pollock




    A Button with a
     Border (ridged) and a
     decoration:

    A Button with a
     Border (ridged) – No
     decoration:



Copyright © 2002, Cincom Systems, Inc.
Pollock




    ActionDisplay pane
Action Part                    “Display Right”    Display      Action Part   “Display Left”   Display
                                                  Part                                        Part




          Examples:                                                         Display Right




                                                 Spin Button


                                                 Drop Down                    Display Left

Copyright © 2002, Cincom Systems, Inc.
Pollock




    Agents, Artists and Frames are pluggable at
     runtime
    Update/Change behavior is banned from the
     Pollock internals
    WidgetPolicy, BorderPolicy, LookPolicy
    FeelPolicy replaced by KeyboardPolicy
    New Controller hierarchy
    New ScheduledWindow hierarchy


Copyright © 2002, Cincom Systems, Inc.
Pollock




                                                    Object

                                               PaneController

                                             KeyboardController

         LabelController                            ToggleController

                                     ButtonController           ActionDisplayController




Copyright © 2002, Cincom Systems, Inc.
Pollock




                                               UI.Window


                                         Pollock.ScheduledWindow


                         Pollock.ApplicationWindow      Pollock.DialogWindow




Copyright © 2002, Cincom Systems, Inc.
Pollock




    Grid
             Combines Dataset & Table
             Will support Dataset models, as well as Table
             models
             Will provide Multi-Column list mode




Copyright © 2002, Cincom Systems, Inc.
Pollock




    DropDown
             Combines DropDown, Combo and
             MenuButton
             Will support Lists as well as Menus as models




Copyright © 2002, Cincom Systems, Inc.
Pollock




    TabControl
             Will exist
             Should it add “Minor” tabs (right and/or
             bottom)?
             Should it add “Stacked” tabs?
    Notebook
             Not scheduled to exist (should it?)


Copyright © 2002, Cincom Systems, Inc.
Pollock




    The Trigger Events Framework
             Fully fleshed out in VW 7
             All events ultimately triggered by “views”
    Event Checking
             Ambivalent vs. Strict
             Object – Default is Ambivalent
             Views & Panes – Default is Strict
    Using it now
             In General
             ApplicationModel

Copyright © 2002, Cincom Systems, Inc.
Pollock




    General
             eventTable
             canTriggerEvent: anEventNameSymbol
             hasActionForEvent: anEventNameSymbol
             actionListForEvent: anEventNameSymbol




Copyright © 2002, Cincom Systems, Inc.
Pollock




    General
             when: anEventNameSymbol do: aBlock
             when: anEventNameSymbol evaluate: anAction
             when: anEventNameSymbol send: aSelectorSymbol
              to: anObject
             when: anEventNameSymbol send: aSelectorSymbol
              to: anObject with: anArgumentObject
             when: anEventNameSymbol send: aSelectorSymbol
              to: anObject with: firstArgumentObject with:
              secondArgumentObject
             when: anEventNameSymbol send: aSelectorSymbol
              to: anObject withArguments: anArgumentCollection
             whenAny:…
Copyright © 2002, Cincom Systems, Inc.
Pollock




    General
             removeAction: anAction forEvent:
             anEventNameSymbol
             removeActionsForEvent:
             anEventNameSymbol




Copyright © 2002, Cincom Systems, Inc.
Pollock




    ApplicationModel
             widget: aWidgetIDSymbol when: anEventSymbol do: aBlock
             widget: aWidgetIDSymbol when: anEventSymbol evaluate:
              anAction
             widget: aWidgetIDSymbol when: anEventSymbol send: anAction
              to: anObject
             widget: aWidgetIDSymbol when: anEventSymbol send: anAction
              to: anObject with: anArgument
             widget: aWidgetIDSymbol when: anEventSymbol send: anAction
              to: anObject with: firstArgument with: secondArgument
             widget: aWidgetIDSymbol when: anEventSymbol send: anAction
              to: anObject withArguments: aCollection



Copyright © 2002, Cincom Systems, Inc.
Pollock




    New behavior in Object>>changed:with:
changed: anAspectSymbol with: aParameter
         "The receiver changed. The change is denoted by the argument
anAspectSymbol. Usually the argument is a Symbol that is part of the dependent's
change protocol, that is, some aspect of the object's behavior, and aParameter is
additional information. Inform all of the dependents."


                 self myDependents update: anAspectSymbol with: aParameter from: self.
                 anAspectSymbol isSymbol ifTrue: [self triggerEvent: anAspectSymbol]




Copyright © 2002, Cincom Systems, Inc.
Pollock




    The Model Hierarchy will not be used
    Replaced by the EventModel Hierarchy
          “Global” EventHandlers
                                           Object             local
                                                          eventHandlers
                                         EventModel

                                         ValueEvent
      Events Triggered:
         #changing                                    “Look ‘ma, No dependents!”
         #changed

Copyright © 2002, Cincom Systems, Inc.
Pollock




    State driven engine
For single select lists, the following are the rule states.

1) If you click on an unselected item, and you do NOT move the mouse more than 2@2 while
you have the mouse down, nothing happens until you release the mouse, at which time the
target item is selected.

2) If you click on an unselected item, and you DO move the mouse more than 2@2, the target
item is selected, and you are put into Drag mode for that item if it is turned on, if not, the
selection changes as you drag the mouse over successive unselected items.

3) If you click on a selected item and do NOT move the mouse more than 2@2, nothing
happens until you release the mouse, at which time the target item is unselected.

4) If you click on a selected item and DO move the mouse more than 2@2, you are put into
Drag mode for that item if it is turned on, if not, the selection changes as you drag the mouse
over successive unselected items (as in rule #2)

Copyright © 2002, Cincom Systems, Inc.
Pollock




     State driven engine (continued)
For multi select lists, the following are the rule states.

1) If you click on an unselected item, and you do NOT move the mouse more than 2@2 while
you have the mouse down, nothing happens until you release the mouse, at which time the
target item is selected. (Rules of Shift & Ctrl apply to "items" selected)

2) If you click on an unselected item, and you DO move the mouse more than 2@2, the current
item is selected and any additional items you drag the mouse over get added to the current
selections. (Rules of Shift & Ctrl apply to "items“ selected).

3) If you click on a selected item, and you do NOT move the mouse more than 2@2 while you
have the mouse down, nothing happens until you release the mouse, at which time the item is
unselected. (Rules of Shift & Ctrl apply to "items“ selected/unselected)

4) If you click on a selected item, and you DO move the mouse more than 2@2, you are now in
Drag mode if it is turned on (Rules of Ctrl & Shift apply to move/copy mode of Drag, and not
to selection modes), if not, rule #2 kicks in.
 Copyright © 2002, Cincom Systems, Inc.
Pollock




    Trigger Event communication (based on
    VSE design)
    “Select When Down” dies a miserable
    death
    Configurable
             Default – Right Button
             Options : Left Button. Modifier Key

Copyright © 2002, Cincom Systems, Inc.
Pollock




    “FeelPolicy” and the dispatch table as we know
     it, goes the way of the dodo
    KeyboardPolicy
             Based on MagicKeys from Roel Wuyts (Thank You!)
             Assignable by “Application”:
                       Transcript – EditPolicy
                       Refactoring Brrowser – CodePolicy
                       MyApplication – MyApplicationPolicy
             Can have “Platform” versions
                       WindowsEditPolicy, WindowsCodePolicy
                       MacEditPolicy, MacMyApplicationPolicy
Copyright © 2002, Cincom Systems, Inc.
Pollock




    ApplicationModel
             Don’t write “self builder componentAt:”
             Use new (VW 7) protocols
                       #mainWindow
                       #windowMenuBar
                       #controllerAt: aWidgetIDSymbol
                       #widgetAt: aWidgetIDSymbol
                       #wrapperAt: aWidgetIDSymbol


Copyright © 2002, Cincom Systems, Inc.
Pollock




    Use the Trigger Event system instead of
    update/change
    Stay away from the Smalltalk (“Default”)
    look
    Stay away from the GUI guts, but if you
    must: SUBCLASS!


Copyright © 2002, Cincom Systems, Inc.
Pollock




    ApplicationModel conversion tool
    WindowSpec conversion tool
    Enhanced MenuEditor
    CoolImage replaces ImageEditor (Thank
    You Travis Griggs!)
    Toolbar Editor


Copyright © 2002, Cincom Systems, Inc.
Pollock




      Enhanced UIPainter
What is gone:
- More than 3 tabs
- Special tabs for color
- Special tabs for layout
- Apply & Cancel buttons

What is added:
-Event configuring in Painter
-Event coding in Painter
-Save to XML external file
-”Unlimited” Undo/Redo
-Undo/Redo list
-Widget Morphing
-The Kitchen Sink
 Copyright © 2002, Cincom Systems, Inc.
Pollock




     Our Example : The Region Pane
     What we have to do
            1.         Write a Test
            2.         Create the Pane subclass
            3.         Write a Test
            4.         Create the Agent subclass
            5.         Write a Test
            6.         Create the Artist subclass

Copyright © 2002, Cincom Systems, Inc.
Pollock




    agentClass
    artistClass
    defaultControllerClass
    frameClass
    getController
         (because defaultControllerClass is nil)
    outerExtentChanged: aPoint


Copyright © 2002, Cincom Systems, Inc.
Pollock




openWindowWithRegion
                 self openWindow.
                 region := Region new.
                 region frame: (OriginExtentFrame origin: 10 @ 10 extent: 100 @ 100).
                 window addComponent: region

openWindowWithRegionWithBorder
                 self openWindow.
                 region := Region new.
                 region frame: (OriginExtentFrame origin: 10 @ 10 extent: 100 @ 100).
                 region border: #ridged.
                 window addComponent: region

Copyright © 2002, Cincom Systems, Inc.
Pollock




    rectangle instance variable (Pane)
    drawOn: (Artist)
    background (Artist & Pane)
    lineSize, lineColor, fillColor (Aritist &
    Pane)
    visible, beVisible: (Agent & Pane)


Copyright © 2002, Cincom Systems, Inc.
Pollock




    Platform looks (if any)
    Additional shapes




Copyright © 2002, Cincom Systems, Inc.
Pollock




Copyright © 2002, Cincom Systems, Inc.
Pollock




                     ©  2002 Cincom Systems, Inc.
                            All Rights Reserved
                           Developed in the U.S.A.
CINCOM,   , and The Smart Choice are trademarks or registered trademarks of Cincom Systems, Inc
                  All other trademarks belong to their respective companies.

Contenu connexe

En vedette

Metacello
MetacelloMetacello
MetacelloESUG
 
Magritte
MagritteMagritte
MagritteESUG
 
Newspeak: Evolving Smalltalk for the Age of the Net
Newspeak: Evolving Smalltalk for the Age of the NetNewspeak: Evolving Smalltalk for the Age of the Net
Newspeak: Evolving Smalltalk for the Age of the NetESUG
 
Cincom Smalltalk: Present, Future & Smalltalk Advocacy
Cincom Smalltalk: Present, Future & Smalltalk AdvocacyCincom Smalltalk: Present, Future & Smalltalk Advocacy
Cincom Smalltalk: Present, Future & Smalltalk AdvocacyESUG
 
Integration of Cincom Smalltalk Systems
Integration of Cincom Smalltalk SystemsIntegration of Cincom Smalltalk Systems
Integration of Cincom Smalltalk SystemsESUG
 
Language, Culture, and Software
Language, Culture, and SoftwareLanguage, Culture, and Software
Language, Culture, and SoftwareESUG
 
SqueakGTK
SqueakGTKSqueakGTK
SqueakGTKESUG
 
Context-Oriented Programming: Beyond Layers
Context-Oriented Programming: Beyond LayersContext-Oriented Programming: Beyond Layers
Context-Oriented Programming: Beyond LayersESUG
 
Rethink Smalltalk
Rethink SmalltalkRethink Smalltalk
Rethink SmalltalkESUG
 
Squeak and Art
Squeak and ArtSqueak and Art
Squeak and ArtESUG
 
Topologos
TopologosTopologos
TopologosESUG
 
Smalltalk on a CE device
Smalltalk on a CE deviceSmalltalk on a CE device
Smalltalk on a CE deviceESUG
 
A magia do natal sofia
A magia do natal sofiaA magia do natal sofia
A magia do natal sofiabloggerfph
 
Yo estoy alegre
Yo estoy alegreYo estoy alegre
Yo estoy alegreRFiltrin1
 
C. naturales olimpiada de conocimiento infantil 2014
C. naturales olimpiada de conocimiento infantil 2014C. naturales olimpiada de conocimiento infantil 2014
C. naturales olimpiada de conocimiento infantil 2014Edgar Hernandez
 
Natural Running Book Ad
Natural Running Book AdNatural Running Book Ad
Natural Running Book Addongura
 

En vedette (17)

Metacello
MetacelloMetacello
Metacello
 
Magritte
MagritteMagritte
Magritte
 
Newspeak: Evolving Smalltalk for the Age of the Net
Newspeak: Evolving Smalltalk for the Age of the NetNewspeak: Evolving Smalltalk for the Age of the Net
Newspeak: Evolving Smalltalk for the Age of the Net
 
Cincom Smalltalk: Present, Future & Smalltalk Advocacy
Cincom Smalltalk: Present, Future & Smalltalk AdvocacyCincom Smalltalk: Present, Future & Smalltalk Advocacy
Cincom Smalltalk: Present, Future & Smalltalk Advocacy
 
Integration of Cincom Smalltalk Systems
Integration of Cincom Smalltalk SystemsIntegration of Cincom Smalltalk Systems
Integration of Cincom Smalltalk Systems
 
Language, Culture, and Software
Language, Culture, and SoftwareLanguage, Culture, and Software
Language, Culture, and Software
 
SqueakGTK
SqueakGTKSqueakGTK
SqueakGTK
 
Context-Oriented Programming: Beyond Layers
Context-Oriented Programming: Beyond LayersContext-Oriented Programming: Beyond Layers
Context-Oriented Programming: Beyond Layers
 
Rethink Smalltalk
Rethink SmalltalkRethink Smalltalk
Rethink Smalltalk
 
Squeak and Art
Squeak and ArtSqueak and Art
Squeak and Art
 
Topologos
TopologosTopologos
Topologos
 
Smalltalk on a CE device
Smalltalk on a CE deviceSmalltalk on a CE device
Smalltalk on a CE device
 
A magia do natal sofia
A magia do natal sofiaA magia do natal sofia
A magia do natal sofia
 
Yo estoy alegre
Yo estoy alegreYo estoy alegre
Yo estoy alegre
 
C. naturales olimpiada de conocimiento infantil 2014
C. naturales olimpiada de conocimiento infantil 2014C. naturales olimpiada de conocimiento infantil 2014
C. naturales olimpiada de conocimiento infantil 2014
 
Figueira
FigueiraFigueira
Figueira
 
Natural Running Book Ad
Natural Running Book AdNatural Running Book Ad
Natural Running Book Ad
 

Similaire à Preparing for Pollock

Using Edge Animate to Create a Reusable Component Set
Using Edge Animate to Create a Reusable Component SetUsing Edge Animate to Create a Reusable Component Set
Using Edge Animate to Create a Reusable Component SetJoseph Labrecque
 
Xebia adobe flash mobile applications
Xebia adobe flash mobile applicationsXebia adobe flash mobile applications
Xebia adobe flash mobile applicationsMichael Chaize
 
Flex4 component lifecycle
Flex4 component lifecycleFlex4 component lifecycle
Flex4 component lifecycleRJ Owen
 
ميهين
ميهينميهين
ميهينAhmed
 
Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1benDesigning
 
Flex4 Component Lifecycle
Flex4 Component LifecycleFlex4 Component Lifecycle
Flex4 Component LifecycleEffective
 
Flex4 Component Lifecycle
Flex4 Component LifecycleFlex4 Component Lifecycle
Flex4 Component LifecycleEffectiveUI
 
Python_for_Visual_Effects_and_Animation_Pipelines
Python_for_Visual_Effects_and_Animation_PipelinesPython_for_Visual_Effects_and_Animation_Pipelines
Python_for_Visual_Effects_and_Animation_PipelinesRussell Darling
 
Take your productivity to the next level using Intellij IDEA and powerful uti...
Take your productivity to the next level using Intellij IDEA and powerful uti...Take your productivity to the next level using Intellij IDEA and powerful uti...
Take your productivity to the next level using Intellij IDEA and powerful uti...Dominik Poljak
 
Flash Catalyst at Flex Camp Orange County
Flash Catalyst at Flex Camp Orange CountyFlash Catalyst at Flex Camp Orange County
Flash Catalyst at Flex Camp Orange CountyJuan Sanchez
 
Cooking security sans@night
Cooking security sans@nightCooking security sans@night
Cooking security sans@nightjtimberman
 
Open frameworks 101_fitc
Open frameworks 101_fitcOpen frameworks 101_fitc
Open frameworks 101_fitcbenDesigning
 
Automate Behavior-driven Development | Stanford WebCamp 2022
Automate Behavior-driven Development | Stanford WebCamp 2022Automate Behavior-driven Development | Stanford WebCamp 2022
Automate Behavior-driven Development | Stanford WebCamp 2022DOCOMO Innovations, Inc.
 
CC-Castle; The best Real-Time/Embedded/HighTech language EVER?
CC-Castle; The best Real-Time/Embedded/HighTech language EVER?CC-Castle; The best Real-Time/Embedded/HighTech language EVER?
CC-Castle; The best Real-Time/Embedded/HighTech language EVER?Albert Mietus
 
S#01 김영욱
S#01 김영욱 S#01 김영욱
S#01 김영욱 codercay
 
Qditor user guide for windows pc
Qditor user guide for windows pcQditor user guide for windows pc
Qditor user guide for windows pcQditor Video Editor
 

Similaire à Preparing for Pollock (20)

Using Edge Animate to Create a Reusable Component Set
Using Edge Animate to Create a Reusable Component SetUsing Edge Animate to Create a Reusable Component Set
Using Edge Animate to Create a Reusable Component Set
 
Xebia adobe flash mobile applications
Xebia adobe flash mobile applicationsXebia adobe flash mobile applications
Xebia adobe flash mobile applications
 
Flex4 component lifecycle
Flex4 component lifecycleFlex4 component lifecycle
Flex4 component lifecycle
 
ميهين
ميهينميهين
ميهين
 
Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1
 
Flex4 Component Lifecycle
Flex4 Component LifecycleFlex4 Component Lifecycle
Flex4 Component Lifecycle
 
Flex4 Component Lifecycle
Flex4 Component LifecycleFlex4 Component Lifecycle
Flex4 Component Lifecycle
 
Python_for_Visual_Effects_and_Animation_Pipelines
Python_for_Visual_Effects_and_Animation_PipelinesPython_for_Visual_Effects_and_Animation_Pipelines
Python_for_Visual_Effects_and_Animation_Pipelines
 
Take your productivity to the next level using Intellij IDEA and powerful uti...
Take your productivity to the next level using Intellij IDEA and powerful uti...Take your productivity to the next level using Intellij IDEA and powerful uti...
Take your productivity to the next level using Intellij IDEA and powerful uti...
 
Flash Catalyst at Flex Camp Orange County
Flash Catalyst at Flex Camp Orange CountyFlash Catalyst at Flex Camp Orange County
Flash Catalyst at Flex Camp Orange County
 
Cooking security sans@night
Cooking security sans@nightCooking security sans@night
Cooking security sans@night
 
Tizen Window System
Tizen Window SystemTizen Window System
Tizen Window System
 
Windows phone and azure
Windows phone and azureWindows phone and azure
Windows phone and azure
 
Open frameworks 101_fitc
Open frameworks 101_fitcOpen frameworks 101_fitc
Open frameworks 101_fitc
 
Game Studio
Game StudioGame Studio
Game Studio
 
Automate Behavior-driven Development | Stanford WebCamp 2022
Automate Behavior-driven Development | Stanford WebCamp 2022Automate Behavior-driven Development | Stanford WebCamp 2022
Automate Behavior-driven Development | Stanford WebCamp 2022
 
CC-Castle; The best Real-Time/Embedded/HighTech language EVER?
CC-Castle; The best Real-Time/Embedded/HighTech language EVER?CC-Castle; The best Real-Time/Embedded/HighTech language EVER?
CC-Castle; The best Real-Time/Embedded/HighTech language EVER?
 
S#01 김영욱
S#01 김영욱 S#01 김영욱
S#01 김영욱
 
SynapseIndia dotnet development framework
SynapseIndia  dotnet development frameworkSynapseIndia  dotnet development framework
SynapseIndia dotnet development framework
 
Qditor user guide for windows pc
Qditor user guide for windows pcQditor user guide for windows pc
Qditor user guide for windows pc
 

Plus de ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in PharoESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector TuningESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FutureESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing ScoreESUG
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsESUG
 

Plus de ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Preparing for Pollock

  • 1. Pollock Preparing For Pollock
  • 2. Number 1, 1950 (Lavender Mist) Jackson Pollock 1912-1956 Copyright © 2002, Cincom Systems, Inc.
  • 3. Pollock  Why a new GUI Framework  Pollock Philosophy and Goals  The Path  The Metaphor  The Basics  Pollock & The Trigger Events Framework  Models & ValueEvents Copyright © 2002, Cincom Systems, Inc.
  • 4. Pollock  Pollock & DragDrop  Pollock & Edit Keys  Coding Today With The Future In Mind  Pollock Tools  Building A New Widget – An Example  Q&A Copyright © 2002, Cincom Systems, Inc.
  • 5. Pollock  What needs to be obsolete  Wrappers  Look Specific Widgets  Ball Of Mud Controllers  Static Edit Keys  Fragile & Noisy Change/Updates in the Guts  Do Too Much Builder Copyright © 2002, Cincom Systems, Inc.
  • 6. Pollock  What needs to be added  Configurable Hotkeys  Dynamic Look Changing  Stupid Controllers  Full Use of the Trigger Event System  Separate Builder and Widget Inventory  E-Z Developer Widget Creation  E-Z Developer Widget Extension Capability Copyright © 2002, Cincom Systems, Inc.
  • 7. Pollock  Widgets In General  Out of the box they need  To Do More  To Do It Faster  To Do It Better  Where Required: To Do It More Platform Faithfully  And if not:  E-Z To Make Them Do It Copyright © 2002, Cincom Systems, Inc.
  • 8. Pollock Copyright © 2002, Cincom Systems, Inc.
  • 9. Pollock Copyright © 2002, Cincom Systems, Inc.
  • 10. Pollock  Wrappers  SpecWrappers: Hold on to too much runtime information, waste space with the rest  Bounded, Bounding, Bordered… Baloney!  Scrollbars : The result of composition run rampant  Menus : Not much better  Bounds calculation : The progenitor of modern C obfuscation contests Copyright © 2002, Cincom Systems, Inc.
  • 11. Pollock  Look Specific Widgets  Can’t change their look on the fly without rebuilding whole window  Complex build rules (<widget>:into:)  Forces duplicated build code  Commingled common and look specific code Copyright © 2002, Cincom Systems, Inc.
  • 12. Pollock  Ball Of Mud Controllers  Controllers have lost their “MVC” meaning  They have become sophomoric  Because of wrappers are involved in downcasting & upcasting events  Knows too much about view Copyright © 2002, Cincom Systems, Inc.
  • 13. Pollock  Static Edit Keys  Controllers do too much  Controllers contain too much feel specific code  Dispatch tables are code based  The Developer knows best (i.e. least) Copyright © 2002, Cincom Systems, Inc.
  • 14. Pollock  Fragile & Noisy Change/Updates in the Guts  All dependents get all update information, even when they don’t care (which in the guts of the GUI, is most of the time)  Updates fling up and down the wrapper hierarchy  Changing models and views is fraught with danger, making existing Widgets fragile  Debugging is a nightmare Copyright © 2002, Cincom Systems, Inc.
  • 15. Pollock  Do Too Much Builder  Builds then sticks around  “self builder componentAt:” (‘nuff said!)  Can’t properly get nested components (sub- canvases)  Throws out important build time information Copyright © 2002, Cincom Systems, Inc.
  • 16. Pollock  Configurable Hotkeys  Dynamic Look Changing  Stupid Controllers  Full Use of the Trigger Event System  Separate Builder and Widget Inventory  E-Z Developer Widget Creation  E-Z Developer Widget Extension Capability Copyright © 2002, Cincom Systems, Inc.
  • 17. Pollock  Goals  Must be more accessible to both novice and expert developers  Must be more modular  Must be more adaptable to new looks and feels  Must have tools to migrate from old framework  Must have comprehensive unit tests  Must be developed “Out In The Open” Copyright © 2002, Cincom Systems, Inc.
  • 18. Pollock  Philosophy : XP (as much as possible)   Make it work, Make it right, Make it fast (in that order)  You aren’t going to need it  The simplest thing that can possibly work  Let the code tell me what to do  Test first  Continuous integration Copyright © 2002, Cincom Systems, Inc.
  • 19. Pollock Window MenuBar Toolbar AdvancedText Copyright © 2002, Cincom Systems, Inc.
  • 20. Pollock  Beta 1: VW 7  ApplicationWindow, Button, Label & Image  Simple layouts (OriginExtent, Alignment)  Win9x, MacOSX & Motif looks  Build, Read & Write from XML and Array  DTD for XML  Window opening styles  Full Trigger Event usage  Builder, UserInterface, WidgetInventory Copyright © 2002, Cincom Systems, Inc.
  • 21. Pollock  Beta 2 : VW 7.1  CheckBox, Radio, InputField, List, Menu, DropDown (list and menu), AdvancedText, Grid (Table & Dataset combined), Dialog, Toolbar & Toolbar panes, TreeView, TabControl, GroupBox  DragDrop  Fractional Layouts  UIPainter written in Pollock Copyright © 2002, Cincom Systems, Inc.
  • 22. Pollock  Production 1 : VW 7.2  SubpaneHolder, Resizer, SpinButton, Divider, ClickWidget, Region, Progress, Slider  UIPainter, MenuEditor, ToolbarEditor  Translation & Conversion tools  Co-exist in image with existing framework  Existing framework default user interface creation tool  Last changes to existing framework  All widgets have at least basic functionality Copyright © 2002, Cincom Systems, Inc.
  • 23. Pollock  Production 2 : VW “7.2”  All widgets have full capability  WinXP Look & Feel  Some internal tools use Pollock  Co-exist in image with existing framework  Pollock default new user interface creation tool  Existing framework “Soft” obsolete Copyright © 2002, Cincom Systems, Inc.
  • 24. Pollock  Production 3 : VW “7.3”  All tools use Pollock  Existing framework “Hard” obsolete  Only Pollock in image  Existing framework fully loadable from Obsolete parcel Copyright © 2002, Cincom Systems, Inc.
  • 25. Pollock  Panes & Frames, Agents & Artists  Pane  Like a VisualComponent  Some Panes have Subpanes  Window is a Pane  Screen is a Pane  All subclass from AbstractPane Copyright © 2002, Cincom Systems, Inc.
  • 26. Pollock  Panes & Frames, Agents & Artists (cont.)  Frame  Like a Layout  visible bounds  displayable bounds  origin  [alignment]  [fractional positions]  [relation positions]  [viewport] Copyright © 2002, Cincom Systems, Inc.
  • 27. Pollock  Panes & Frames, Agents & Artists  Agent  Offload behavior from controller  Tell the artist when to draw  Maintain most state (visibility, enablement, selected, pushedness, cursor position)  Behavior for mouse and keyboard (keyboard processor, focus, “handler for mouse event”) Copyright © 2002, Cincom Systems, Inc.
  • 28. Pollock  Panes & Frames, Agents & Artists  Artist  Does all drawing  Interacts with Agent and Pane to get information about what to draw, and when Copyright © 2002, Cincom Systems, Inc.
  • 29. Pollock Object AbstractPane AbstractDraw Frame CompositePane DisplayLabel AbstractAgent AbstractArtist LayoutFrame Button ButtonAgent ButtonArtist Radio RadioAgent RadioArtist … … Copyright © 2002, Cincom Systems, Inc.
  • 30. Pollock ButtonArtist MacOSXButtonArtist MotifButtonArtist Win95ButtonArtist Copyright © 2002, Cincom Systems, Inc.
  • 31. Pollock RadioAgent MacOSXRadioAgent MotifRadioAgent Win95RadioAgent Copyright © 2002, Cincom Systems, Inc.
  • 32. Pollock  Creating, configuring and opening a window | window | window := Pollock.ScheduledWindow new. window frame: ((WindowFrame new) maximumSize: 400 @ 400; openingPosition: 100 @ 100; yourself). window border: #etched. window open Copyright © 2002, Cincom Systems, Inc.
  • 33. Pollock  Creating, configuring and adding a Pane | window radio | window := self openWindow. radio := Radio new. radio frame: (OriginExtentFrame origin: 10 @ 10 extent: 30 @ 30). window addComponent: radio. Copyright © 2002, Cincom Systems, Inc.
  • 34. Pollock  Labels are NOT part of panes, but can be subpanes | window radio displayLabel labelModel | window := self openWindow. radio := self createRadio. displayLabel := Pollock.DisplayLabel new. labelModel := Pollock.Label string: 'Hi&Ho'. displayLabel label: labelModel. displayLabel frame origin: 0 @ 0. radio addComponent: displayLabel. window addComponent: radio Copyright © 2002, Cincom Systems, Inc.
  • 35. Pollock  CompositePanes  Any subclass can have subpanes  Can have any number of subpanes  Can have any kind of subpanes  Common subpanes  Buttons : Labels and DisplayImages  Radios : Labels Copyright © 2002, Cincom Systems, Inc.
  • 36. Pollock  Controllers are much more dumb  Controllers and Trackers still exist  New hierarchy  Forward all events to the Agent  The Agent holds the Keyboard Processor  Because of compatibility, controller passes it to the Agent Copyright © 2002, Cincom Systems, Inc.
  • 37. Pollock  Decorations and Borders  Decorations : Things inside a pane  Scrollbars in an Advanced Text pane  The “3D Look / Raised” portion of a Button  Clip the drawable bounds  Borders : Things that surround a pane  Effectively clip the visible bounds  Most panes have borders  Some panes have decorations  Borders and Decorations have Artists Copyright © 2002, Cincom Systems, Inc.
  • 38. Pollock  A Button with a Border (ridged) and a decoration:  A Button with a Border (ridged) – No decoration: Copyright © 2002, Cincom Systems, Inc.
  • 39. Pollock  ActionDisplay pane Action Part “Display Right” Display Action Part “Display Left” Display Part Part  Examples: Display Right Spin Button Drop Down Display Left Copyright © 2002, Cincom Systems, Inc.
  • 40. Pollock  Agents, Artists and Frames are pluggable at runtime  Update/Change behavior is banned from the Pollock internals  WidgetPolicy, BorderPolicy, LookPolicy  FeelPolicy replaced by KeyboardPolicy  New Controller hierarchy  New ScheduledWindow hierarchy Copyright © 2002, Cincom Systems, Inc.
  • 41. Pollock Object PaneController KeyboardController LabelController ToggleController ButtonController ActionDisplayController Copyright © 2002, Cincom Systems, Inc.
  • 42. Pollock UI.Window Pollock.ScheduledWindow Pollock.ApplicationWindow Pollock.DialogWindow Copyright © 2002, Cincom Systems, Inc.
  • 43. Pollock  Grid  Combines Dataset & Table  Will support Dataset models, as well as Table models  Will provide Multi-Column list mode Copyright © 2002, Cincom Systems, Inc.
  • 44. Pollock  DropDown  Combines DropDown, Combo and MenuButton  Will support Lists as well as Menus as models Copyright © 2002, Cincom Systems, Inc.
  • 45. Pollock  TabControl  Will exist  Should it add “Minor” tabs (right and/or bottom)?  Should it add “Stacked” tabs?  Notebook  Not scheduled to exist (should it?) Copyright © 2002, Cincom Systems, Inc.
  • 46. Pollock  The Trigger Events Framework  Fully fleshed out in VW 7  All events ultimately triggered by “views”  Event Checking  Ambivalent vs. Strict  Object – Default is Ambivalent  Views & Panes – Default is Strict  Using it now  In General  ApplicationModel Copyright © 2002, Cincom Systems, Inc.
  • 47. Pollock  General  eventTable  canTriggerEvent: anEventNameSymbol  hasActionForEvent: anEventNameSymbol  actionListForEvent: anEventNameSymbol Copyright © 2002, Cincom Systems, Inc.
  • 48. Pollock  General  when: anEventNameSymbol do: aBlock  when: anEventNameSymbol evaluate: anAction  when: anEventNameSymbol send: aSelectorSymbol to: anObject  when: anEventNameSymbol send: aSelectorSymbol to: anObject with: anArgumentObject  when: anEventNameSymbol send: aSelectorSymbol to: anObject with: firstArgumentObject with: secondArgumentObject  when: anEventNameSymbol send: aSelectorSymbol to: anObject withArguments: anArgumentCollection  whenAny:… Copyright © 2002, Cincom Systems, Inc.
  • 49. Pollock  General  removeAction: anAction forEvent: anEventNameSymbol  removeActionsForEvent: anEventNameSymbol Copyright © 2002, Cincom Systems, Inc.
  • 50. Pollock  ApplicationModel  widget: aWidgetIDSymbol when: anEventSymbol do: aBlock  widget: aWidgetIDSymbol when: anEventSymbol evaluate: anAction  widget: aWidgetIDSymbol when: anEventSymbol send: anAction to: anObject  widget: aWidgetIDSymbol when: anEventSymbol send: anAction to: anObject with: anArgument  widget: aWidgetIDSymbol when: anEventSymbol send: anAction to: anObject with: firstArgument with: secondArgument  widget: aWidgetIDSymbol when: anEventSymbol send: anAction to: anObject withArguments: aCollection Copyright © 2002, Cincom Systems, Inc.
  • 51. Pollock  New behavior in Object>>changed:with: changed: anAspectSymbol with: aParameter "The receiver changed. The change is denoted by the argument anAspectSymbol. Usually the argument is a Symbol that is part of the dependent's change protocol, that is, some aspect of the object's behavior, and aParameter is additional information. Inform all of the dependents." self myDependents update: anAspectSymbol with: aParameter from: self. anAspectSymbol isSymbol ifTrue: [self triggerEvent: anAspectSymbol] Copyright © 2002, Cincom Systems, Inc.
  • 52. Pollock  The Model Hierarchy will not be used  Replaced by the EventModel Hierarchy “Global” EventHandlers Object local eventHandlers EventModel ValueEvent Events Triggered: #changing “Look ‘ma, No dependents!” #changed Copyright © 2002, Cincom Systems, Inc.
  • 53. Pollock  State driven engine For single select lists, the following are the rule states. 1) If you click on an unselected item, and you do NOT move the mouse more than 2@2 while you have the mouse down, nothing happens until you release the mouse, at which time the target item is selected. 2) If you click on an unselected item, and you DO move the mouse more than 2@2, the target item is selected, and you are put into Drag mode for that item if it is turned on, if not, the selection changes as you drag the mouse over successive unselected items. 3) If you click on a selected item and do NOT move the mouse more than 2@2, nothing happens until you release the mouse, at which time the target item is unselected. 4) If you click on a selected item and DO move the mouse more than 2@2, you are put into Drag mode for that item if it is turned on, if not, the selection changes as you drag the mouse over successive unselected items (as in rule #2) Copyright © 2002, Cincom Systems, Inc.
  • 54. Pollock  State driven engine (continued) For multi select lists, the following are the rule states. 1) If you click on an unselected item, and you do NOT move the mouse more than 2@2 while you have the mouse down, nothing happens until you release the mouse, at which time the target item is selected. (Rules of Shift & Ctrl apply to "items" selected) 2) If you click on an unselected item, and you DO move the mouse more than 2@2, the current item is selected and any additional items you drag the mouse over get added to the current selections. (Rules of Shift & Ctrl apply to "items“ selected). 3) If you click on a selected item, and you do NOT move the mouse more than 2@2 while you have the mouse down, nothing happens until you release the mouse, at which time the item is unselected. (Rules of Shift & Ctrl apply to "items“ selected/unselected) 4) If you click on a selected item, and you DO move the mouse more than 2@2, you are now in Drag mode if it is turned on (Rules of Ctrl & Shift apply to move/copy mode of Drag, and not to selection modes), if not, rule #2 kicks in. Copyright © 2002, Cincom Systems, Inc.
  • 55. Pollock  Trigger Event communication (based on VSE design)  “Select When Down” dies a miserable death  Configurable  Default – Right Button  Options : Left Button. Modifier Key Copyright © 2002, Cincom Systems, Inc.
  • 56. Pollock  “FeelPolicy” and the dispatch table as we know it, goes the way of the dodo  KeyboardPolicy  Based on MagicKeys from Roel Wuyts (Thank You!)  Assignable by “Application”:  Transcript – EditPolicy  Refactoring Brrowser – CodePolicy  MyApplication – MyApplicationPolicy  Can have “Platform” versions  WindowsEditPolicy, WindowsCodePolicy  MacEditPolicy, MacMyApplicationPolicy Copyright © 2002, Cincom Systems, Inc.
  • 57. Pollock  ApplicationModel  Don’t write “self builder componentAt:”  Use new (VW 7) protocols  #mainWindow  #windowMenuBar  #controllerAt: aWidgetIDSymbol  #widgetAt: aWidgetIDSymbol  #wrapperAt: aWidgetIDSymbol Copyright © 2002, Cincom Systems, Inc.
  • 58. Pollock  Use the Trigger Event system instead of update/change  Stay away from the Smalltalk (“Default”) look  Stay away from the GUI guts, but if you must: SUBCLASS! Copyright © 2002, Cincom Systems, Inc.
  • 59. Pollock  ApplicationModel conversion tool  WindowSpec conversion tool  Enhanced MenuEditor  CoolImage replaces ImageEditor (Thank You Travis Griggs!)  Toolbar Editor Copyright © 2002, Cincom Systems, Inc.
  • 60. Pollock  Enhanced UIPainter What is gone: - More than 3 tabs - Special tabs for color - Special tabs for layout - Apply & Cancel buttons What is added: -Event configuring in Painter -Event coding in Painter -Save to XML external file -”Unlimited” Undo/Redo -Undo/Redo list -Widget Morphing -The Kitchen Sink Copyright © 2002, Cincom Systems, Inc.
  • 61. Pollock   Our Example : The Region Pane   What we have to do 1.  Write a Test 2.  Create the Pane subclass 3.  Write a Test 4.  Create the Agent subclass 5.  Write a Test 6.  Create the Artist subclass Copyright © 2002, Cincom Systems, Inc.
  • 62. Pollock  agentClass  artistClass  defaultControllerClass  frameClass  getController (because defaultControllerClass is nil)  outerExtentChanged: aPoint Copyright © 2002, Cincom Systems, Inc.
  • 63. Pollock openWindowWithRegion self openWindow. region := Region new. region frame: (OriginExtentFrame origin: 10 @ 10 extent: 100 @ 100). window addComponent: region openWindowWithRegionWithBorder self openWindow. region := Region new. region frame: (OriginExtentFrame origin: 10 @ 10 extent: 100 @ 100). region border: #ridged. window addComponent: region Copyright © 2002, Cincom Systems, Inc.
  • 64. Pollock  rectangle instance variable (Pane)  drawOn: (Artist)  background (Artist & Pane)  lineSize, lineColor, fillColor (Aritist & Pane)  visible, beVisible: (Agent & Pane) Copyright © 2002, Cincom Systems, Inc.
  • 65. Pollock  Platform looks (if any)  Additional shapes Copyright © 2002, Cincom Systems, Inc.
  • 66. Pollock Copyright © 2002, Cincom Systems, Inc.
  • 67. Pollock ©  2002 Cincom Systems, Inc. All Rights Reserved Developed in the U.S.A. CINCOM, , and The Smart Choice are trademarks or registered trademarks of Cincom Systems, Inc All other trademarks belong to their respective companies.