// ============================================================================ // // Copyright (C) 2006-2012 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package org.talend.designer.core.ui.editor.connections; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.Label; 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.graphics.Font; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.widgets.Text; /** * Manage the direct edit of a text in GEF. <br/> * * $Id: NodeLabelEditManager.java 77219 2012-01-24 01:14:15Z mhirt $ * */ public class NodeLabelEditManager extends DirectEditManager { Font scaledFont; private Text text; public NodeLabelEditManager(GraphicalEditPart source, Class editorType, CellEditorLocator locator) { super(source, editorType, locator); } @Override protected void bringDown() { Font disposeFont = scaledFont; scaledFont = null; super.bringDown(); if (disposeFont != null) { disposeFont.dispose(); } } @Override protected void initCellEditor() { Connection connection = ((ConnectionLabel) this.getEditPart().getModel()).getConnection(); if (getCellEditor() instanceof NodeLabelCellEditor) { ((NodeLabelCellEditor) getCellEditor()).setCurrentConnection(connection); } Label label = (Label) (getEditPart()).getFigure(); String initialLabelText = label.getText(); getCellEditor().setValue(initialLabelText); text = (Text) getCellEditor().getControl(); IFigure figure = (getEditPart()).getFigure(); scaledFont = figure.getFont(); FontData data = scaledFont.getFontData()[0]; Dimension fontSize = new Dimension(0, data.getHeight()); label.translateToAbsolute(fontSize); data.setHeight(fontSize.height); scaledFont = new Font(null, data); text.setFont(scaledFont); text.selectAll(); } /** * yzhang Comment method "getTextControl". * * @return */ public Text getTextControl() { if (getCellEditor() == null) { return null; } return (Text) getCellEditor().getControl(); } }