package jfparted; /**Image shows a devices partitions. * * Created : Feb 21, 2012 * * @author pquiring */ import java.awt.*; import java.awt.font.*; import java.awt.geom.*; import javaforce.*; public class DeviceImage extends JFImage { private Data.Device device; public DeviceImage(Data.Device device) { this.device = device; } public void paint(Graphics dest) { // System.out.println("paint" + this.getWidth() + new java.util.Random().nextInt()); int devicewidth = getWidth(); setImageSize(devicewidth, 32); Graphics2D g = getGraphics2D(); g.setColor(new Color(0xffffff)); g.fillRect(0,0,devicewidth,32); g.setStroke(new BasicStroke(4)); g.setColor(new Color(0x000000)); g.drawRect(0,0,devicewidth,32); double devicesize = Data.getSize(device.size); // System.out.println("device width=" + devicewidth); // System.out.println("device size=" + devicesize); int xpos = 0; int partwidth; FontRenderContext frc = g.getFontRenderContext(); Font font = g.getFont(); for(int p=0;p<device.parts.size();p++) { Data.Partition part = device.parts.get(p); double partsize = Data.getSize(part.size); // System.out.println("part size=" + partsize); partwidth = (int)(partsize / devicesize * ((double)devicewidth)); // System.out.println("part width=" + partwidth); if (xpos + partwidth >= devicewidth) partwidth = devicewidth - xpos; g.drawRect(xpos,0,xpos + partwidth,32); if (part.number != -1) { String name = part.device.dev + part.number; Rectangle2D rect = font.getStringBounds(name, frc); int fx = (int)rect.getWidth(); int fy = (int)rect.getHeight(); if (fx <= partwidth) { g.drawString(name, xpos + (partwidth - fx)/2, (32-fy)/2 + fy); } } xpos += partwidth; } super.paint(dest); } }