public AutoHideExpandPanel() {
		super(new BorderLayout());

		if(! DockingPreferences.isLightWeightUsageEnabled()) {
			this.heavyPanel = new Panel(new BorderLayout());
		}

		if(AutoHidePolicy.getPolicy().getExpandMode() == AutoHidePolicy.ExpandMode.EXPAND_ON_ROLLOVER) {
			expansionTimer = new Timer(AutoHidePolicy.getPolicy().getRolloverTriggerDelay(), controler);
			expansionTimer.setRepeats(false);
			isRolloverTimer = true;
		}

		initBorders();

		setFocusCycleRoot(true); // keep keyboard focus

		//requiered to trap mouse events under the panel (so they don't go to the mousegrabber)
		addMouseListener(new MouseAdapter() {});

		if(DockingPreferences.isLightWeightUsageEnabled()) {
			// for Swing only : direct usage of the content jpanel
			add(content, BorderLayout.CENTER);
		} else {
			if(! DockingPreferences.isSingleHeavyWeightComponent()) {
				// when mixing heavyweight and lightweight component, we have
				// to ensure our content will not be covered by an underlying heavy component.
				// to do this, we add an intermediary heavyweight panel.
				// note : if there is only one heavyweight dockable,
				//        we delay and delegate this operation to installHeavyWeightIfNeeded
				heavyPanel.add(content, BorderLayout.CENTER);

				// jdk1.5 only, but we compile with 1.4 source level
				try {
					// this.setComponentZOrder(heavyPanel, 0); // top most
					Method m = Container.class.getMethod("setComponentZOrder", new Class[] {Component.class, int.class});
					m.invoke(this, new Object[] {heavyPanel, new Integer(0)});
				} catch(Exception ignore) {
				}

				add(heavyPanel, BorderLayout.CENTER);
			} else {
				// (heavy + single) will be dynamically changed depending on the expanded dockable
				add(content, BorderLayout.CENTER);
				add(topDragger, BorderLayout.NORTH);
				add(bottomDragger, BorderLayout.SOUTH);
				add(leftDragger, BorderLayout.WEST);
				add(rightDragger, BorderLayout.EAST);
			}
		}

		addAncestorListener(new AncestorListener() { //2006/12/19 : reworked to avoid GC leak

			public void ancestorAdded(AncestorEvent event) {
				AutoHidePolicy.getPolicy().addPropertyChangeListener(controler);
				if(DockingPreferences.isLightWeightUsageEnabled()) {
					KeyboardFocusManager.getCurrentKeyboardFocusManager().addPropertyChangeListener("focusOwner", collapser);
				}
			}

			public void ancestorMoved(AncestorEvent event) {}

			public void ancestorRemoved(AncestorEvent event) {
				AutoHidePolicy.getPolicy().removePropertyChangeListener(controler);
				if(DockingPreferences.isLightWeightUsageEnabled()) {
					KeyboardFocusManager.getCurrentKeyboardFocusManager().removePropertyChangeListener("focusOwner", collapser);
				}
			}
		});

		content.add(titleBar, BorderLayout.NORTH);
		//    initDockingFunctions();
	}