Java Code Examples for org.eclipse.swt.graphics.Font#dispose()

The following examples show how to use org.eclipse.swt.graphics.Font#dispose() . These examples are extracted from open source projects. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
protected int getTextExtend(Font font, String string) {
	if (string.isEmpty())
		return 0;
	if (zoom != 1.0) {
		FontData data = font.getFontData()[0];
		FontDescriptor newFontDescriptor = FontDescriptor.createFrom(font)
				.setHeight((int) (data.getHeight() * zoom));
		font = newFontDescriptor.createFont(Display.getDefault());
	}
	if (gc.getFont() != font)
		gc.setFont(font);
	int offset = gc.textExtent(string).x;
	if (zoom != 1.0) {
		font.dispose();
	}
	return (int) Math.ceil((offset / zoom));
}
 
Example 2
private void drawChartOntoGC(GC gc) {
	Rectangle bounds = super.getBounds();
	gc.setBackground(mColorManager.getCalendarBackgroundColor());
	gc.fillRectangle(bounds);

	Font used = null;
	if (CalendarCombo.OS_CARBON) {
		used = mSettings.getCarbonDrawFont();
		if (used != null)
			gc.setFont(used);
	}

	// header
	drawHeader(gc);
	// day titles
	drawTitleDays(gc);
	// days
	drawDays(gc);
	// 1 pixel border
	drawBorder(gc);

	gc.dispose();
	if (used != null)
		used.dispose();
}
 
Example 3
Source Project: openstock   File: SWTUtils.java    License: GNU General Public License v3.0 5 votes vote down vote up
/**
 * Create an awt font by converting as much information
 * as possible from the provided swt <code>FontData</code>.
 * <p>Generally speaking, given a font size, an swt font will
 * display differently on the screen than the corresponding awt
 * one. Because the SWT toolkit use native graphical ressources whenever
 * it is possible, this fact is platform dependent. To address
 * this issue, it is possible to enforce the method to return
 * an awt font with the same height as the swt one.
 *
 * @param device The swt device being drawn on (display or gc device).
 * @param fontData The swt font to convert.
 * @param ensureSameSize A boolean used to enforce the same size
 * (in pixels) between the swt font and the newly created awt font.
 * @return An awt font converted from the provided swt font.
 */
public static java.awt.Font toAwtFont(Device device, FontData fontData,
        boolean ensureSameSize) {
    int height = (int) Math.round(fontData.getHeight() * device.getDPI().y
            / 72.0);
    // hack to ensure the newly created awt fonts will be rendered with the
    // same height as the swt one
    if (ensureSameSize) {
        GC tmpGC = new GC(device);
        Font tmpFont = new Font(device, fontData);
        tmpGC.setFont(tmpFont);
        JPanel DUMMY_PANEL = new JPanel();
        java.awt.Font tmpAwtFont = new java.awt.Font(fontData.getName(),
                fontData.getStyle(), height);
        if (DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(Az)
                > tmpGC.textExtent(Az).x) {
            while (DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(Az)
                    > tmpGC.textExtent(Az).x) {
                height--;
                tmpAwtFont = new java.awt.Font(fontData.getName(),
                        fontData.getStyle(), height);
            }
        }
        else if (DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(Az)
                < tmpGC.textExtent(Az).x) {
            while (DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(Az)
                    < tmpGC.textExtent(Az).x) {
                height++;
                tmpAwtFont = new java.awt.Font(fontData.getName(),
                        fontData.getStyle(), height);
            }
        }
        tmpFont.dispose();
        tmpGC.dispose();
    }
    return new java.awt.Font(fontData.getName(), fontData.getStyle(),
            height);
}
 
Example 4
Source Project: pentaho-kettle   File: PropsUI.java    License: Apache License 2.0 5 votes vote down vote up
public static void setGCFont( GC gc, Device device, FontData fontData ) {
  if ( Const.getOS().startsWith( "Windows" ) ) {
    Font font = new Font( device, fontData );
    gc.setFont( font );
    font.dispose();
  } else {
    gc.setFont( device.getSystemFont() );
  }
}
 
Example 5
Source Project: hop   File: PropsUi.java    License: Apache License 2.0 5 votes vote down vote up
public static void setGCFont( GC gc, Device device, FontData fontData ) {
  if ( Const.getOS().startsWith( "Windows" ) ) {
    Font font = new Font( device, fontData );
    gc.setFont( font );
    font.dispose();
  } else {
    gc.setFont( device.getSystemFont() );
  }
}
 
Example 6
/**
 * Create an awt font by converting as much information
 * as possible from the provided swt <code>FontData</code>.
 * <p>Generally speaking, given a font size, an swt font will
 * display differently on the screen than the corresponding awt
 * one. Because the SWT toolkit use native graphical ressources whenever
 * it is possible, this fact is platform dependent. To address
 * this issue, it is possible to enforce the method to return
 * an awt font with the same height as the swt one.
 *
 * @param device The swt device being drawn on (display or gc device).
 * @param fontData The swt font to convert.
 * @param ensureSameSize A boolean used to enforce the same size
 * (in pixels) between the swt font and the newly created awt font.
 * @return An awt font converted from the provided swt font.
 */
public static java.awt.Font toAwtFont(Device device, FontData fontData,
        boolean ensureSameSize) {
    int height = (int) Math.round(fontData.getHeight() * device.getDPI().y
            / 72.0);
    // hack to ensure the newly created awt fonts will be rendered with the
    // same height as the swt one
    if (ensureSameSize) {
        GC tmpGC = new GC(device);
        Font tmpFont = new Font(device, fontData);
        tmpGC.setFont(tmpFont);
        JPanel DUMMY_PANEL = new JPanel();
        java.awt.Font tmpAwtFont = new java.awt.Font(fontData.getName(),
                fontData.getStyle(), height);
        if (DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(Az)
                > tmpGC.textExtent(Az).x) {
            while (DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(Az)
                    > tmpGC.textExtent(Az).x) {
                height--;
                tmpAwtFont = new java.awt.Font(fontData.getName(),
                        fontData.getStyle(), height);
            }
        }
        else if (DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(Az)
                < tmpGC.textExtent(Az).x) {
            while (DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(Az)
                    < tmpGC.textExtent(Az).x) {
                height++;
                tmpAwtFont = new java.awt.Font(fontData.getName(),
                        fontData.getStyle(), height);
            }
        }
        tmpFont.dispose();
        tmpGC.dispose();
    }
    return new java.awt.Font(fontData.getName(), fontData.getStyle(),
            height);
}
 
Example 7
Source Project: nebula   File: GridItem_Test.java    License: Eclipse Public License 2.0 5 votes vote down vote up
@Test( expected = IllegalArgumentException.class )
public void testSetFont_DisposedFont() {
  GridItem item = new GridItem( grid, SWT.NONE );
  Font font = new Font( display, "Arial", 20, SWT.BOLD );
  font.dispose();
  item.setFont( font );
}
 
Example 8
Source Project: nebula   File: GridItem_Test.java    License: Eclipse Public License 2.0 5 votes vote down vote up
@Test( expected = IllegalArgumentException.class )
public void testSetFontByIndex_DisposedFont() {
  createGridColumns( grid, 3, SWT.NONE );
  GridItem item = new GridItem( grid, SWT.NONE );
  Font font = new Font( display, "Arial", 20, SWT.BOLD );
  font.dispose();
  item.setFont( 1, font );
}
 
Example 9
Source Project: pentaho-kettle   File: SWTGC.java    License: Apache License 2.0 5 votes vote down vote up
public void dispose() {
  gc.dispose();
  if ( transform != null && transform.isDisposed() == false ) {
    transform.dispose();
  }
  for ( Color color : colors ) {
    color.dispose();
  }
  for ( Font font : fonts ) {
    font.dispose();
  }
}
 
Example 10
/**
 * Create an awt font by converting as much information
 * as possible from the provided swt <code>FontData</code>.
 * <p>Generally speaking, given a font size, an swt font will
 * display differently on the screen than the corresponding awt
 * one. Because the SWT toolkit use native graphical ressources whenever
 * it is possible, this fact is platform dependent. To address
 * this issue, it is possible to enforce the method to return
 * an awt font with the same height as the swt one.
 *
 * @param device The swt device being drawn on (display or gc device).
 * @param fontData The swt font to convert.
 * @param ensureSameSize A boolean used to enforce the same size
 * (in pixels) between the swt font and the newly created awt font.
 * @return An awt font converted from the provided swt font.
 */
public static java.awt.Font toAwtFont(Device device, FontData fontData,
        boolean ensureSameSize) {
    int height = (int) Math.round(fontData.getHeight() * device.getDPI().y
            / 72.0);
    // hack to ensure the newly created awt fonts will be rendered with the
    // same height as the swt one
    if (ensureSameSize) {
        GC tmpGC = new GC(device);
        Font tmpFont = new Font(device, fontData);
        tmpGC.setFont(tmpFont);
        JPanel DUMMY_PANEL = new JPanel();
        java.awt.Font tmpAwtFont = new java.awt.Font(fontData.getName(),
                fontData.getStyle(), height);
        if (DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(Az)
                > tmpGC.textExtent(Az).x) {
            while (DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(Az)
                    > tmpGC.textExtent(Az).x) {
                height--;
                tmpAwtFont = new java.awt.Font(fontData.getName(),
                        fontData.getStyle(), height);
            }
        }
        else if (DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(Az)
                < tmpGC.textExtent(Az).x) {
            while (DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(Az)
                    < tmpGC.textExtent(Az).x) {
                height++;
                tmpAwtFont = new java.awt.Font(fontData.getName(),
                        fontData.getStyle(), height);
            }
        }
        tmpFont.dispose();
        tmpGC.dispose();
    }
    return new java.awt.Font(fontData.getName(), fontData.getStyle(),
            height);
}
 
Example 11
Source Project: neoscada   File: TitleRenderer.java    License: Eclipse Public License 1.0 5 votes vote down vote up
@Override
public void dispose ()
{
    for ( final Font font : this.fontCache.values () )
    {
        font.dispose ();
    }
    this.fontCache.clear ();

    super.dispose ();
}
 
Example 12
@Override
public void deactivate() {
	IFigure figure = getFigure();
	if (figure instanceof ProductSystemFigure) {
		ProductSystemFigure pFigure = (ProductSystemFigure) figure;
		Font infoFont = pFigure.infoFont;
		if (infoFont != null && !infoFont.isDisposed())
			infoFont.dispose();
	}
	super.deactivate();
}
 
Example 13
private final void showException( GC g2d, Exception ex )
{
	String sWrappedException = ex.getClass( ).getName( );
	Throwable th = ex;
	while ( ex.getCause( ) != null )
	{
		ex = (Exception) ex.getCause( );
	}
	String sException = ex.getClass( ).getName( );
	if ( sWrappedException.equals( sException ) )
	{
		sWrappedException = null;
	}

	String sMessage = null;
	if ( th instanceof BirtException )
	{
		sMessage = ( (BirtException) th ).getLocalizedMessage( );
	}
	else
	{
		sMessage = ex.getMessage( );
	}

	if ( sMessage == null )
	{
		sMessage = "<null>";//$NON-NLS-1$
	}
	StackTraceElement[] stea = ex.getStackTrace( );
	Point d = this.getSize( );

	Device dv = Display.getCurrent( );
	Font fo = new Font( dv, "Courier", SWT.BOLD, 16 );//$NON-NLS-1$
	g2d.setFont( fo );
	FontMetrics fm = g2d.getFontMetrics( );
	g2d.setBackground( dv.getSystemColor( SWT.COLOR_WHITE ) );
	g2d.fillRectangle( 20, 20, d.x - 40, d.y - 40 );
	g2d.setForeground( dv.getSystemColor( SWT.COLOR_BLACK ) );
	g2d.drawRectangle( 20, 20, d.x - 40, d.y - 40 );
	g2d.setClipping( 20, 20, d.x - 40, d.y - 40 );
	int x = 25, y = 20 + fm.getHeight( );
	g2d.drawString( "Exception:", x, y );//$NON-NLS-1$
	x += g2d.textExtent( "Exception:" ).x + 5;//$NON-NLS-1$
	g2d.setForeground( dv.getSystemColor( SWT.COLOR_RED ) );
	g2d.drawString( sException, x, y );
	x = 25;
	y += fm.getHeight( );
	if ( sWrappedException != null )
	{
		g2d.setForeground( dv.getSystemColor( SWT.COLOR_BLACK ) );
		g2d.drawString( "Wrapped In:", x, y );//$NON-NLS-1$
		x += g2d.textExtent( "Wrapped In:" ).x + 5;//$NON-NLS-1$
		g2d.setForeground( dv.getSystemColor( SWT.COLOR_RED ) );
		g2d.drawString( sWrappedException, x, y );
		x = 25;
		y += fm.getHeight( );
	}
	g2d.setForeground( dv.getSystemColor( SWT.COLOR_BLACK ) );
	y += 10;
	g2d.drawString( "Message:", x, y );//$NON-NLS-1$
	x += g2d.textExtent( "Message:" ).x + 5;//$NON-NLS-1$
	g2d.setForeground( dv.getSystemColor( SWT.COLOR_BLUE ) );
	g2d.drawString( sMessage, x, y );
	x = 25;
	y += fm.getHeight( );
	g2d.setForeground( dv.getSystemColor( SWT.COLOR_BLACK ) );
	y += 10;
	g2d.drawString( "Trace:", x, y );//$NON-NLS-1$
	x = 40;
	y += fm.getHeight( );
	g2d.setForeground( dv.getSystemColor( SWT.COLOR_DARK_GREEN ) );
	for ( int i = 0; i < stea.length; i++ )
	{
		g2d.drawString( stea[i].getClassName( ) + ":"//$NON-NLS-1$
				+ stea[i].getMethodName( ) + "(...):"//$NON-NLS-1$
				+ stea[i].getLineNumber( ), x, y );
		x = 40;
		y += fm.getHeight( );
	}
	fo.dispose( );
}
 
Example 14
/**
 * Create an awt font by converting as much information as possible from the provided swt <code>FontData</code>.
 * <p>
 * Generally speaking, given a font size, an swt font will display differently on the screen than the corresponding
 * awt one. Because the SWT toolkit use native graphical ressources whenever it is possible, this fact is platform
 * dependent. To address this issue, it is possible to enforce the method to return an awt font with the same height
 * as the swt one.
 *
 * @param device
 *            The swt device being drawn on (display or gc device).
 * @param fontData
 *            The swt font to convert.
 * @param ensureSameSize
 *            A boolean used to enforce the same size (in pixels) between the swt font and the newly created awt
 *            font.
 * @return An awt font converted from the provided swt font.
 */
public static java.awt.Font toAwtFont(final Device device, final FontData fontData, final boolean ensureSameSize) {
	int style;
	switch (fontData.getStyle()) {
		case SWT.NORMAL:
			style = java.awt.Font.PLAIN;
			break;
		case SWT.ITALIC:
			style = java.awt.Font.ITALIC;
			break;
		case SWT.BOLD:
			style = java.awt.Font.BOLD;
			break;
		default:
			style = java.awt.Font.PLAIN;
			break;
	}
	int height = (int) Math.round(fontData.getHeight() * device.getDPI().y / 72.0);
	// hack to ensure the newly created awt fonts will be rendered with the
	// same height as the swt one
	if (ensureSameSize) {
		final GC tmpGC = new GC(device);
		final Font tmpFont = new Font(device, fontData);
		tmpGC.setFont(tmpFont);
		final JPanel DUMMY_PANEL = new JPanel();
		java.awt.Font tmpAwtFont = new java.awt.Font(fontData.getName(), style, height);
		if (DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(Az) > tmpGC.textExtent(Az).x) {
			while (DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(Az) > tmpGC.textExtent(Az).x) {
				height--;
				tmpAwtFont = new java.awt.Font(fontData.getName(), style, height);
			}
		} else if (DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(Az) < tmpGC.textExtent(Az).x) {
			while (DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(Az) < tmpGC.textExtent(Az).x) {
				height++;
				tmpAwtFont = new java.awt.Font(fontData.getName(), style, height);
			}
		}
		tmpFont.dispose();
		tmpGC.dispose();
	}
	return new java.awt.Font(fontData.getName(), style, height);
}
 
Example 15
public void paintText(GC gc, IColorManager colorManager, ISettings settings, Rectangle bounds, Rectangle imageBounds, boolean hover, boolean selected, String text) {
		if (text == null || text.length() == 0)
			return;
		
		int imgWidth = 0;
		if (imageBounds != null)
			imgWidth = imageBounds.width;		

		Point se = gc.stringExtent(text);
		int textTop = (CustomButton.BUTTON_HEIGHT - se.y) / 2;
		//int textWidth = se.x;
		
		Font oldFont = gc.getFont();
		Font newFont = settings.getButtonTextFont(oldFont);
		gc.setFont(newFont);
		
		// skip image if image is null (TODO: feature to let users align imageless button text with image button text?
		//int spaceNeeded = (imgWidth > 0 ? mLeftSpacer + imgWidth : 0) + mRightSpacer + textWidth;
		
		String textToUse = text;
		
		// out of bounds?
/*		if (spaceNeeded > bounds.width) {
			//TODO: truncate text
			char[] total = mText.toCharArray();
			StringBuffer fin = new StringBuffer();
			int loop = 0;
			while (gc.stringExtent(fin.toString()).x < (bounds.width - gc.stringExtent("...").x)) {
				fin.append(total[loop]);
				loop++;
			}
			fin.append("...");
			textToUse = fin.toString();
		}
*/				
		gc.setForeground(settings.getButtonTextColor());
		gc.drawString(textToUse, (imgWidth > 0 ? settings.getLeftButtonTextSpacing() + imgWidth : 0) + settings.getButtonTextImageSpacing(), textTop-1, true);
		
		// reset fonts
		newFont.dispose();
		gc.setFont(oldFont);
	}
 
Example 16
/**
 * Show the exception message that prevented to draw the chart
 * 
 * @param g2d
 * @param ex
 *            The exception that occured
 */
private final void showException( GC g2d, Exception ex )
{
	Point pTLC = new Point( 0, 0 );

	// String sWrappedException = ex.getClass( ).getName( );
	Throwable th = ex;

	String sMessage = null;
	if ( th instanceof BirtException )
	{
		sMessage = ( (BirtException) th ).getLocalizedMessage( );
	}
	else
	{
		sMessage = ex.getMessage( );
	}

	if ( sMessage == null )
	{
		sMessage = "<null>"; //$NON-NLS-1$
	}
	// StackTraceElement[] stea = ex.getStackTrace( );
	Dimension d = getSize( );

	Device dv = Display.getCurrent( );
	Font fo = new Font( dv, "Courier", SWT.BOLD, 12 ); //$NON-NLS-1$
	g2d.setFont( fo );
	FontMetrics fm = g2d.getFontMetrics( );
	g2d.setBackground( dv.getSystemColor( SWT.COLOR_WHITE ) );
	g2d.fillRectangle( pTLC.x + 20,
			pTLC.y + 20,
			d.width - 40,
			d.height - 40 );
	g2d.setForeground( dv.getSystemColor( SWT.COLOR_BLACK ) );
	g2d.drawRectangle( pTLC.x + 20,
			pTLC.y + 20,
			d.width - 40,
			d.height - 40 );
	Region rgPrev = new Region( );
	g2d.getClipping( rgPrev );
	g2d.setClipping( pTLC.x + 20, pTLC.y + 20, d.width - 40, d.height - 40 );
	int x = pTLC.x + 25, y = pTLC.y + 20 + fm.getHeight( );
	g2d.setForeground( dv.getSystemColor( SWT.COLOR_BLACK ) );
	g2d.drawString( ERROR_MSG, x, y );
	y += fm.getHeight( );
	g2d.setForeground( dv.getSystemColor( SWT.COLOR_RED ) );
	g2d.drawText( sMessage, x, y );

	g2d.setClipping( rgPrev );
	rgPrev.dispose( );
	fo.dispose( );
}
 
Example 17
Source Project: nebula   File: LoginDialog.java    License: Eclipse Public License 2.0 4 votes vote down vote up
/**
 * Create a default image. It is a port of the image used by the Login Box
 * in the project SwingX
 *
 * @param w width
 * @param h height
 * @return a default image (blue wave)
 */
private Image createDefaultImage(final int w, final int h) {
	final Display display = Display.getCurrent();
	final Color backgroundColor = new Color(display, 49, 121, 242);
	final Color gradientColor1 = new Color(display, 155, 185, 245);
	final Color gradientColor2 = new Color(display, 53, 123, 242);

	final Image img = new Image(display, w, h);
	final GC gc = new GC(img);
	gc.setAdvanced(true);
	gc.setAntialias(SWT.ON);
	gc.setBackground(backgroundColor);
	gc.fillRectangle(0, 0, w, h);

	final Path curveShape = new Path(display);
	curveShape.moveTo(0, h * .6f);
	curveShape.cubicTo(w * .167f, h * 1.2f, w * .667f, h * -.5f, w, h * .75f);
	curveShape.lineTo(w, h);
	curveShape.lineTo(0, h);
	curveShape.lineTo(0, h * .8f);
	curveShape.close();

	final Pattern pattern = new Pattern(display, 0, 0, 1, h * 1.2f, gradientColor1, gradientColor2);
	gc.setBackgroundPattern(pattern);
	gc.fillPath(curveShape);

	final Font font = new Font(display, "Arial Bold", 30, SWT.NONE);
	gc.setFont(font);
	gc.setForeground(display.getSystemColor(SWT.COLOR_WHITE));
	final Point textSize = gc.stringExtent(ResourceManager.getLabel(ResourceManager.LOGIN));
	gc.drawString(ResourceManager.getLabel(ResourceManager.LOGIN), (int) (w * .05f), (h - textSize.y) / 2, true);

	font.dispose();
	curveShape.dispose();
	pattern.dispose();
	backgroundColor.dispose();
	gradientColor1.dispose();
	gradientColor2.dispose();
	gc.dispose();
	return img;
}
 
Example 18
Source Project: astor   File: SWTUtils.java    License: GNU General Public License v2.0 4 votes vote down vote up
/**
 * Create an awt font by converting as much information 
 * as possible from the provided swt <code>FontData</code>.
 * <p>Generally speaking, given a font size, an swt font will 
 * display differently on the screen than the corresponding awt 
 * one. Because the SWT toolkit use native graphical ressources whenever 
 * it is possible, this fact is platform dependent. To address 
 * this issue, it is possible to enforce the method to return 
 * an awt font with the same height as the swt one.
 * 
 * @param device The swt device being drawn on (display or gc device).
 * @param fontData The swt font to convert.
 * @param ensureSameSize A boolean used to enforce the same size 
 * (in pixels) between the swt font and the newly created awt font.
 * @return An awt font converted from the provided swt font.
 */
public static java.awt.Font toAwtFont(Device device, FontData fontData, 
        boolean ensureSameSize) {
    int style;
    switch (fontData.getStyle()) {
        case SWT.NORMAL:
            style = java.awt.Font.PLAIN;
            break;
        case SWT.ITALIC:
            style = java.awt.Font.ITALIC;
            break;
        case SWT.BOLD:
            style = java.awt.Font.BOLD;
            break;
        default:
            style = java.awt.Font.PLAIN;
            break;
    }
    int height = (int) Math.round(fontData.getHeight() * device.getDPI().y 
            / 72.0);
    // hack to ensure the newly created awt fonts will be rendered with the
    // same height as the swt one
    if (ensureSameSize) {
        GC tmpGC = new GC(device);
        Font tmpFont = new Font(device, fontData);
        tmpGC.setFont(tmpFont);
        JPanel DUMMY_PANEL = new JPanel();
        java.awt.Font tmpAwtFont = new java.awt.Font(fontData.getName(), 
                style, height);
        if (DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(Az) 
                > tmpGC.textExtent(Az).x) {
            while (DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(Az) 
                    > tmpGC.textExtent(Az).x) {
                height--;                
                tmpAwtFont = new java.awt.Font(fontData.getName(), style, 
                        height);
            }
        }
        else if (DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(Az) 
                < tmpGC.textExtent(Az).x) {
            while (DUMMY_PANEL.getFontMetrics(tmpAwtFont).stringWidth(Az) 
                    < tmpGC.textExtent(Az).x) {
                height++;
                tmpAwtFont = new java.awt.Font(fontData.getName(), style, 
                        height);
            }
        }
        tmpFont.dispose();
        tmpGC.dispose();
    }
    return new java.awt.Font(fontData.getName(), style, height);
}
 
Example 19
Source Project: birt   File: JavaScriptViewer.java    License: Eclipse Public License 1.0 4 votes vote down vote up
private final void showException( GC g2d, Exception ex )
{
	String sWrappedException = ex.getClass( ).getName( );
	Throwable th = ex;
	while ( ex.getCause( ) != null )
	{
		ex = (Exception) ex.getCause( );
	}
	String sException = ex.getClass( ).getName( );
	if ( sWrappedException.equals( sException ) )
	{
		sWrappedException = null;
	}

	String sMessage = null;
	if ( th instanceof BirtException )
	{
		sMessage = ( (BirtException) th ).getLocalizedMessage( );
	}
	else
	{
		sMessage = ex.getMessage( );
	}

	if ( sMessage == null )
	{
		sMessage = "<null>";//$NON-NLS-1$
	}
	StackTraceElement[] stea = ex.getStackTrace( );
	Point d = this.getSize( );

	Device dv = Display.getCurrent( );
	Font fo = new Font( dv, "Courier", SWT.BOLD, 16 );//$NON-NLS-1$
	g2d.setFont( fo );
	FontMetrics fm = g2d.getFontMetrics( );
	g2d.setBackground( dv.getSystemColor( SWT.COLOR_WHITE ) );
	g2d.fillRectangle( 20, 20, d.x - 40, d.y - 40 );
	g2d.setForeground( dv.getSystemColor( SWT.COLOR_BLACK ) );
	g2d.drawRectangle( 20, 20, d.x - 40, d.y - 40 );
	g2d.setClipping( 20, 20, d.x - 40, d.y - 40 );
	int x = 25, y = 20 + fm.getHeight( );
	g2d.drawString( "Exception:", x, y );//$NON-NLS-1$
	x += g2d.textExtent( "Exception:" ).x + 5;//$NON-NLS-1$
	g2d.setForeground( dv.getSystemColor( SWT.COLOR_RED ) );
	g2d.drawString( sException, x, y );
	x = 25;
	y += fm.getHeight( );
	if ( sWrappedException != null )
	{
		g2d.setForeground( dv.getSystemColor( SWT.COLOR_BLACK ) );
		g2d.drawString( "Wrapped In:", x, y );//$NON-NLS-1$
		x += g2d.textExtent( "Wrapped In:" ).x + 5;//$NON-NLS-1$
		g2d.setForeground( dv.getSystemColor( SWT.COLOR_RED ) );
		g2d.drawString( sWrappedException, x, y );
		x = 25;
		y += fm.getHeight( );
	}
	g2d.setForeground( dv.getSystemColor( SWT.COLOR_BLACK ) );
	y += 10;
	g2d.drawString( "Message:", x, y );//$NON-NLS-1$
	x += g2d.textExtent( "Message:" ).x + 5;//$NON-NLS-1$
	g2d.setForeground( dv.getSystemColor( SWT.COLOR_BLUE ) );
	g2d.drawString( sMessage, x, y );
	x = 25;
	y += fm.getHeight( );
	g2d.setForeground( dv.getSystemColor( SWT.COLOR_BLACK ) );
	y += 10;
	g2d.drawString( "Trace:", x, y );//$NON-NLS-1$
	x = 40;
	y += fm.getHeight( );
	g2d.setForeground( dv.getSystemColor( SWT.COLOR_DARK_GREEN ) );
	for ( int i = 0; i < stea.length; i++ )
	{
		g2d.drawString( stea[i].getClassName( ) + ":"//$NON-NLS-1$
				+ stea[i].getMethodName( )
				+ "(...):"//$NON-NLS-1$
				+ stea[i].getLineNumber( ), x, y );
		x = 40;
		y += fm.getHeight( );
	}
	fo.dispose( );
}
 
Example 20
Source Project: http4e   File: PrinterFacade.java    License: Apache License 2.0 4 votes vote down vote up
public void print(){
   if (printer.startJob("Text")) { // the string is the job name - shows up

      try {// in the printer's job list
         Rectangle clientArea = printer.getClientArea();
         Rectangle trim = printer.computeTrim(0, 0, 0, 0);
         Point dpi = printer.getDPI();
         leftMargin = dpi.x + trim.x; // one inch from left side of paper
         rightMargin = clientArea.width - dpi.x + trim.x + trim.width; // one
         // inch
         // from
         // right
         // side
         // of
         // paper
         topMargin = dpi.y + trim.y; // one inch from top edge of paper
         bottomMargin = clientArea.height - dpi.y + trim.y + trim.height; // one
         // inch
         // from
         // bottom
         // edge
         // of
         // paper

         /* Create a buffer for computing tab width. */
         int tabSize = 4; // is tab width a user setting in your UI?
         StringBuilder tabBuffer = new StringBuilder(tabSize);
         for (int i = 0; i < tabSize; i++)
            tabBuffer.append(' ');
         tabs = tabBuffer.toString();

         /*
          * Create printer GC, and create and set the printer font &
          * foreground color.
          */
         gc = new GC(printer);

         font = printer.getSystemFont(); // ResourceUtils.getFont(Styles.getInstance().FONT_COURIER);
         // foregroundColor = ResourceUtils.getColor(Styles.DARK_RGB_TEXT);
         // backgroundColor =
         // ResourceUtils.getColor(Styles.BACKGROUND_ENABLED);

         FontData fontData = font.getFontData()[0];
         printerFont = new Font(printer, fontData.getName(), fontData.getHeight(), fontData.getStyle());
         gc.setFont(printerFont);
         tabWidth = gc.stringExtent(tabs).x;
         lineHeight = gc.getFontMetrics().getHeight();

         // RGB rgb = foregroundColor.getRGB();
         // printerForegroundColor = new Color(printer, rgb);
         // gc.setForeground(printerForegroundColor);

         // rgb = backgroundColor.getRGB();
         // printerBackgroundColor = new Color(printer, rgb);
         // gc.setBackground(printerBackgroundColor);

         /* Print text to current gc using word wrap */
         printText(printer);
         printer.endJob();

      } catch (Exception e) {
         throw new RuntimeException(e);

      } finally {
         /* Cleanup graphics resources used in printing */
         if (printerFont != null)
            printerFont.dispose();
         // if(printerForegroundColor != null)
         // printerForegroundColor.dispose();
         // if(printerBackgroundColor != null)
         // printerBackgroundColor.dispose();
         if (gc != null)
            gc.dispose();
      }
   }
}