When I was working on similar system, we decided to use drag'n'drop, but with some extra options. Initially, there was one column with wares and drag area (we called it "buffer"), that changed into column with entities after user dragged wares into it from the first column.
download bmml source – Wireframes created with Balsamiq Mockups
There were such solutions embedded:
- Item can be selected (and added to current selection) with simple click on all row area of it, not only text — it made simple to aim with cursor
- User could select the upper group of items and drag it into buffer — and all wares got into it (as plain list)
- User could select multiple wares and groups and drag them into buffer — so all wares selected and contained inside selected groups again added into the buffer.
- The initial grouping of wares inside Store was made to simplify multiple additions — initially client supposed it to be a plain list, but there is rarely no way to embed any grouppings and spread entities among them. We decided to group wares at first by supplies from plant (producer of wares) and at second by type. It allowed to move similar products faster and track, which products are more expired and which are less. So try to embed your
own grouping, because it is really difficult to click through every item.
- Also clicking (without any Ctrls/Shifts) on item automatically added it to current selection. It saved us from situation when just one mistaken click can reset all the selection. To reset selection it was necessary to use special button (not shown in the left column). Because the operator of the system was using it constantly in his all-day job, it was normal to correct standard selection behaviour.
- The operator also got feedback — which items (and whole groups) are already in buffer by making them less contrast in design. So we avoided different confusion of operator.
P.S. Actually "buffer" was changing size in width, because there was another column on the right for other scenarios and unnecessary in making shipment, so in your case the right column can be unchangable by form.