/******************************************************************************* * Copyright (c) 2012, 2013 Original authors 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: * Original authors and others - initial API and implementation ******************************************************************************/ package org.eclipse.nebula.widgets.nattable.edit.command; import org.eclipse.nebula.widgets.nattable.command.AbstractContextFreeCommand; import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry; import org.eclipse.swt.widgets.Composite; /** * Command that will trigger activating the edit mode for the current selection. * The corresponding command handler is responsible for determining if * activation should proceed because of race conditions like e.g. the cell is * configured to be editable or another editor is active containing an invalid * data. */ public class EditSelectionCommand extends AbstractContextFreeCommand { /** * The {@link IConfigRegistry} containing the configuration of the current * NatTable instance the command should be executed for. * <p> * This is necessary because the edit controllers in the current * architecture are not aware of the instance they are running in. */ private final IConfigRegistry configRegistry; /** * The Character represented by the key that was typed in case this command * should be executed because of typing a letter or digit key. Can be * <code>null</code> if this command should be executed because of a pressed * control key (like F2) or a programmatical execution. */ private final Character character; /** * The parent Composite, needed for the creation of the editor control. */ private final Composite parent; /** * Flag to determine whether this command was triggered by traversal or not. */ private final boolean byTraversal; /** * @param parent * The parent Composite, needed for the creation of the editor * control. * @param configRegistry * The {@link IConfigRegistry} containing the configuration of * the current NatTable instance the command should be executed * for. This is necessary because the edit controllers in the * current architecture are not aware of the instance they are * running in. */ public EditSelectionCommand(Composite parent, IConfigRegistry configRegistry) { this(parent, configRegistry, null); } /** * @param parent * The parent Composite, needed for the creation of the editor * control. * @param configRegistry * The {@link IConfigRegistry} containing the configuration of * the current NatTable instance the command should be executed * for. This is necessary because the edit controllers in the * current architecture are not aware of the instance they are * running in. * @param character * The Character represented by the key that was typed in case * this command should be executed because of typing a letter or * digit key. Can be <code>null</code> if this command should be * executed because of a pressed control key (like F2) or a * programmatical execution. */ public EditSelectionCommand(Composite parent, IConfigRegistry configRegistry, Character character) { this(parent, configRegistry, character, false); } public EditSelectionCommand(Composite parent, IConfigRegistry configRegistry, boolean byTraversal) { this(parent, configRegistry, null, byTraversal); } public EditSelectionCommand(Composite parent, IConfigRegistry configRegistry, Character character, boolean byTraversal) { this.parent = parent; this.configRegistry = configRegistry; this.character = character; this.byTraversal = byTraversal; } /** * @return The {@link IConfigRegistry} containing the configuration of the * current NatTable instance the command should be executed for. */ public IConfigRegistry getConfigRegistry() { return this.configRegistry; } /** * @return The Character represented by the key that was typed in case this * command should be executed because of typing a letter or digit * key. Can be <code>null</code> if this command should be executed * because of a pressed control key (like F2) or a programmatical * execution. */ public Character getCharacter() { return this.character; } /** * @return The parent Composite, needed for the creation of the editor * control. */ public Composite getParent() { return this.parent; } /** * @return <code>true</code> if this command was triggered by traversal, * <code>false</code> if it was triggered otherwise (e.g. pressing * F2) */ public boolean isByTraversal() { return this.byTraversal; } }