package TaiGameCore.swing; import java.awt.Component; import java.awt.Dimension; import java.util.ArrayList; /** * Utils for creating scalable layouts. */ public class ScaleUtils { private ArrayList<Component> preferredSizesKey = new ArrayList();; private ArrayList<float[]> preferredSizes = new ArrayList(); public void addPreferredSize(Component listen, float x, float y){ addPreferredSize(listen, x, y, -1); } public void pushSizes(int width, int height) { for(int k = 0; k < preferredSizes.size(); k++){ float[] val = preferredSizes.get(k); int xWise = (int)(val[0]*width+val[2]); int yWise = (int)(val[1]*height+val[3]); if (val[4]>0){ yWise = (int) (xWise / val[4] + val[3]); } preferredSizesKey.get(k).setPreferredSize(new Dimension(xWise,yWise)); } } public void addPreferredSize(Component listen, float x, float y, float ar) { addPreferredSize(listen, x, y, 0, 0, ar); } public void addPreferredSize(Component listen, float x, float y, int xoff, int yoff) { addPreferredSize(listen, x, y, xoff,yoff,-1); } public void addPreferredSize(Component listen, float x, float y, int xoff, int yoff, float ar) { int got = preferredSizesKey.indexOf(listen); if (got!=-1){ preferredSizesKey.remove(got); preferredSizes.remove(got); } preferredSizesKey.add(listen); preferredSizes.add(new float[]{x,y, xoff, yoff, ar}); } }