@startuml title Proposal of Model-View Based List and Grid Hierarchy '// Efl Namespaces package Efl <<Frame>> { '// Interfaces interface Efl.Model<<Feature>> { +@prop::property(); +count(); } interface Efl.View<<Feature>> { #model +@prop::model() +model_unset() } '// Efl.Ui Namespaces package Efl.Ui <<Frame>> { '// Interfaces interface Efl.Ui.Factory<<Feature>> interface Efl.Ui.Scrollable<<Property>> interface Efl.Ui.Clickable<<Property>> { ==protected== ~clicked() ~longpressed() } interface Efl.Ui.Selectable<<Property>> { ..states.. #selected ==public== +prop::select() +prop::select()@override '// legacy:multi_select +prop::select_mode() } interface Efl.Ui.Focusable<<Property>> { ..states.. #focused ==public== +prop::focus() } '// Abstract classes abstract Efl.Ui.Factory<<Abstract Class>> { '// cache can be supported in here? ~reqeust_push() ~request_pop() +create() } abstract Efl.Ui.View<<Abstract Class>> { ..private.. -Efl.Ui.View.Data -Efl.Ui.View.Pan ..states.. #disabled #highlighted ==protected== ~realized() ~unrealized() ==public== +prop::highlight() +prop::disable() +prop::visible() +prop::homogeneous() +prop::factory() +prop::default_style() '// may need to move offsprings +region_child() +go_to() +refresh() } '// Classes class Efl.Ui.Layout<<Container>> class Efl.Ui.Scroll<<(M,orchid) Mixin Implements>> class Efl.Ui.Layout.Factory<<Adapter>> class Efl.Ui.List_View<<Scrollable Container>> { ..private.. -Efl.Ui.List_View.Data -Efl.Ui.List_View.Pan ==public== +prop::reorder() +prop::reorder_mode() +prop::decorate() +prop::decorate_mode() '// extern class? edit instead? } class Efl.Ui.Grid_View<<Scrollable Container>> { ..private.. -Efl.Ui.Grid_View.Data -Efl.Ui.Grid_View.Pan ==public== +prop::reorder() +prop::reorder_mode() +prop::scroll_orient() '// could be controlled by scroll interface? } class Efl.Ui.Tree_View<<No Plan, Future Work>> { ..private.. -Efl.Ui.Tree_View.Data -Efl.Ui.Tree_View.Pan ==public== +prop::fold() +prop::indent() +prop::scroll_orient() '// could be controlled by scroll interface? } class Efl.Ui.File_View<<No Plan, Future Work>> { ..private.. -Efl.Ui.File_View.Data -Efl.Ui.File_View.Pan ==public== +prop::reorder() +prop::reorder_mode() +prop::fold() +prop::depth() +prop::scroll_orient() '// could be controlled by scroll interface? } } } '// Inheritences '// Efl.View Efl.Model..Efl.View '// Efl.Ui.Scroll Efl.Ui.Scrollable <|-- Efl.Ui.Scroll:Realizaitons '// Efl.Ui.Layout Efl.Ui.Clickable <..Efl.Ui.Layout:Realizations '// Efl.Ui.Facotry Efl.Factory <|.. Efl.Ui.Factory:Realizaitons '// Efl.Ui.Layout.Factory Efl.Ui.Factory <|-- Efl.Ui.Layout.Factory:Inherit Efl.Ui.Layout *- Efl.Ui.Layout.Factory:Composition '// Efl.Ui.View Efl.Ui.Layout <|-- Efl.Ui.View:Inherit Efl.View <|.. Efl.Ui.View:Realization Efl.Ui.Selectable <..Efl.Ui.View:Realizations Efl.Ui.Focusable <..Efl.Ui.View:Realizations Efl.Ui.Scroll <|. Efl.Ui.View:Mixin Efl.Ui.Layout.Factory *- Efl.Ui.View:Composition '// Efl.Ui.List_View Efl.Ui.View <|-- Efl.Ui.List_View:Inherit '// Efl.Ui.Grid_View Efl.Ui.View <|-- Efl.Ui.Grid_View:Inherit '// Efl.Ui.Tree_View Efl.Ui.View <|-- Efl.Ui.Tree_View:Inherit '// Efl.Ui.File_View Efl.Ui.View <|-- Efl.Ui.File_View:Inherit @enduml
Decode URL
Submit
amiga
aws-orange
black-knight
bluegray
blueprint
cerulean-outline
cerulean
crt-amber
crt-green
cyborg-outline
cyborg
hacker
lightgray
mars
materia-outline
materia
metal
mimeograph
minty
plain
reddress-darkblue
reddress-darkgreen
reddress-darkorange
reddress-darkred
reddress-lightblue
reddress-lightgreen
reddress-lightorange
reddress-lightred
sandstone
silver
sketchy-outline
sketchy
spacelab
spacelab-white
superhero-outline
superhero
toy
united
vibrant
Pure Javascript
PNG
SVG
ASCII Art