Vehicle Manager

...so it makes sense to have one object coordinate their activity...

VehicleManager
« toolbar models »
+ getYearComboModel() : ToolBarComboModel
+ getMakeComboModel() : ToolBarComboModel
+ getModelComboModel() : ToolBarComboModel
+ getEngineComboModel() : ToolBarComboModel
« dialog models »
+ getYearListModel() : LookupListModel
+ getMakeListModel() : LookupListModel
+ getModelListModel() : LookupListModel
+ getEngineListModel() : LookupListModel
« coordination »
+ getComboVehicle() : Vehicle
+ getListVehicle() : Vehicle
+ setCombosFromLists()
+ clearAllLists()
+ setLookupFromState(LookupByVehicle)
+ setStateFromLookup(LookupByVehicle)
« toolbar utilities »
+ refreshMakeCombo()
+ refreshModelCombo()
+ refreshEngineCombo()
« dialog utilities »
+ refreshMakeList()
+ refreshModelList()
+ refreshEngineList()

...and manage their models.

ToolBarComboModel
+ getData(Object[]) : Object[]
+ setData(Object[])
+ getSize() : int
+ getElementAt(int) : Object
+ clearData()
+ contains(Object) : boolean
+ getSelectedItem() : Object
+ setSelectedItem(Object)
LookupListModel
selModel : ListSelectionModel
+ getData(Object[]) : Object[]
+ setData(Object[])
+ getSize() : int
+ getElementAt(int) : Object
+ contains(Object) : boolean
+ clearSelection()
+ getSelectedValue() : Object
+ setSelectedValue(Object)
public void setCombosFromLists() {

    // disconnect combo refreshing
    disconnected = true;

    // copy list data to avoid extra trips to the server
    makeComboModel.setData(makeListModel.getData(new Make[0]));
    modelComboModel.setData(modelListModel.getData(new Model[0]));
    engineComboModel.setData(engineListModel.getData(new Engine[0]));

    // copy list selections
    yearComboModel.setSelectedItem(yearListModel.getSelectedValue());
    makeComboModel.setSelectedItem(makeListModel.getSelectedValue());
    modelComboModel.setSelectedItem(modelListModel.getSelectedValue());
    engineComboModel.setSelectedItem(engineListModel.getSelectedValue());

    disconnected = false;
}

public void refreshMakeCombo() {

    if (disconnected) return;

    Year year = (Year) yearComboModel.getSelectedItem();

    if (year != null) {
        makeComboModel.setData(VehicleServer.getMakes(year));