@Override public LayerCell getCellByPosition(int columnPosition, int rowPosition) { int underlyingColumnPosition = localToUnderlyingColumnPosition(columnPosition); int underlyingRowPosition = localToUnderlyingRowPosition(rowPosition); LayerCell cell = underlyingLayer.getCellByPosition(underlyingColumnPosition, underlyingRowPosition); if (cell != null) { cell.updatePosition( this, underlyingToLocalColumnPosition(underlyingLayer, cell.getOriginColumnPosition()), underlyingToLocalRowPosition(underlyingLayer, cell.getOriginRowPosition()), underlyingToLocalColumnPosition(underlyingLayer, cell.getColumnPosition()), underlyingToLocalRowPosition(underlyingLayer, cell.getRowPosition())); } return cell; }
private static HsMultiCellEditor activeCell( ViewportLayer vLayer, XLIFFEditorImplWithNatTable xliffEditor, IConfigRegistry configRegistry, int columnIndex, int rowIndex, int rowPosition, String cellType) { NatTable natTable = xliffEditor.getTable(); int columnPosition = vLayer.getColumnPositionByIndex(columnIndex); LayerCell cell = natTable.getCellByPosition(columnPosition, rowPosition); if (cell == null) { return null; } Rectangle cellBounds = cell.getBounds(); List<String> configLabels = cell.getConfigLabels().getLabels(); if (!xliffEditor.isHorizontalLayout()) { if (cellType.equals(NatTableConstant.SOURCE)) { configLabels.remove(XLIFFEditorImplWithNatTable.TARGET_EDIT_CELL_LABEL); } else if (cellType.equals(NatTableConstant.TARGET)) { configLabels.remove(XLIFFEditorImplWithNatTable.SOURCE_EDIT_CELL_LABEL); } } ILayer layer = cell.getLayer(); Object originalCanonicalValue = cell.getDataValue(); IDisplayConverter displayConverter = configRegistry.getConfigAttribute( CellConfigAttributes.DISPLAY_CONVERTER, DisplayMode.EDIT, configLabels); IStyle cellStyle = new CellStyleProxy(configRegistry, DisplayMode.EDIT, configLabels); IDataValidator dataValidator = configRegistry.getConfigAttribute( EditConfigAttributes.DATA_VALIDATOR, DisplayMode.EDIT, configLabels); Rectangle editorBounds = layer .getLayerPainter() .adjustCellBounds( new Rectangle(cellBounds.x, cellBounds.y, cellBounds.width, cellBounds.height)); int cellStartY = cellBounds.y; int cellEndY = cellStartY + cellBounds.height; Rectangle clientArea = natTable.getClientAreaProvider().getClientArea(); int clientAreaEndY = clientArea.y + clientArea.height; if (cellEndY > clientAreaEndY) { editorBounds.height = clientAreaEndY - cellStartY; } StyledTextCellEditor cellEditor = (StyledTextCellEditor) configRegistry.getConfigAttribute( EditConfigAttributes.CELL_EDITOR, DisplayMode.EDIT, configLabels); ICellEditHandler editHandler = new HsMultiCellEditorHandler(cellEditor, layer); HsMultiCellEditor hsCellEditor = new HsMultiCellEditor( cellType, cellEditor, editHandler, columnPosition, rowPosition, columnIndex, rowIndex, dataValidator, originalCanonicalValue, displayConverter, cellStyle, editorBounds); return hsCellEditor; }