Hi Hugo,
I committed some changes that would like you to check:

* docs
* imports (DataGrid and Event imports was missed so jewel was not compiling)

also about this lines I was exposing in review comments:

dg.dataProvider = null;
dg.dataProvider = collection;

I was thinking in do instead this:

dg.model.dispatchEvent(new Event("dataProviderChanged"));

But this is not working since "ArrayListSelectionModel.dataProvider" for
each column List has:

if (value == _dataProvider) return;

and since the dataProvider is the same (although order changed) it returns
without refreshing it
for that reason you need to do a null and then reassign the provider.

I'll see what we can do in that kind of cases.

@Greg Dove <greg.d...@gmail.com> , what do you think about this? looking at
IArrayListView API talks about calling just refresh() in the collection
should update the view, but we are not doing this, so making things
more complicated when using the API.



El vie., 11 sept. 2020 a las 19:14, Carlos Rovira (<carlosrov...@apache.org>)
escribió:

> Hi Hugo,
>
> it's less difficult than you could think. For example in Jewel List:
> dataProvider, selectedIndex, selectedItem, labelField are probably the real
> needs always. But other than that will be used in some cases and not in
> others, so that probably means carry that code to a bead.
>
> For example, I left things in that case like rowHeight that I should
> remove, since now presentation models are working fine, and people always
> can change rowHeight (or other things in PM) setting the bead. I'll be
> proposing this soon to be coherent with the rest of the implementations.
>
> El vie., 11 sept. 2020 a las 18:22, Hugo Ferreira (<hferreira...@gmail.com>)
> escribió:
>
>> Hi Carlos,
>>
>> Great news :)
>>
>> Makes sense what you say.
>> The difficult part is to decide what is used all the time to be part of
>> the
>> component and what is accessory to be built as a bead.
>>
>>
>> In that case I don't think we need to add that API in front of DataGrid,
>> since the dataProvider is something managed internally. We can always add
>> a
>> bead (like the one you did) to do something similar. In Fact, it is part
>> of
>> what you did in this concrete bead, so that shows that adding that king of
>> APIs is not what we try to do. That was one of the Flex problems, that the
>> components was very bloated with code for many side cases.
>> APIs in components should have what's really important and always used and
>> then left other things that "could be used" for beads.
>> Being said that, I don't try to be PAYG in a "nonsense way", and always
>> try
>> to ponder if the APIs will be used a lot or just sporadically.
>>
>>
>>
>> Carlos Rovira <carlosrov...@apache.org> escreveu no dia sexta, 11/09/2020
>> à(s) 16:57:
>>
>> > Hi Hugo,
>> >
>> > just merged the PR :)
>> >
>> > going to try and see if what I had in mind made sense.
>> > About refreshing: In Royale PAYG is what rules all the framework and we
>> try
>> > to keep things as simple as possible.
>> > In that case I don't think we need to add that API in front of DataGrid,
>> > since the dataProvider is something managed internally. We can always
>> add a
>> > bead (like the one you did) to do something similar. In Fact, it is
>> part of
>> > what you did in this concrete bead, so that shows that adding that king
>> of
>> > APIs is not what we try to do. That was one of the Flex problems, that
>> the
>> > components was very bloated with code for many side cases.
>> > APIs in components should have what's really important and always used
>> and
>> > then left other things that "could be used" for beads.
>> > Being said that, I don't try to be PAYG in a "nonsense way", and always
>> try
>> > to ponder if the APIs will be used a lot or just sporadically.
>> >
>> > Thanks
>> >
>> > El vie., 11 sept. 2020 a las 10:54, Hugo Ferreira (<
>> hferreira...@gmail.com
>> > >)
>> > escribió:
>> >
>> > > Hi Carlos,
>> > >
>> > > In Royale and DataGrid Jewel world (and you know much better than
>> me), to
>> > > refresh the DataGrid one needs to set the dataProvider to null and
>> then
>> > > reassign the dataProvider.
>> > > I know that because I already saw before somewhere in the framework
>> so I
>> > > predict that is currently the "normal" behaviour.
>> > >
>> > > Thinking about that, I think that it should be nice that the DataGrid
>> > has a
>> > > refresh method that internally sets the dataProvider to a variable,
>> > > dataProvider to null and assign the dataProvider from the variable.
>> > > If we find a better solution we just need to change one place.
>> > >
>> > > When I need to refresh the DataGrid, I just need to call
>> > > myDataGrid.refresh() without knowing what's the current
>> implementation of
>> > > it.
>> > >
>> > >
>> > > Carlos Rovira <carlosrov...@apache.org> escreveu no dia sexta,
>> > 11/09/2020
>> > > à(s) 09:45:
>> > >
>> > > > Hi Hugo,
>> > > >
>> > > > about your PR, I was trying to ask you about these lines of code and
>> > what
>> > > > reason made you choose to code it that way.
>> > > > I can merge it as is and see if I can improve that refresh and
>> > > dataprovider
>> > > > reassign, but the objective is that you see if you can improve
>> and/or I
>> > > > understand if there's some issue in the underlying infrastructure,
>> and
>> > > help
>> > > > you to improve your knowledge.
>> > > >
>> > > >
>> > > > El jue., 10 sept. 2020 a las 17:35, Hugo Ferreira (<
>> > > hferreira...@gmail.com
>> > > > >)
>> > > > escribió:
>> > > >
>> > > > > Hi Carlos,
>> > > > >
>> > > > > I don't see your comment in PR !
>> > > > >
>> > > > > Carlos Rovira <carlosrov...@apache.org> escreveu no dia quinta,
>> > > > 10/09/2020
>> > > > > à(s) 16:24:
>> > > > >
>> > > > > > Hi Hugo,
>> > > > > >
>> > > > > > maybe you didn't notice but I commented in your PR :)
>> > > > > >
>> > > > > > https://github.com/apache/royale-asjs/pull/908
>> > > > > >
>> > > > > >
>> > > > > > El jue., 10 sept. 2020 a las 13:26, Hugo Ferreira (<
>> > > > > hferreira...@gmail.com
>> > > > > > >)
>> > > > > > escribió:
>> > > > > >
>> > > > > > > Thank you.
>> > > > > > > As I progress on my development and face other missing pices
>> > that I
>> > > > > need
>> > > > > > I
>> > > > > > > will do the same, now that I know who works a bead and how to
>> > build
>> > > > > one.
>> > > > > > >
>> > > > > > > Carlos Rovira <carlosrov...@apache.org> escreveu no dia
>> quinta,
>> > > > > > 10/09/2020
>> > > > > > > à(s) 11:47:
>> > > > > > >
>> > > > > > > > Thanks for the PR Hugo. Good one for your first! :)
>> > > > > > > > I started a review and commented on some things there.
>> > > > > > > > We also have a rule to wait 24h at least for others to
>> review
>> > and
>> > > > for
>> > > > > > any
>> > > > > > > > comment or issue we can notice
>> > > > > > > > thanks
>> > > > > > > >
>> > > > > > > > El jue., 10 sept. 2020 a las 11:18, Hugo Ferreira (<
>> > > > > > > hferreira...@gmail.com
>> > > > > > > > >)
>> > > > > > > > escribió:
>> > > > > > > >
>> > > > > > > > > Hi Carlos,
>> > > > > > > > >
>> > > > > > > > > Done.
>> > > > > > > > >
>> > > > > > > > > Carlos Rovira <carlosrov...@apache.org> escreveu no dia
>> > > quinta,
>> > > > > > > > 10/09/2020
>> > > > > > > > > à(s) 08:58:
>> > > > > > > > >
>> > > > > > > > > > Hi Hugo,
>> > > > > > > > > >
>> > > > > > > > > > could you please create a PR (Pull Request)?
>> > > > > > > > > > That way we get better with how Apache works and you get
>> > > > credits
>> > > > > > for
>> > > > > > > > your
>> > > > > > > > > > work, Royale gets better collaboration numbers and the
>> > > process
>> > > > is
>> > > > > > in
>> > > > > > > > > > general better to track if you continue contributing in
>> the
>> > > > > future
>> > > > > > > > (what
>> > > > > > > > > I
>> > > > > > > > > > expect). Also, doing good contributions, having a good
>> > > > knowledge
>> > > > > of
>> > > > > > > > > Royale
>> > > > > > > > > > and aligning with community guidelines of respect and
>> > > teamwork
>> > > > > > could
>> > > > > > > > make
>> > > > > > > > > > you eligible to be a committer in the future and add
>> this
>> > > > > directly.
>> > > > > > > > > >
>> > > > > > > > > > Thanks!
>> > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > > > El jue., 10 sept. 2020 a las 1:01, Hugo Ferreira (<
>> > > > > > > > > hferreira...@gmail.com
>> > > > > > > > > > >)
>> > > > > > > > > > escribió:
>> > > > > > > > > >
>> > > > > > > > > > > Hi Carlos,
>> > > > > > > > > > >
>> > > > > > > > > > > Here the full class source code.
>> > > > > > > > > > > Tested and working.
>> > > > > > > > > > > You can add to Royale source code tree.
>> > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> ////////////////////////////////////////////////////////////////////////////////
>> > > > > > > > > > > //
>> > > > > > > > > > > // Licensed to the Apache Software Foundation (ASF)
>> under
>> > > one
>> > > > > or
>> > > > > > > more
>> > > > > > > > > > > // contributor license agreements. See the NOTICE file
>> > > > > > distributed
>> > > > > > > > with
>> > > > > > > > > > > // this work for additional information regarding
>> > copyright
>> > > > > > > > ownership.
>> > > > > > > > > > > // The ASF licenses this file to You under the Apache
>> > > > License,
>> > > > > > > > Version
>> > > > > > > > > > 2.0
>> > > > > > > > > > > // (the "License"); you may not use this file except
>> in
>> > > > > > compliance
>> > > > > > > > with
>> > > > > > > > > > > // the License. You may obtain a copy of the License
>> at
>> > > > > > > > > > > //
>> > > > > > > > > > > // http://www.apache.org/licenses/LICENSE-2.0
>> > > > > > > > > > > //
>> > > > > > > > > > > // Unless required by applicable law or agreed to in
>> > > writing,
>> > > > > > > > software
>> > > > > > > > > > > // distributed under the License is distributed on an
>> "AS
>> > > IS"
>> > > > > > > BASIS,
>> > > > > > > > > > > // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
>> either
>> > > > express
>> > > > > > or
>> > > > > > > > > > implied.
>> > > > > > > > > > > // See the License for the specific language governing
>> > > > > > permissions
>> > > > > > > > and
>> > > > > > > > > > > // limitations under the License.
>> > > > > > > > > > > //
>> > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> ////////////////////////////////////////////////////////////////////////////////
>> > > > > > > > > > > package
>> org.apache.royale.jewel.beads.controls.datagrid
>> > > > > > > > > > > {
>> > > > > > > > > > > import org.apache.royale.core.IBead;
>> > > > > > > > > > > import org.apache.royale.jewel.DataGrid;
>> > > > > > > > > > > import org.apache.royale.core.IStrand;
>> > > > > > > > > > > import
>> org.apache.royale.jewel.beads.views.DataGridView;
>> > > > > > > > > > > import org.apache.royale.events.MouseEvent;
>> > > > > > > > > > > import
>> > > > > > > > >
>> > > > org.apache.royale.jewel.supportClasses.datagrid.DataGridButtonBar;
>> > > > > > > > > > > import org.apache.royale.collections.Sort;
>> > > > > > > > > > > import org.apache.royale.collections.SortField;
>> > > > > > > > > > > import org.apache.royale.collections.IArrayListView;
>> > > > > > > > > > > import
>> > > > > > > >
>> org.apache.royale.jewel.supportClasses.datagrid.DataGridColumn;
>> > > > > > > > > > >
>> > > > > > > > > > > public class DataGridSortBead implements IBead
>> > > > > > > > > > > {
>> > > > > > > > > > > public function DataGridSortBead()
>> > > > > > > > > > > {
>> > > > > > > > > > > super();
>> > > > > > > > > > > }
>> > > > > > > > > > > private var dg:DataGrid;
>> > > > > > > > > > >
>> > > > > > > > > > > private var descending:Boolean;
>> > > > > > > > > > > /**
>> > > > > > > > > > > * @copy org.apache.royale.core.IBead#strand
>> > > > > > > > > > > *
>> > > > > > > > > > > * @langversion 3.0
>> > > > > > > > > > > * @playerversion Flash 10.2
>> > > > > > > > > > > * @playerversion AIR 2.6
>> > > > > > > > > > > * @productversion Royale 0.0
>> > > > > > > > > > > */
>> > > > > > > > > > > public function set strand(value:IStrand):void
>> > > > > > > > > > > {
>> > > > > > > > > > > dg = value as DataGrid;
>> > > > > > > > > > > (dg.view as
>> > > > > > DataGridView).header.addEventListener(MouseEvent.CLICK,
>> > > > > > > > > > > mouseClickHandler, false);
>> > > > > > > > > > > }
>> > > > > > > > > > > /**
>> > > > > > > > > > > * @private
>> > > > > > > > > > > */
>> > > > > > > > > > > private function
>> mouseClickHandler(event:MouseEvent):void
>> > > > > > > > > > > {
>> > > > > > > > > > > var dgView:DataGridView = dg.view as DataGridView;
>> > > > > > > > > > > var buttonBar:DataGridButtonBar = (dgView.header as
>> > > > > > > > DataGridButtonBar);
>> > > > > > > > > > > // probably down on one button and up on another
>> button
>> > > > > > > > > > > // so the ButtonBar won't change selection
>> > > > > > > > > > > if (event.target == buttonBar) return;
>> > > > > > > > > > > var column:DataGridColumn = event.target.data as
>> > > > > DataGridColumn;
>> > > > > > > > > > > var collection:IArrayListView = dg.dataProvider as
>> > > > > > IArrayListView;
>> > > > > > > > > > > if (collection && collection.length)
>> > > > > > > > > > > {
>> > > > > > > > > > > if (collection.sort && collection.sort.fields[0].name
>> ==
>> > > > > > > > > > column.dataField)
>> > > > > > > > > > > descending = !descending;
>> > > > > > > > > > >
>> > > > > > > > > > > var sort:Sort = new Sort();
>> > > > > > > > > > > var sortField:SortField = new
>> SortField(column.dataField,
>> > > > > false,
>> > > > > > > > > > > descending);
>> > > > > > > > > > >
>> > > > > > > > > > > sort.fields = [ sortField ];
>> > > > > > > > > > > collection.sort = sort;
>> > > > > > > > > > >
>> > > > > > > > > > > (dgView.header as
>> > > DataGridButtonBar).model.dispatchEvent(new
>> > > > > > Event(
>> > > > > > > > > > > "dataProviderChanged"));
>> > > > > > > > > > >
>> > > > > > > > > > > // force redraw of column headers
>> > > > > > > > > > > collection.refresh();
>> > > > > > > > > > > dg.dataProvider = null;
>> > > > > > > > > > > dg.dataProvider = collection;
>> > > > > > > > > > > }
>> > > > > > > > > > > }
>> > > > > > > > > > > }
>> > > > > > > > > > > }
>> > > > > > > > > > >
>> > > > > > > > > > > Hugo Ferreira <hferreira...@gmail.com> escreveu no
>> dia
>> > > > quarta,
>> > > > > > > > > 9/09/2020
>> > > > > > > > > > > à(s) 14:19:
>> > > > > > > > > > >
>> > > > > > > > > > > > OK, thank you for the tips.
>> > > > > > > > > > > > I will try to it :)
>> > > > > > > > > > > >
>> > > > > > > > > > > > Carlos Rovira <carlosrov...@apache.org> escreveu no
>> > dia
>> > > > > > quarta,
>> > > > > > > > > > > 9/09/2020
>> > > > > > > > > > > > à(s) 14:15:
>> > > > > > > > > > > >
>> > > > > > > > > > > >> Hi Hugo,
>> > > > > > > > > > > >>
>> > > > > > > > > > > >> some helpers:
>> > > > > > > > > > > >>
>> > > > > > > > > > > >> 1.- You can create a "DataGridSortBead" class in
>> jewel
>> > > > > > library.
>> > > > > > > > > > package
>> > > > > > > > > > > >> should be:
>> > > org.apache.royale.jewel.beads.controls.datagrid
>> > > > > > > > > > > >> 2.- add to jewel-manifest.xml
>> > > > > > > > > > > >> 3.- code will be similar to the MXRoyale version.
>> > > > > > > > > > > >>     a) in the strand method override you retrieve
>> the
>> > > bead
>> > > > > > view
>> > > > > > > > > > > >> (DataGridView)
>> > > > > > > > > > > >>     b) you create a listener for MouseEvent.CLICK
>> > > > > > > > > > > >>
>> > > > > > > > > > > >> (at that time if you put a trace in that handler
>> you
>> > > > should
>> > > > > > see
>> > > > > > > > the
>> > > > > > > > > > > traces
>> > > > > > > > > > > >> as you click a button in the button bar)
>> > > > > > > > > > > >>
>> > > > > > > > > > > >>      c) Finally you implement the sorting. That
>> should
>> > > be
>> > > > > very
>> > > > > > > > > similar
>> > > > > > > > > > > to
>> > > > > > > > > > > >> MXRoyale code just taking into account that Jewel
>> uses
>> > > > > > ArrayList
>> > > > > > > > and
>> > > > > > > > > > > >> ArrayListView for sorting.
>> > > > > > > > > > > >>
>> > > > > > > > > > > >> I think these are the main puzzle's pieces if you
>> want
>> > > to
>> > > > > try
>> > > > > > > it.
>> > > > > > > > > > > >>
>> > > > > > > > > > > >>
>> > > > > > > > > > > >>
>> > > > > > > > > > > >> El mié., 9 sept. 2020 a las 14:58, Hugo Ferreira (<
>> > > > > > > > > > > hferreira...@gmail.com
>> > > > > > > > > > > >> >)
>> > > > > > > > > > > >> escribió:
>> > > > > > > > > > > >>
>> > > > > > > > > > > >> > "Now that you have a bit more experience"
>> > > > > > > > > > > >> > Comparing to Flex, not so much.
>> > > > > > > > > > > >> >
>> > > > > > > > > > > >> > "what do you think about trying to create a Jewel
>> > > > version
>> > > > > of
>> > > > > > > > > > > >> > "DataGridSortBead""
>> > > > > > > > > > > >> > I think that I'm still very new to Royale and I
>> > never
>> > > > > tried
>> > > > > > to
>> > > > > > > > > > create
>> > > > > > > > > > > a
>> > > > > > > > > > > >> > bead but I can try and check other bead to chek
>> how
>> > to
>> > > > > > > implement
>> > > > > > > > > > one.
>> > > > > > > > > > > If
>> > > > > > > > > > > >> > sucessed I will post here the source so any of
>> you
>> > > guys
>> > > > > can
>> > > > > > > add
>> > > > > > > > to
>> > > > > > > > > > > >> source
>> > > > > > > > > > > >> > tree.
>> > > > > > > > > > > >> >
>> > > > > > > > > > > >> > Carlos Rovira <carlosrov...@apache.org>
>> escreveu no
>> > > dia
>> > > > > > > quarta,
>> > > > > > > > > > > >> 9/09/2020
>> > > > > > > > > > > >> > à(s) 13:42:
>> > > > > > > > > > > >> >
>> > > > > > > > > > > >> > > Hi Hugo,
>> > > > > > > > > > > >> > >
>> > > > > > > > > > > >> > > Sorting in Jewel is still not implemented
>> sorry.
>> > > > > > > > > > > >> > > 'DataGridSortBead' is a bead from emulation
>> > library,
>> > > > so
>> > > > > it
>> > > > > > > > will
>> > > > > > > > > > not
>> > > > > > > > > > > >> work
>> > > > > > > > > > > >> > > with Jewel.
>> > > > > > > > > > > >> > >
>> > > > > > > > > > > >> > > Now that you have a bit more experience with
>> > Royale
>> > > > and
>> > > > > > > Jewel,
>> > > > > > > > > > what
>> > > > > > > > > > > do
>> > > > > > > > > > > >> > you
>> > > > > > > > > > > >> > > think about trying to create a Jewel version of
>> > > > > > > > > "DataGridSortBead"
>> > > > > > > > > > > and
>> > > > > > > > > > > >> > > submit for review as PR? I think we need folks
>> > like
>> > > > you
>> > > > > > > trying
>> > > > > > > > > to
>> > > > > > > > > > > take
>> > > > > > > > > > > >> > over
>> > > > > > > > > > > >> > > Royale and join us helping where is possible.
>> What
>> > > do
>> > > > > you
>> > > > > > > > think?
>> > > > > > > > > > > >> > >
>> > > > > > > > > > > >> > > Thanks
>> > > > > > > > > > > >> > >
>> > > > > > > > > > > >> > > El mié., 9 sept. 2020 a las 11:07, Hugo
>> Ferreira
>> > (<
>> > > > > > > > > > > >> > hferreira...@gmail.com
>> > > > > > > > > > > >> > > >)
>> > > > > > > > > > > >> > > escribió:
>> > > > > > > > > > > >> > >
>> > > > > > > > > > > >> > > > Hello,
>> > > > > > > > > > > >> > > >
>> > > > > > > > > > > >> > > > I have a Jewel DataGrid.
>> > > > > > > > > > > >> > > > I see that Jewel DataGrid uses a button in
>> > header,
>> > > > > > > obviously
>> > > > > > > > > for
>> > > > > > > > > > > >> > sorting.
>> > > > > > > > > > > >> > > > Clicking nothing happens.
>> > > > > > > > > > > >> > > > Once almost every property is added thru
>> beads,
>> > I
>> > > > > > searched
>> > > > > > > > and
>> > > > > > > > > > > found
>> > > > > > > > > > > >> > this
>> > > > > > > > > > > >> > > > bead: DataGridSortBead but after I added it
>> the
>> > > > > DataGrid
>> > > > > > > > shows
>> > > > > > > > > > > empty
>> > > > > > > > > > > >> > > > without any error in console.
>> > > > > > > > > > > >> > > >
>> > > > > > > > > > > >> > > > What I'm doing wrong here ?
>> > > > > > > > > > > >> > > >
>> > > > > > > > > > > >> > >
>> > > > > > > > > > > >> > >
>> > > > > > > > > > > >> > > --
>> > > > > > > > > > > >> > > Carlos Rovira
>> > > > > > > > > > > >> > > http://about.me/carlosrovira
>> > > > > > > > > > > >> > >
>> > > > > > > > > > > >> >
>> > > > > > > > > > > >>
>> > > > > > > > > > > >>
>> > > > > > > > > > > >> --
>> > > > > > > > > > > >> Carlos Rovira
>> > > > > > > > > > > >> http://about.me/carlosrovira
>> > > > > > > > > > > >>
>> > > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > > > --
>> > > > > > > > > > Carlos Rovira
>> > > > > > > > > > http://about.me/carlosrovira
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > > >
>> > > > > > > > --
>> > > > > > > > Carlos Rovira
>> > > > > > > > http://about.me/carlosrovira
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > > >
>> > > > > > --
>> > > > > > Carlos Rovira
>> > > > > > http://about.me/carlosrovira
>> > > > > >
>> > > > >
>> > > >
>> > > >
>> > > > --
>> > > > Carlos Rovira
>> > > > http://about.me/carlosrovira
>> > > >
>> > >
>> >
>> >
>> > --
>> > Carlos Rovira
>> > http://about.me/carlosrovira
>> >
>>
>
>
> --
> Carlos Rovira
> http://about.me/carlosrovira
>
>

-- 
Carlos Rovira
http://about.me/carlosrovira

Reply via email to