private void displayPageForElement(ToolListElement element) { selectedElement = element; settingsStore.setSelection(getAutotoolsCfg(), selectedElement); AbstractConfigurePropertyOptionsPage oldPage = currentSettingsPage; currentSettingsPage = null; // Create a new settings page if necessary List<AbstractConfigurePropertyOptionsPage> pages = getPagesForConfig(); ListIterator<AbstractConfigurePropertyOptionsPage> iter = pages.listIterator(); while (iter.hasNext()) { AbstractConfigurePropertyOptionsPage page = iter.next(); if (page.getName().equals(element.getName())) { currentSettingsPage = page; break; } } if (currentSettingsPage == null) { if (element.getType() == IConfigureOption.TOOL) { currentSettingsPage = new AutotoolsToolPropertyOptionPage(element, getAutotoolsCfg()); } else { currentSettingsPage = new AutotoolsCategoryPropertyOptionPage(element, getAutotoolsCfg()); } pages.add(currentSettingsPage); currentSettingsPage.setContainer(this); if (currentSettingsPage.getControl() == null) { currentSettingsPage.createControl(settingsPageContainer); } } // Make all the other pages invisible Control[] children = settingsPageContainer.getChildren(); Control currentControl = currentSettingsPage.getControl(); for (int i = 0; i < children.length; i++) { if (children[i] != currentControl) children[i].setVisible(false); } currentSettingsPage.setVisible(true); currentSettingsPage.updateFields(); if (oldPage != null && oldPage != currentSettingsPage) oldPage.setVisible(false); // Set the size of the scrolled area containerSC.setMinSize(currentSettingsPage.computeSize()); settingsPageContainer.layout(); }