/* * #%L * gitools-ui-app * %% * Copyright (C) 2013 Universitat Pompeu Fabra - Biomedical Genomics group * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ package org.gitools.ui.app.heatmap.panel; import java.awt.*; class HeatmapLayout implements LayoutManager { @Override public void addLayoutComponent(String name, Component comp) { throw new UnsupportedOperationException("Not supported yet."); } @Override public void removeLayoutComponent(Component comp) { throw new UnsupportedOperationException("Not supported yet."); } @Override public Dimension preferredLayoutSize(Container parent) { Dimension colPsz = parent.getComponent(0).getPreferredSize(); Dimension rowPsz = parent.getComponent(1).getPreferredSize(); Dimension bdyPsz = parent.getComponent(2).getPreferredSize(); Dimension clsPsz = parent.getComponent(3).getPreferredSize(); Dimension rwsPsz = parent.getComponent(4).getPreferredSize(); return new Dimension(colPsz.width + rowPsz.width + rwsPsz.width, colPsz.height + rowPsz.height + clsPsz.height); } @Override public Dimension minimumLayoutSize(Container parent) { return new Dimension(0, 0); } @Override public void layoutContainer(Container parent) { Insets insets = parent.getInsets(); Dimension size = parent.getSize(); Component colHeaderC = parent.getComponent(0); Component rowHeaderC = parent.getComponent(1); Component bodyC = parent.getComponent(2); Component colScrollC = parent.getComponent(3); Component rowScrollC = parent.getComponent(4); Component headerIntersectC = parent.getComponent(5); Dimension colHeaderSize = colHeaderC.getPreferredSize(); Dimension rowHeaderSize = rowHeaderC.getPreferredSize(); Dimension bodySize = bodyC.getPreferredSize(); Dimension colScrollSize = colScrollC.getPreferredSize(); Dimension rowsScrollSize = rowScrollC.getPreferredSize(); Dimension headerIntersectSize = headerIntersectC.getPreferredSize(); int XLeft = insets.left; int XBody = XLeft + rowsScrollSize.width; int XRightEnd = size.width - insets.right; int XRowHeader = XRightEnd - rowHeaderSize.width; if (XRowHeader < XBody) { XRowHeader = XBody; } int widthRowScroll = XBody - XLeft; int widthBody = XRowHeader - XBody; int widthRowHeader = XRightEnd - XRowHeader; if (widthBody > colHeaderSize.width) { widthBody = colHeaderSize.width > 0 ? colHeaderSize.width : bodySize.width; if (XBody + widthBody > XRowHeader) { widthBody -= XBody + widthBody - XRowHeader; } else { XRowHeader = XBody + widthBody; } widthRowHeader = XRightEnd - XRowHeader; } int YTop = insets.top; int YBody = YTop + colHeaderSize.height; int YBottom = size.height - insets.bottom; int YColScroll = YBottom - colScrollSize.height; if (YColScroll < YBody) { YColScroll = YBody; } int heightColHeader = YBody - YTop; int heightBody = YColScroll - YBody; int heightColScroll = YBottom - YColScroll; colHeaderC.setBounds(XBody, YTop, widthBody, heightColHeader); rowHeaderC.setBounds(XRowHeader, YBody, widthRowHeader, heightBody); bodyC.setBounds(XBody, YBody, widthBody, heightBody); colScrollC.setBounds(XBody, YColScroll, widthBody, heightColScroll); rowScrollC.setBounds(XLeft, YBody, widthRowScroll, heightBody); headerIntersectC.setBounds(XRowHeader, YTop, widthRowHeader, heightColHeader); } }