> On 05 Oct 2014, at 13:21, Nicolai Hess <nicolaih...@web.de> wrote:
> 
> Yes, Glamour is cool.
> 
> But two issues (can you solve them? :) )
> 1. the source list is not updated, the dragged method is still visible in the
> old protocol until you change the selected protocol item
> 2. (critical) the image hangs if you drop the methods list item in the 
> methods list.

that’s an issue for Doru ;)

> 
> 
> 
> 
> 2014-10-05 11:56 GMT+02:00 Esteban Lorenzano <esteba...@gmail.com 
> <mailto:esteba...@gmail.com>>:
> lazy Yury
> 
> 
> browser := GLMTabulator new 
>       row: [ :row | 
>                       row 
>                               column: #protocols;
>                               column: #methods ];
>       row: #code;
>       yourself.
>       
> browser transmit 
>       to: #protocols; 
>       andShow: [ :a| 
>               a list 
>                       allowDropOnItem: [:draggedObject :targetItem :list | 
> true ];
>                       dropOnItem: [:draggedObject :targetItem :list | 
>                               browser entity organization
>                                       classify: draggedObject
>                                       under: targetItem name.
>                               list update.
>                               true ];
>                       display: [ :class | class organization protocols ]; 
> format: #name ].
> browser transmit 
>       from: #protocols; 
>       to: #methods; 
>       andShow: [ :a| 
>               a list 
>                       allowItemDrag: [:item :list | true ];                   
>                       display: [ :protocol | protocol methods ] ].
> browser transmit 
>       from: #methods; 
>       to: #code; 
>       andShow: [ :a | 
>               a smalltalkCode 
>                       smalltalkClass: [ browser entity ];
>                       display: [ :method | (browser entity>>method) 
> sourceCode ] ].
> 
> browser openOn: Morph
> 
>> On 05 Oct 2014, at 10:08, Yuriy Tymchuk <yuriy.tymc...@me.com 
>> <mailto:yuriy.tymc...@me.com>> wrote:
>> 
>> Yes, but as I’ve mentioned earlier, I’m interested in drag-n-drop 
>> recategorization. I don’t know if it’s doable with glamour.
>> 
>> Uko
>> 
>>> On 04 Oct 2014, at 15:58, Esteban Lorenzano <esteba...@gmail.com 
>>> <mailto:esteba...@gmail.com>> wrote:
>>> 
>>> and this is same with glamour:
>>> 
>>> browser := GLMTabulator new 
>>>     row: [ :row | 
>>>                     row 
>>>                             column: #protocols;
>>>                             column: #methods ];
>>>     row: #code;
>>>     yourself.
>>>     
>>> browser transmit 
>>>     to: #protocols; 
>>>     andShow: [ :a| a list display: [ :class | class organization protocols 
>>> ]; format: #name ].
>>> browser transmit 
>>>     from: #protocols; 
>>>     to: #methods; 
>>>     andShow: [ :a| a list display: [ :protocol | protocol methods ] ].
>>> browser transmit 
>>>     from: #methods; 
>>>     to: #code; 
>>>     andShow: [ :a | 
>>>             a smalltalkCode 
>>>                     smalltalkClass: [ browser entity ];
>>>                     display: [ :method | (browser entity>>method) 
>>> sourceCode ] ].
>>> 
>>> browser openOn: Morph.
>>> 
>>> Of course spec is capable of doing that. 
>>> But glamour is designed with transitions and scripting in mind (thinking 
>>> specially on browsers), while spec is designed for components and 
>>> composition.
>>> 
>>> Esteban
>>> 
>>>> On 04 Oct 2014, at 15:35, Nicolai Hess <nicolaih...@web.de 
>>>> <mailto:nicolaih...@web.de>> wrote:
>>>> 
>>>> 
>>>> 2014-10-03 13:26 GMT+02:00 Esteban Lorenzano <esteba...@gmail.com 
>>>> <mailto:esteba...@gmail.com>>:
>>>> 
>>>>> On 03 Oct 2014, at 13:14, Nicolai Hess <nicolaih...@web.de 
>>>>> <mailto:nicolaih...@web.de>> wrote:
>>>>> 
>>>>> 
>>>>> Am 03.10.2014 12:34 schrieb "Yuriy Tymchuk" <yuriy.tymc...@me.com 
>>>>> <mailto:yuriy.tymc...@me.com>>:
>>>>> >
>>>>> > Hi.
>>>>> >
>>>>> > I want to make something like a browser on a single class. I.e. just 
>>>>> > use 2 last lists out if 4 in standard browser.
>>>>> >
>>>>> > Is there already something like that? If not, should I use existing 
>>>>> > widgets, or implement my own using spec?
>>>>> >
>>>>> > Cheers!
>>>>> > Uko
>>>>> >
>>>>> > Sent from my iPhone
>>>>> 
>>>>> I think that is pretty easy with some spec models.
>>>>> Maybe there is already an example
>>>>> 
>>>> yes, but a few models means a few classes :)
>>>> in a single class, it will e a lot easier glamour (which btw, is specially 
>>>> designed for that: to make browsers).
>>>> 
>>>> You can work with ready made models like ListModel/TextModel and just need 
>>>> one class for sticking them
>>>> together. Here some code, evaluateable from workspace, that shows how we
>>>> can build a "simple browser" with spec models:
>>>> This is just the simple skeleton, for more details it would be a bit 
>>>> confusing doing all this
>>>> in one workspace "script" :)
>>>> 
>>>> class:=Morph.
>>>> method:=class>>#openInWorld.
>>>> 
>>>> composed:= DynamicComposableModel new.
>>>> composed instantiateModels: #(code TextModel protocols ListModel methods 
>>>> ListModel).
>>>> composed code text:method sourceCode.
>>>> composed protocols items: class protocols.
>>>> composed methods items: class selectors.
>>>> composed code aboutToStyle:true.
>>>> composed code behavior:class.
>>>> composed title: class asString.
>>>> composed code acceptBlock:[:text |
>>>>     class compile:text notifying:nil.
>>>>     ].
>>>> composed protocols whenSelectedItemChanged:[:item |
>>>>     composed methods items:( class selectorsInProtocol: item)
>>>>     ].
>>>> composed methods  whenSelectedItemChanged:[:item |
>>>>     item ifNotNil:[
>>>>     method:=class methodDict at:item.
>>>>    composed code text:method sourceCode]
>>>>     ].
>>>> composed openWithSpecLayout:(
>>>> SpecLayout composed
>>>> newColumn:[:c | c
>>>>      newRow:[:r | r
>>>>         add: #protocols;
>>>>         add: #methods
>>>>         ];
>>>>     add: #code];
>>>> yourself).
>>>>  
>>>> 
>>>> Esteban
>>>>> Hilaire asked for a simple Method editor and
>>>>> i wrote a simple example build with DynamicComposableModel, search the 
>>>>> Mailingliste.
>>>>> 
>>> 
>> 
> 
> 

Reply via email to