/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.diagram.ui.util.directedit;
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.jface.viewers.CellEditor;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.widgets.Text;
import org.teiid.designer.ui.common.graphics.GlobalUiFontManager;
/**
* @since 8.0
*/
public class DirectEditPartManager extends DirectEditManager {
Font scaledFont;
public DirectEditPartManager(GraphicalEditPart source, Class<? extends CellEditor> editorType, CellEditorLocator locator) {
super(source, editorType, locator);
}
/**
* @see org.eclipse.gef.tools.DirectEditManager#bringDown()
*/
@Override
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();
}
@Override
protected void initCellEditor() {
if( getEditPart() instanceof DirectEditPart ) {
DirectEditFigure figure = (DirectEditFigure)getEditPart().getFigure();
Label label = figure.getLabelFigure();
String initialLabelText = ((DirectEditPart)getEditPart()).getEditString();
getCellEditor().setValue(initialLabelText);
Text text = (Text)getCellEditor().getControl();
scaledFont = label.getFont();
FontData data = scaledFont.getFontData()[0];
Dimension fontSize = new Dimension(0, data.getHeight());
label.translateToAbsolute(fontSize);
data.setHeight(fontSize.height);
scaledFont = GlobalUiFontManager.getFont(data);
text.setFont(scaledFont);
text.selectAll();
}
}
public void commitAndDispose() {
if( getCellEditor() != null && getCellEditor().isActivated() )
super.commit();
}
}