void SettingsWindow::recalculateArea(void) { ODL_ENTER(); //#### int heightSoFar = _topText.getY() + _topText.getHeight() + FormField::kButtonGap; int widthSoFar = _topText.getX() + _topText.getWidth(); size_t numExtra = _extraFields.size(); if (_canSetEndpoint) { widthSoFar = jmax(widthSoFar, _endpointField->getMinimumWidth()); heightSoFar = (_endpointField->getY() + _endpointField->getHeight() + (FormField::kButtonGap / 2)); } if (_canSetPort) { widthSoFar = jmax(widthSoFar, _portField->getMinimumWidth()); heightSoFar = _portField->getY() + _portField->getHeight() + (FormField::kButtonGap / 2); } if (_canSetTag) { widthSoFar = jmax(widthSoFar, _tagField->getMinimumWidth()); heightSoFar = _tagField->getY() + _tagField->getHeight() + (FormField::kButtonGap / 2); } if (_canUseModifier && _tagModifierGroup) { //int innerHeight = static_cast<int>(_regularFont.getHeight()) + // (FormField::kButtonGap / 2); //int innerWidth = (2 * jmax(FormField::kFieldInset, FormField::kLabelInset)); _tagModifierGroup->setTopLeftPosition(FormField::kFieldInset, heightSoFar); heightSoFar = _tagModifierGroup->getY() + _tagModifierGroup->getHeight(); widthSoFar = jmax(widthSoFar, _tagModifierGroup->getX() + _tagModifierGroup->getWidth()); } for (size_t ii = 0, numDescriptors = _descriptors.size(), jj = 0; numDescriptors > ii; ++ii) { Utilities::BaseArgumentDescriptor * aDescriptor = _descriptors[ii]; if (aDescriptor) { String argName(aDescriptor->argumentName().c_str()); String argDescription(aDescriptor->argumentDescription().c_str()); if (! aDescriptor->isExtra()) { FormField * aField = _standardFields[static_cast<int>(jj)]; if (aField) { widthSoFar = jmax(widthSoFar, aField->getMinimumWidth()); heightSoFar = (aField->getY() + aField->getHeight() + (FormField::kButtonGap / 2)); ++jj; } } } } if (_extraArgumentsGroup) { int innerHeight = static_cast<int>(_regularFont.getHeight()) + (FormField::kButtonGap / 2); int innerWidth = (2 * jmax(FormField::kFieldInset, FormField::kLabelInset)); _extraArgumentsGroup->setTopLeftPosition(FormField::kFieldInset, heightSoFar); for (size_t ii = 0; numExtra > ii; ++ii) { FormField * aField = _extraFields[static_cast<int>(ii)]; aField->setY(innerHeight); innerHeight = aField->getY() + aField->getHeight() + (FormField::kButtonGap / 2); } if (0 < numExtra) { innerHeight += (3 * FormField::kButtonGap / 4); } else { innerHeight += (FormField::kButtonGap / 2); } _extraArgumentsGroup->setSize(innerWidth, innerHeight); heightSoFar = _extraArgumentsGroup->getY() + _extraArgumentsGroup->getHeight(); widthSoFar = jmax(widthSoFar, _extraArgumentsGroup->getX() + _extraArgumentsGroup->getWidth()); } BorderSize<int> cb = getContentComponentBorder(); int minW = jmax(widthSoFar, _cancelButton.getWidth() + _okButton.getWidth() + (3 * FormField::kButtonGap)); setContentComponentSize(minW + kExtraSpaceInWindow + cb.getLeftAndRight(), heightSoFar + kExtraSpaceInWindow + cb.getTopAndBottom()); ODL_EXIT(); //#### } // SettingsWindow::recalculateArea