use of net.sourceforge.nattable.coordinate.PositionCoordinate in project translationstudio8 by heartsome.
the class TickUpdateCommandHandler method doCommand.
public boolean doCommand(TickUpdateCommand command) {
PositionCoordinate[] selectedPositions = selectionLayer.getSelectedCells();
IConfigRegistry configRegistry = command.getConfigRegistry();
// Tick update for multiple cells in selection
if (selectedPositions.length > 1) {
ICellEditor lastSelectedCellEditor = EditUtils.lastSelectedCellEditor(selectionLayer, configRegistry);
// Can all cells be updated ?
if (EditUtils.isEditorSame(selectionLayer, configRegistry, lastSelectedCellEditor) && EditUtils.allCellsEditable(selectionLayer, configRegistry)) {
for (PositionCoordinate position : selectedPositions) {
updateSingleCell(command, position);
}
}
} else {
// Tick update for single selected cell
updateSingleCell(command, selectionLayer.getLastSelectedCellPosition());
}
return true;
}
use of net.sourceforge.nattable.coordinate.PositionCoordinate in project translationstudio8 by heartsome.
the class KeyEditAction method run.
public void run(NatTable natTable, KeyEvent event) {
Character character = null;
if (LetterOrDigitKeyEventMatcher.isLetterOrDigit(event.character) || event.character == ' ') {
character = Character.valueOf(event.character);
}
if (character != null) {
int[] selectedRowIndexs = XLIFFEditorImplWithNatTable.getCurrent().getSelectedRows();
if (selectedRowIndexs.length == 0) {
return;
}
Arrays.sort(selectedRowIndexs);
int rowIndex = selectedRowIndexs[selectedRowIndexs.length - 1];
ViewportLayer viewportLayer = LayerUtil.getLayer(natTable, ViewportLayer.class);
SelectionLayer selectionLayer = LayerUtil.getLayer(natTable, SelectionLayer.class);
// 先记录下可见区域的范围
int originRowPosition = viewportLayer.getOriginRowPosition();
// 总行数
int rowCount = viewportLayer.getRowCount();
XLIFFEditorImplWithNatTable editor = XLIFFEditorImplWithNatTable.getCurrent();
if (!editor.isHorizontalLayout()) {
rowIndex = rowIndex * 2;
}
if (rowIndex < originRowPosition || rowIndex > originRowPosition + rowCount || HsMultiActiveCellEditor.getTargetEditor() == null) {
HsMultiActiveCellEditor.commit(true);
PositionCoordinate p = selectionLayer.getLastSelectedCellPosition();
if (!editor.isHorizontalLayout()) {
natTable.doCommand(new SelectCellCommand(selectionLayer, editor.getTgtColumnIndex(), p.rowPosition / 2 * 2, false, false));
} else {
if (p.columnPosition != editor.getSrcColumnIndex() && p.columnPosition != editor.getTgtColumnIndex()) {
p.columnPosition = editor.getTgtColumnIndex();
}
natTable.doCommand(new SelectCellCommand(selectionLayer, p.columnPosition, p.rowPosition, false, false));
}
HsMultiCellEditorControl.activeSourceAndTargetCell(editor);
StyledTextCellEditor cellEditor = HsMultiActiveCellEditor.getFocusCellEditor();
if (cellEditor != null && cellEditor.getCellType().equals(NatTableConstant.TARGET)) {
cellEditor.insertCanonicalValue(character);
}
}
} else if ((event.character == SWT.CR) && event.stateMask == SWT.NONE) {
HsMultiActiveCellEditor.commit(true);
SelectionLayer selectionLayer = LayerUtil.getLayer(natTable, SelectionLayer.class);
PositionCoordinate p = selectionLayer.getLastSelectedCellPosition();
XLIFFEditorImplWithNatTable editor = XLIFFEditorImplWithNatTable.getCurrent();
if (!editor.isHorizontalLayout()) {
natTable.doCommand(new SelectCellCommand(selectionLayer, editor.getTgtColumnIndex(), p.rowPosition / 2 * 2, false, false));
} else {
if (p.columnPosition != editor.getSrcColumnIndex() && p.columnPosition != editor.getTgtColumnIndex()) {
p.columnPosition = editor.getTgtColumnIndex();
}
natTable.doCommand(new SelectCellCommand(selectionLayer, p.columnPosition, p.rowPosition, false, false));
}
HsMultiCellEditorControl.activeSourceAndTargetCell(editor);
}
}
use of net.sourceforge.nattable.coordinate.PositionCoordinate in project translationstudio8 by heartsome.
the class HsMultiActiveCellEditor method activateCellEditors.
/**
* @param cellEditors
*/
public static void activateCellEditors(HsMultiCellEditor srcCellEditor, HsMultiCellEditor tgtCellEditor, NatTable natTable) {
parent = natTable;
sourceEditor = srcCellEditor;
sourceRowIndex = srcCellEditor.getRowIndex();
sourceRowPosition = srcCellEditor.getRowPosition();
targetEditor = tgtCellEditor;
targetRowIndex = tgtCellEditor.getRowIndex();
targetRowPosition = tgtCellEditor.getRowPosition();
sourceEditor.activeCurrentEditor(natTable);
targetEditor.activeCurrentEditor(natTable);
SelectionLayer sLayer = LayerUtil.getLayer(natTable, SelectionLayer.class);
PositionCoordinate p = sLayer.getLastSelectedCellPosition();
int colPosition = p.columnPosition;
if (colPosition == targetEditor.getColumnIndex()) {
targetEditor.forceFocus();
} else if (colPosition == sourceEditor.getColumnIndex()) {
sourceEditor.forceFocus();
}
}
Aggregations