HorizontalPanel uses HTML table to align its children. In your case you probably end up having two HTML table cells (<td>) each with 50% width. The first cell contains your first FocusPanel with 90% width of the 50% cell width.
So what you really want is that the first cell of the used HTML table has a width of 90% and the widget inside that cell should take up the whole space. To do so you have to call
horizontalPanel.setCellWidth(firstFocusPanel, "90%");
and remove the width from your first FocusPanel.
-- J.