package net.ms.designer.editors.componentdetail.policies; import org.eclipse.draw2d.IFigure; 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; /** * @author Administrator * */ public class TableCellEditorLocator implements CellEditorLocator { IFigure figure; 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 TableCellEditorLocator(IFigure figure) { this.figure = figure; } /* * ���� 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 = figure.getClientArea().getCopy(); figure.translateToAbsolute(rect); int xOffset = 0; int wOffset = 0; int yOffset = 0; int hOffset = 0; if (SWT.getPlatform().equalsIgnoreCase("gtk")) { xOffset = GTK_X_OFFSET; wOffset = GTK_W_OFFSET; } else if (SWT.getPlatform().equalsIgnoreCase("carbon")) { 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); } }