package org.nlamah.QL.View.Controllers; import java.awt.Dimension; import org.nlamah.QBase.Constants.UIConstants; import org.nlamah.QL.Model.Form.ConditionalBlock; import org.nlamah.QL.View.Form.ElseIfThenBlockView; public class ConditionalBlockAllViewController extends ConditionalBlockViewController { public ConditionalBlockAllViewController(ConditionalBlock conditionalBlock) { super(conditionalBlock); } @Override public int evaluateViewHeight() { makeAllViewsInvisible(); if (ifThenBlockViewController.viewShouldBeVisible()) { ifThenBlockViewController.view().setVisible(true); int neededHeight = ifThenBlockViewController.evaluateViewHeight(); adjustViewHeightToNeededHeight(neededHeight); return neededHeight; } else { for (ElseIfThenBlockViewController elseIfThenBlockViewController : elseIfThenBlockViewControllers) { if (elseIfThenBlockViewController.shouldBeVisisble()) { int index = elseIfThenBlockViewControllers.indexOf(elseIfThenBlockViewController); ElseIfThenBlockView elseIfThenBlockView = elseIfThenBlockViews().get(index); elseIfThenBlockView.setVisible(true); int neededHeight = elseIfThenBlockViewController.evaluateViewHeight(); adjustViewHeightToNeededHeight(neededHeight); return neededHeight; } } elseThenBlockView().setVisible(true); int neededHeight = elseThenBlockViewController.evaluateViewHeight(); adjustViewHeightToNeededHeight(neededHeight); return neededHeight; } } private void makeAllViewsInvisible() { ifThenBlockView().setVisible(false); for (ElseIfThenBlockView elseIfThenBlockView : elseIfThenBlockViews()) { elseIfThenBlockView.setVisible(false); } elseThenBlockView().setVisible(false); } private void adjustViewHeightToNeededHeight(int neededHeight) { view.setPreferredSize(new Dimension(UIConstants.contentWidth(), neededHeight)); } }