/* This file belongs to the Servoy development and deployment environment, Copyright (C) 1997-2010 Servoy BV This program is free software; you can redistribute it and/or modify it under the terms of the GNU Affero 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 Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program; if not, see http://www.gnu.org/licenses or write to the Free Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 */ package com.servoy.j2db.util.gui; import java.awt.Component; import java.awt.Graphics; import java.awt.Rectangle; import java.util.Vector; import javax.swing.JComponent; public class GraphicsHelper { public static void drawDottedRect(Graphics g,int x, int y, int w, int h) { drawDotLine(g,x,y,x+w,y); drawDotLine(g,x+w,y,x+w,y+h); drawDotLine(g,x,y+h,x+w,y+h); drawDotLine(g,x,y,x,y+h); } public static void drawDotLine(Graphics g,int x0, int y0, int x1, int y1) { drawDots(g,x0,y0,x1,y1,2); } public static void drawDots(Graphics g,int x0, int y0, int x1, int y1,int interval) { if (y0==y1) { for (int i = x0; i<x1; i+=interval) { g.drawLine(i,y0, i, y1); } } else { for (int i = y0; i<y1; i+=interval) { g.drawLine(x0, i, x1, i); } } } public static void setDefaultComponentsTabOrder(Vector v) { // Component children[] = co.getComponents(); // Component tmp; Object tmp; int i,j,c; /** Get the tab order from the geometry **/ for(i=0,c = v.size() ; i < c ; i++) { for(j=i ; j < c ; j++) { if(i==j) continue; if(compareTabOrder((Component)v.elementAt(j),(Component)v.elementAt(i))) { tmp = v.elementAt(i); // tmp = children[i]; v.setElementAt(v.elementAt(j),i); // children[i] = children[j]; v.setElementAt(tmp,j); // children[j] = tmp; } } } // return children; } public static boolean compareTabOrder(Component a,Component b) { Rectangle bounds; int ay,by; int ax,bx; if(a instanceof JComponent) { ay = ((JComponent)a).getY(); ax = ((JComponent)a).getX(); } else { bounds = a.getBounds(); ay = bounds.y; ax = bounds.x; } if(b instanceof JComponent) { by = ((JComponent)b).getY(); bx = ((JComponent)b).getX(); } else { bounds = b.getBounds(); by = bounds.y; bx = bounds.x; } if(Math.abs(ay - by) < 10) { return (ax < bx); } return (ay < by); } }