/* * Copyright (C) 2011 Peransin Nicolas. * Use is subject to license terms. */ package org.mypsycho.swing.layout; import java.awt.Container; import java.awt.Dimension; /** * Like ZoomLayout but Zooms on X and Y axis are the same. * When space is left on an axis, display is centered. * * @author PERANSIN Nicolas */ public class IsoZoomLayout extends ZoomLayout { /** * Generated serialized version */ private static final long serialVersionUID = -945384077404196185L; public IsoZoomLayout() { super(); } public IsoZoomLayout(int w, int h) { super(w, h); } public void layoutContainer(Container parent) { container = parent; synchronized (parent.getTreeLock()) { Dimension dRef = preferredLayoutSize(parent); Dimension dNow = parent.getSize(); float zX = (dRef.width <= 0) ? 1.0f : (float)dNow.width / dRef.width; float zY = (dRef.height <= 0) ? 1.0f : (float)dNow.height / dRef.height; float zoom = 1.f; int offsetX = 0; int offsetY = 0; if (zX < zY) { // Space left on Y-axis zoom = zX; offsetY = (int) ((dNow.height-zoom*dRef.height)/2.f); } else { // Space left on X-axis zoom = zY; offsetX = (int) ((dNow.width-zoom*dRef.width)/2.f); } zoomComponents(parent, offsetX, offsetY, zoom, zoom, zoom); } } } // endclass IsoZoomLayout