public void doShiftClick(final Well justSelected) {
        //if no wells are currently selected, just select all up to the selected one
        if (selectedWells.isEmpty()) {
            justSelected.getParentPlate().dispatcher.notifyAll(
                new IWellCmd(){
                    public void apply(Well context, WellDispatcher disp){
                        if (context.getWellNumber() <= justSelected.getWellNumber()) {
                            selectedWells.add(context);
                            context.isSelected = true;
                        }
                    }
                }
            );
        }
        else {
            /**
             * If we have selected wells already, de-select them all and select those between just-selected one and
             * last one selected previously.
             */

            //de-select all and save last one
            final Well lastWell = deselectAllWells();

            //select all in between them
            justSelected.getParentPlate().dispatcher.notifyAll(
                new IWellCmd(){
                    public void apply(Well context, WellDispatcher disp){
                        if (justSelected.getWellNumber() < lastWell.getWellNumber()){ //just-selected well is smaller
                            //add well in if its number is after just-selected and before last selected
                            if (justSelected.getWellNumber() <= context.getWellNumber()  && context.getWellNumber() <= lastWell.getWellNumber()){
                                context.isSelected = true;
                                selectedWells.add(context);
                            }
                        }
                        else { //last previously selected well is smaller
                            //check opposite
                            if (lastWell.getWellNumber() <= context.getWellNumber()  && context.getWellNumber() <= justSelected.getWellNumber()){
                                context.isSelected = true;
                                selectedWells.add(context);
                            }
                        }
                    }
                }
            );
        }
    }