private TabbedDockableContainer xmlBuildTabbedDockableContainer(
			Element elt, DockableState.Location dockableLocation)
			throws SAXException {

		TabbedDockableContainer tdc = DockableContainerFactory.getFactory()
				.createTabbedDockableContainer();
		tdc.installDocking(this);
		((JTabbedPane) tdc).addChangeListener(focusHandler); // our best way to
																// track
																// selection
																// (focus)
																// changes
		Dockable base = null;
		for (int i = 0; i < elt.getChildNodes().getLength(); i++) {
			Node child = elt.getChildNodes().item(i);
			if (child.getNodeType() == Node.ELEMENT_NODE) {
				Dockable d = xmlGetDockable((Element) child);
				if (base == null) {
					base = d;
				}
				context.setDockableState(d, new DockableState(this, d,
						dockableLocation));
				d.getDockKey().setLocation(dockableLocation);
				tdc.addDockable(d, tdc.getTabCount());

				// update the tab group
				if (base != d) {
					addToTabbedGroup(base, d);
				}

				if (d instanceof CompoundDockable) {
					// check for children and build them is needed
					xmlBuildCompoundDockable((CompoundDockable) d,
							(Element) child, dockableLocation);
				}
			}
		}
		return tdc;
	}