protected void cellResized(Object cell)
	{
		mxGraph graph = getGraph();
		mxGraphView view = graph.getView();
		mxIGraphModel model = graph.getModel();

		mxCellState state = view.getState(cell);
		mxCellState pstate = view.getState(model.getParent(cell));

		if (state != null && pstate != null)
		{
			Object[] cells = getCellsToShift(state);
			mxGeometry geo = model.getGeometry(cell);

			if (cells != null && geo != null)
			{
				mxPoint tr = view.getTranslate();
				double scale = view.getScale();

				double x0 = state.getX() - pstate.getOrigin().getX()
						- tr.getX() * scale;
				double y0 = state.getY() - pstate.getOrigin().getY()
						- tr.getY() * scale;
				double right = state.getX() + state.getWidth();
				double bottom = state.getY() + state.getHeight();

				double dx = state.getWidth() - geo.getWidth() * scale + x0
						- geo.getX() * scale;
				double dy = state.getHeight() - geo.getHeight() * scale + y0
						- geo.getY() * scale;

				double fx = 1 - geo.getWidth() * scale / state.getWidth();
				double fy = 1 - geo.getHeight() * scale / state.getHeight();

				model.beginUpdate();
				try
				{
					for (int i = 0; i < cells.length; i++)
					{
						if (cells[i] != cell && isCellShiftable(cells[i]))
						{
							shiftCell(cells[i], dx, dy, x0, y0, right, bottom,
									fx, fy, isExtendParents()
											&& graph.isExtendParent(cells[i]));
						}
					}
				}
				finally
				{
					model.endUpdate();
				}
			}
		}
	}