/* * Copyright 2016 Nokia Solutions and Networks * Licensed under the Apache License, Version 2.0, * see license.txt file for details. */ package org.robotframework.red.nattable.edit; import java.util.List; import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry; import org.eclipse.nebula.widgets.nattable.edit.editor.AbstractCellEditor; import org.eclipse.nebula.widgets.nattable.edit.editor.IEditErrorHandler; import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer.MoveDirectionEnum; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.robotframework.red.nattable.NewElementsCreator; /** * @author Michal Anglart * */ public class AlwaysDeactivatingCellEditor extends AbstractCellEditor { private final NewElementsCreator<?> creator; private Canvas canvas; public <T> AlwaysDeactivatingCellEditor(final NewElementsCreator<T> creator) { this.creator = creator; } @Override public boolean supportMultiEdit(final IConfigRegistry configRegistry, final List<String> configLabels) { return false; } @Override public Object getCanonicalValue(final IEditErrorHandler conversionErrorHandler) { return getEditorValue(); } @Override public Object getEditorValue() { return creator.createNew(getRowIndex()); } @Override public void setEditorValue(final Object value) { // no editor, so nothing to do } @Override public Control createEditorControl(final Composite parent) { return new Canvas(parent, SWT.NONE); } @Override public Control getEditorControl() { return canvas; } @Override protected Control activateCell(final Composite parent, final Object originalCanonicalValue) { this.canvas = (Canvas) createEditorControl(parent); commit(MoveDirectionEnum.NONE); return canvas; } }