private ContainerLocation[] createLocations(Graphics g, steps.array.bucket.Container[] containers) {
		ContainerLocation[] locs = new ContainerLocation[containers.length];
		
		ArrayList<ArrayList<steps.array.bucket.Container>> table = 
			new ArrayList<ArrayList<steps.array.bucket.Container>>();
		table.add(new ArrayList<steps.array.bucket.Container>());
		int totalWidth = CONTAINER_SPACING;
		for (int i=0; i<containers.length; i++) {
			totalWidth += getContainerDimensions(g, containers[i]).width + CONTAINER_SPACING;
			if (totalWidth > _panel.getWidth()) {
				totalWidth = getContainerDimensions(g, containers[i]).width + 2*CONTAINER_SPACING;
				table.add(new ArrayList<steps.array.bucket.Container>());
			}
			table.get(table.size()-1).add(containers[i]);
		}
		
		int locsIndex = 0;
		int height = 0;
		int y = (_panel.getHeight()/2 - 
				(table.size() * (getContainerDimensions(g, table.get(0).get(0)).height + CONTAINER_HEIGHT_SPACING)))/2;
		for (int i=0; i<table.size(); i++) {
			int rowWidth = CONTAINER_SPACING;
			for (int j=0; j<table.get(i).size(); j++) {
				Dimension dim = getContainerDimensions(g, table.get(i).get(j));
				rowWidth += dim.width + CONTAINER_SPACING;
				if (dim.height > 0)	height = dim.height;
			}
			int x = (_panel.getWidth() - rowWidth)/2;
			for (int j=0; j<table.get(i).size(); j++) {
				if (table.get(i).get(j).theValues.length > 0) {
					locs[locsIndex] = new ContainerLocation(x, y);
					x += getContainerDimensions(g, table.get(i).get(j)).width + CONTAINER_SPACING;
					
				}
				locsIndex++;
			}
			y += (height + CONTAINER_HEIGHT_SPACING);
		}
		return locs;
	}