private void availablePackagesListSelectionChanged() {
		int sel[] = getAvailablePackagesList().getSelectedIndices();

		boolean useShortName = false;

		availableRobots.clear();
		if (sel.length == 1) {
			useShortName = true;
			getAvailablePackagesList().scrollRectToVisible(getAvailablePackagesList().getCellBounds(sel[0], sel[0]));
		}

		for (int element : sel) {
			String selectedPackage = availablePackages.get(element);

			if (selectedPackage.equals("(All)")) {
				useShortName = false;
				availableRobots.clear();
				for (IRobotSpecItem robotItem : robotList) {
					getRobotNameCellRenderer().setUseShortName(useShortName);
					availableRobots.add(new ItemWrapper(robotItem));
				}
				break;
			}
			// Single package.
			for (IRobotSpecItem robotItem : robotList) {
				getRobotNameCellRenderer().setUseShortName(useShortName);

				if ((robotItem.getFullPackage() == null && selectedPackage.equals("(No package)"))
						|| selectedPackage.equals(robotItem.getFullPackage())) {
					availableRobots.add(new ItemWrapper(robotItem));
				}
			}
		}
		((AvailableRobotsModel) getAvailableRobotsList().getModel()).changed();
		if (availableRobots.size() > 0) {
			availableRobotsList.setSelectedIndex(0);
			availableRobotsListSelectionChanged();
		}
	}