[Engine-devel] GUI widget for adding/removing entries

Malini Rao mrao at redhat.com
Fri Oct 25 20:01:13 UTC 2013





----- Original Message -----
> From: "Lior Vernia" <lvernia at redhat.com>
> To: "Einav Cohen" <ecohen at redhat.com>
> Cc: "engine-devel" <engine-devel at ovirt.org>
> Sent: Sunday, October 13, 2013 10:03:30 AM
> Subject: Re: [Engine-devel] GUI widget for adding/removing entries
> 
> 
> 
> On 10/10/13 16:01, Einav Cohen wrote:
> > see attached: AFAIK, there are three types of adding-and-removing widget in
> > the application:
> > 
> > (1) the one that exists in the customs properties section as well as the
> > cluster policy.
> > in this widget:
> > - the "+" and "-" buttons appear on every row.
> > - row is "identified" by a selected item from a drop down.
> > - input controls in row: drop-down and text box (that appears upon
> > selection of a non-empty value in the drop-down)
> > 
> > (2) the one that exists in the vNICs assignment part of the General section
> > in the New VM dialog.
> > in this widget:
> > - the "+" appears only in the last row, "-" appears in all lines but the
> > last row.
> > - row is "identified" by (what seems to be a) read-only label (I assume
> > that this widget is
> > built to be initially loaded to already contain a number of rows, as
> > opposed to (1), which
> > typically starts with no rows / initial "empty" row.
> > - input controls in row: drop-down
> > 
> > (3) the one that exists in the vNIC profiles section in the Add/Edit
> > Network dialog
> > in this widget:
> > - the "+" and "-" buttons appear on every row.
> > - row is "identified" by a free-text string.
> > - input controls in row: text-box, check-box and drop-down.
> > 
> > so there are differences between the widgets other than the "+" and "-"
> > buttons.
> > however, from ux perspective, it is important to keep the look-and-feel of
> > all of them consistent.
> > 
> > technically (code-wise), I am not sure how easy it is to merge the three,
> > due to the differences.
> > we can maybe think of creating a general adding-and-removing-entries
> > widget, which can support
> > "ordered" and "non-ordered" flavors (which will affect the "+"/"-" buttons
> > appearance / exact
> > behavior), and it will contain a collection of "abstract" row-widgets (and
> > we will have several
> > implementations of row-widgets for each needed functionality [(1), (2),
> > (3)] with exact appearance /
> > input controls / behavior/etc.), which may need to support a certain api
> > (e.g. isRowEmpty(), get/set
> > Identifier(), etc.) in order to communicate appropriately with its "parent"
> > adding-and-removing-entries
> > widget.
> > 
> > thoughts?
> > 
> 
> What you described is pretty much how the abstract AddRemoveRowWidget
> works, so it should be fairly easy to merge the three (it was designed
> to be so). The widget doesn't care about the exact nature of the content
> widget to the left of the plus/minus button, that information is given
> when overriding the aforementioned abstract methods. The only difference
> is that there's only one flavor at the moment, which is orderless, since
> none of these current examples is mindful of ordering.

If all the attached examples are orderless, why do 3 of them have the + button on every row?
I think it will be a good idea to lock down the behavior for ordered and order-less rows as Einav mentioned for consistency. I understand that the row content can be different based on the use case but we need to have some basic commonalities - For e.g, in the VNic Profile example, we should have a label for the first text field as it is not really clear what that starting empty text field is for - I can deduce it is for the Profile name but can't be sure. 


> 
> > ----- Original Message -----
> >> From: "Lior Vernia" <lvernia at redhat.com>
> >> To: "Itamar Heim" <iheim at redhat.com>
> >> Cc: "engine-devel" <engine-devel at ovirt.org>
> >> Sent: Thursday, October 10, 2013 4:44:47 AM
> >> Subject: Re: [Engine-devel] GUI widget for adding/removing entries
> >>
> >> To my knowledge, such a widget existed only in two other places: custom
> >> properties and vNIC profiles in add/edit network dialog. In both of them
> >> the order wasn't important, in which case the new widget is probably
> >> preferable. If it is indeed preferable (Einav? Malini?), I could do some
> >> refactoring to have both of them use it.
> >>
> >> On 10/10/13 09:02, Itamar Heim wrote:
> >>> On 10/10/2013 10:59 AM, Lior Vernia wrote:
> >>>>
> >>>>
> >>>> On 09/10/13 23:34, Itamar Heim wrote:
> >>>>> On 10/09/2013 03:32 PM, Lior Vernia wrote:
> >>>>>> Of course, my bad. Attached is a screenshot of the add/edit VM dialog,
> >>>>>> note the vNIC part on the bottom half of the dialog.
> >>>>>
> >>>>> how is it different from the custom properties one?
> >>>>>
> >>>>
> >>>> Design-wise, there are a couple of small differences. There's only one
> >>>> button next to each row, plus if it's the last row or minus otherwise
> >>>> (so items can only be added at the end, as I replied to Malini order
> >>>> hasn't been important so far). A row appears as disabled until it is
> >>>> edited, and a disabled row is ignored when the view is flushed back to
> >>>> the model (e.g. when the user presses OK in the dialog).
> >>>>
> >>>> Code-wise, it's constructed to be reusable, which the custom properties
> >>>> widget wasn't :)
> >>>
> >>> could we converge on one of them though?
> >>>
> >>>>
> >>>>>>
> >>>>>> On 09/10/13 13:24, Einav Cohen wrote:
> >>>>>>> Hi Lior - can you please provide a screen-shot, so we will know which
> >>>>>>> widget
> >>>>>>> you are referring to?
> >>>>>>> will make it easier for people to decide if and where to use this
> >>>>>>> widget.
> >>>>>>>
> >>>>>>> Many thanks!
> >>>>>>>
> >>>>>>> ----
> >>>>>>> Regards,
> >>>>>>> Einav
> >>>>>>>
> >>>>>>> ----- Original Message -----
> >>>>>>>> From: "Lior Vernia" <lvernia at redhat.com>
> >>>>>>>> To: "engine-devel" <engine-devel at ovirt.org>
> >>>>>>>> Sent: Wednesday, October 9, 2013 4:34:29 AM
> >>>>>>>> Subject: [Engine-devel] GUI widget for adding/removing entries
> >>>>>>>>
> >>>>>>>> Hello,
> >>>>>>>>
> >>>>>>>> Lately a patch has been merged that introduces a widget for
> >>>>>>>> adding/removing entries (e.g. network interfaces when
> >>>>>>>> creating/editing a
> >>>>>>>> VM):
> >>>>>>>>
> >>>>>>>> http://gerrit.ovirt.org/#/c/19530/
> >>>>>>>>
> >>>>>>>> This kind of widgets is becoming common in oVirt, so the idea is to
> >>>>>>>> make
> >>>>>>>> adding one easy rather than copying & pasting code.
> >>>>>>>> AddRemoveRowWidget
> >>>>>>>> takes care of the plus/minus button logic, disabling an entry that
> >>>>>>>> hasn't been edited, and the arranging in rows.
> >>>>>>>>
> >>>>>>>> In order to use it, one is required to override a couple of abstract
> >>>>>>>> methods that are dependent upon the specific entry implementation.
> >>>>>>>> An
> >>>>>>>> example may be found in ProfilesInstanceTypeEditor, which handles
> >>>>>>>> adding/removing network interfaces in the new/edit VM dialog.
> >>>>>>>>
> >>>>>>>> Yours, Lior.
> >>>>>>>> _______________________________________________
> >>>>>>>> Engine-devel mailing list
> >>>>>>>> Engine-devel at ovirt.org
> >>>>>>>> http://lists.ovirt.org/mailman/listinfo/engine-devel
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> _______________________________________________
> >>>>>>>> Engine-devel mailing list
> >>>>>>>> Engine-devel at ovirt.org
> >>>>>>>> http://lists.ovirt.org/mailman/listinfo/engine-devel
> >>>>>
> >>>
> >> _______________________________________________
> >> Engine-devel mailing list
> >> Engine-devel at ovirt.org
> >> http://lists.ovirt.org/mailman/listinfo/engine-devel
> >>
> >>
> _______________________________________________
> Engine-devel mailing list
> Engine-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/engine-devel
> 



More information about the Engine-devel mailing list