OK, here's the story. Your code works if I change it like this (take listWithEntity for example):
public static void listWithEntityName(String entityName,
EOFetchSpecification fs) {
EOControllerFactory f = EOControllerFactory.sharedControllerFactory();
EOController controller = f.controllerWithSpecification(
new NSDictionary(new Object[] { entityName,
EOControllerFactory.ListTask,
EOControllerFactory.TopLevelWindowQuestion },
new Object[] { EOControllerFactory.EntitySpecification,
EOControllerFactory.TaskSpecification,
EOControllerFactory.QuestionSpecification }),
true);
if (controller != null) {
EOListController listController = (EOListController) f
.controllerWithEntityName(controller,
EOControllerFactory.List.class, entityName);
listController.listObjectsWithFetchSpecification(fs);
listController.setEditability(EOEditable.NeverEditable);
listController.showInSupercontroller();
listController.component().getParent().getParent().setSize(700, 700);
listController.makeVisible();
}
}
The first line seems reasonable enough, but the following line is clearly a hack. When I look at the object tree I see listController has a _component of type EOView, which has a parent of type EOView, which has a parent of type EOTabSwitchController, which has no parent. All of them have heights and widths set to negative values (?!) The hack above confirms that's the problem, but my knowledge of D2JC is limited entirely to what David's posted and I wouldn't know where else to look.
Does anyone what part of WO is responsible for managing EOComponentControllers and setting their sizes/layouts/etc?