views:

527

answers:

6

I am looking for a general UI design / work-flow for changing the same property across multiple objects.

Suppose I have an object class called Person. The Person class has a property called City. I want to select 5 Person objects and change the City property on all 5 to "New York" in one action in the UI.

This is not difficult to accomplish programatically, but I am having a difficult time coming up with an intuitive UI work-flow. One thought is to use a modal like the one used in iTunes to change information about multiple selected songs. I would like to come up with another work-flow, as this idea has already gotten push-back at work.

Thoughts? Ideas?

Edit: I appreciate the answers so far. There are couple of extra points I would like to call out:

  1. Should the previous City values be display in some way? If so, how? Or how should the combined property screen show that all the City values are currently the same or different with a color or other indicator?
  2. How should boolean properties (Person.IsAlive for example) be displayed? Do you use a three-state toggle/check box? Us a drop-down with three values? Other ideas?
A: 

One approach would be a split pane setup where all People were on one side, and all properties of people were on the other side.

Obviously this would work poorly for editing single people though.

FlySwat
A: 

Well, you do need to hand-pick all of object, so multiple selection seems natural. After that you can implement a context menu item (it you already have a context menu, make this a sub-menu called Edit) and offer all existing properties as sub-menu items. Something like this:

  • Edit
    • Name
    • City
    • etc.

When menu item is selected, prompt the user for new value, and update all records afterwards.

Milan Babuškov
+1  A: 

Take the iTunes solution, ditch the modal window and display it in your application as you would otherwise display a single entry's edit view. Keep in mind that iTunes has a modal window for editing single entries as well.

eyelidlessness
+1  A: 

I'd probably do this with a fairly standard listview - allow multiple selection - and when you change a field in any selected record (e.g. drop down) with more than one item selected it updates all of the items to the same value.

There may be times that you want to disable this action - so have an link item to the right to indicate that all items will be updated together.

Richard Harrison
A: 

If you have a limited number of such fields you could use a paradigm similar to the "copy and paste format" in Word or Excel. Select a prototype record, right click, select "Copy city..." from the menu, and then paste in the rest.

But I like your original idea better...

Jeff Kotula
A: 

I've accomplished something similar through an Edit Wizard. I select 1-10000 different rows and then right click to show the Edit Wizard screen. A first panel is displayed with the ability to set up to about 8 different fields. Each field that I allow to change will be applied across all the rows. I have checkboxes next to each field to choose which fields to change. Then when checked show a textbox to capture the new value alongside. If the rows all have the same value then they are shown in grey, eg if all for same Town show Town in Grey, if one of rows does not have same town as first then highlight the town field in orange and display an orange message 'Warning - There are rows different to the first selected row'. I do a confirm page to check the users want to proceed and then a finalise button. Then redisplay the rows once complete.

Rows to update : 3

    ..........Old Value... Change?....New Value

    Field A   ABC
    Field B   123          Y          845
    Field C   BOB 

                       [<Back] [Next>] [Finish]

<== Highlight BOB in Orange if one of rows does not have BOB in Field C.

hope that helps

Peter