/******************************************************************************* * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Exadel, Inc. and Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.seam.ui.pages.editor.figures; import org.eclipse.draw2d.FigureUtilities; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import org.jboss.tools.common.gef.figures.xpl.BaseNodeFigure; import org.jboss.tools.common.model.ui.ModelUIImages; import org.jboss.tools.seam.pages.xml.model.SeamPagesPreference; import org.jboss.tools.seam.ui.pages.editor.figures.xpl.FixedConnectionAnchor; public class NodeFigure extends BaseNodeFigure { public final static Color ghostFillColor = new Color(null, 31, 31, 31); public static Font nodeLabelFont = SeamPagesPreference.getFont(SeamPagesPreference.VIEW_PATH_FONT.getValue(), null); public static final Color lightGrayColor = new Color(null, 0xf1, 0xf1, 0xf1); public static final Image errorIcon = ModelUIImages .getImage("error_co.gif"); public static final int LINK_HEIGHT = 16; public String dottedString(String str, int availTextWidth, Font font){ if(str == null) str = ""; String text = new String(str); int tWidth = FigureUtilities.getTextExtents(text, font).width; if (tWidth > availTextWidth) { String clipString = "..."; int totalWidth; int clipWidth = FigureUtilities.getTextExtents(clipString, font).width;; int nChars; for(nChars = 1; nChars < text.length(); nChars++) { totalWidth = FigureUtilities.getTextExtents(text.substring(0,nChars), font).width+clipWidth; if (totalWidth > availTextWidth) { break; } } text = text.substring(0, nChars) + clipString; } return text; } final public void initConnectionAnchors(int numberOfAnchors) { if (numberOfAnchors == 0) numberOfAnchors = 1; for (int i = 0; i < numberOfAnchors; i++) { addConnectionAnchor(i); } } final public void addConnectionAnchor(int index) { FixedConnectionAnchor c; c = new FixedConnectionAnchor(this); c.offsetV = 10 + LINK_HEIGHT * index; c.leftToRight = false; connectionAnchors.put((index + 1) + "_OUT", c); outputConnectionAnchors.addElement(c); } final public void removeConnectionAnchor() { if (outputConnectionAnchors.size() == 1) return; outputConnectionAnchors.remove(outputConnectionAnchors.size() - 1); } final public void removeAllConnectionAnchor() { outputConnectionAnchors.removeAllElements(); } }