blob: 9a98419ec04d9657ff8a5227e35faf4a55de3981 [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2006 IBM Corporation and others.
// All rights reserved. This program and the accompanying materials
// are 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:
// IBM Corporation - initial implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.authoring.gef.edit;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.Label;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.gef.tools.CellEditorLocator;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Text;
/**
* Constraint for Label placing.
*
* @author Phong Nguyen Le
* @since 1.0
*/
final public class LabelCellEditorLocator implements CellEditorLocator {
private IFigure fig;
private static int WIN_X_OFFSET = -4;
private static int WIN_W_OFFSET = 5;
private static int GTK_X_OFFSET = 0;
private static int GTK_W_OFFSET = 0;
private static int MAC_X_OFFSET = -3;
private static int MAC_W_OFFSET = 9;
private static int MAC_Y_OFFSET = -3;
private static int MAC_H_OFFSET = 6;
public LabelCellEditorLocator(IFigure figure) {
fig = figure;
}
/*
* (non-Javadoc)
* @see org.eclipse.gef.tools.CellEditorLocator#relocate(org.eclipse.jface.viewers.CellEditor)
*/
public void relocate(CellEditor celleditor) {
Text text = (Text) celleditor.getControl();
Rectangle rect = null;
if (fig instanceof Label)
rect = ((Label) fig).getTextBounds().intersect(fig.getClientArea());
else
rect = fig.getClientArea(Rectangle.SINGLETON);
fig.translateToAbsolute(rect);
int xOffset = 0;
int wOffset = 0;
int yOffset = 0;
int hOffset = 0;
if (SWT.getPlatform().equalsIgnoreCase("gtk")) { //$NON-NLS-1$
xOffset = GTK_X_OFFSET;
wOffset = GTK_W_OFFSET;
} else if (SWT.getPlatform().equalsIgnoreCase("carbon")) { //$NON-NLS-1$
xOffset = MAC_X_OFFSET;
wOffset = MAC_W_OFFSET;
yOffset = MAC_Y_OFFSET;
hOffset = MAC_H_OFFSET;
} else {
xOffset = WIN_X_OFFSET;
wOffset = WIN_W_OFFSET;
}
text.setBounds(rect.x + xOffset, rect.y + yOffset,
rect.width + wOffset, rect.height + hOffset);
}
}