/* * Created on 2006-09-06 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package net.ms.designer.editors.packages.editparts; import net.ms.designer.editors.packages.figures.NodeFigure; import net.ms.designer.editors.packages.models.Package; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.geometry.Dimension; import org.eclipse.gef.GraphicalEditPart; import org.eclipse.gef.tools.CellEditorLocator; import org.eclipse.gef.tools.DirectEditManager; import org.eclipse.swt.events.VerifyListener; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.widgets.Text; public class NodeDirectEditManager extends DirectEditManager { Font scaledFont; protected VerifyListener verifyListener; protected NodeFigure nodeFigure; /** * Creates a new ActivityDirectEditManager with the given attributes. * @param source the source EditPart * @param editorType type of editor * @param locator the CellEditorLocator */ public NodeDirectEditManager(GraphicalEditPart source, Class editorType, CellEditorLocator locator) { super(source, editorType, locator); // this.nodeFigure = nodeFigure; this.nodeFigure = (NodeFigure) source.getFigure(); } /** * @see org.eclipse.gef.tools.DirectEditManager#bringDown() */ // protected void bringDown() { // //This method might be re-entered when super.bringDown() is called. // Font disposeFont = scaledFont; // scaledFont = null; // super.bringDown(); // if (disposeFont != null) // disposeFont.dispose(); // } /** * @see org.eclipse.gef.tools.DirectEditManager#initCellEditor() */ protected void initCellEditor() { Text text = (Text) getCellEditor().getControl(); // verifyListener = new VerifyListener() { // public void verifyText(VerifyEvent event) { // Text text = (Text) getCellEditor().getControl(); // String oldText = text.getText(); // String leftText = oldText.substring(0, event.start); // String rightText = oldText.substring(event.end, oldText.length()); // GC gc = new GC(text); // String s = leftText + event.text + rightText; // Point size = gc.textExtent(leftText + event.text + rightText); // gc.dispose(); // if (size.x != 0) // size = text.computeSize(size.x, SWT.DEFAULT); // getCellEditor().getControl().setSize(size.x, size.y); // } // }; // text.addVerifyListener(verifyListener); // String initialLabelText = nodeFigure.getText(); getCellEditor().setValue(((Package) getEditPart().getModel()).getName()); IFigure figure = ((GraphicalEditPart) getEditPart()).getFigure(); scaledFont = figure.getFont(); FontData data = scaledFont.getFontData()[0]; Dimension fontSize = new Dimension(0, data.getHeight()); nodeFigure.translateToAbsolute(fontSize); data.setHeight(fontSize.height); scaledFont = new Font(null, data); text.setFont(scaledFont); text.selectAll(); } /** * @see org.eclipse.gef.tools.DirectEditManager#unhookListeners() */ // protected void unhookListeners() { // super.unhookListeners(); // Text text = (Text) getCellEditor().getControl(); // text.removeVerifyListener(verifyListener); // verifyListener = null; // } }