package com.windowtester.examples.gef.uml.figures; import org.eclipse.draw2d.ColorConstants; import org.eclipse.draw2d.Figure; import org.eclipse.draw2d.LineBorder; import org.eclipse.draw2d.ToolbarLayout; import org.eclipse.jface.resource.FontRegistry; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.widgets.Display; import com.windowtester.examples.gef.common.figures.EditableLabel; import com.windowtester.test.gef.GEFTestPlugin; /** * <p> * Copyright (c) 2007, Instantiations, Inc.<br> * All Rights Reserved * * @author Phil Quitslund * */ public class ClassElementFigure extends Figure { private static final String CLASS_HEADER_FONT_ID = "class-header"; private static FontRegistry REGISTRY; private final CompartmentFigure _attributeFigure = new CompartmentFigure(); private final CompartmentFigure _methodFigure = new CompartmentFigure(); private EditableLabel _nameLabel; public ClassElementFigure(String name){ ToolbarLayout layout = new ToolbarLayout(); layout.setVertical(true); layout.setStretchMinorAxis(true); setLayoutManager(layout); setBorder(new LineBorder(ColorConstants.black, 1)); setBackgroundColor(ColorConstants.yellow); setForegroundColor(ColorConstants.black); setOpaque(true); createNameFigure(name); add(getNameFigure()); add(getAttributeFigure()); add(getMethodFigure()); } public EditableLabel getNameFigure() { return _nameLabel; } private void createNameFigure(String name) { _nameLabel = new EditableLabel(GEFTestPlugin.getDefault().getImage("icons/class.gif"), name); _nameLabel.setFont(getClassFont()); //TODO: this font override is not working... } public CompartmentFigure getAttributeFigure() { return _attributeFigure; } public CompartmentFigure getMethodFigure() { return _methodFigure; } private Font getClassFont() { FontRegistry registry = getFonts(); Font font = registry.get(CLASS_HEADER_FONT_ID); if (font == null) { registry.put(CLASS_HEADER_FONT_ID, new FontData[]{new FontData("Arial", 12, SWT.BOLD)} ); font = registry.get(CLASS_HEADER_FONT_ID); } return font; } private static FontRegistry getFonts() { if (REGISTRY == null) REGISTRY = new FontRegistry(Display.getDefault()); return REGISTRY; } }