/*
* Copyright 2015 Nokia Solutions and Networks
* Licensed under the Apache License, Version 2.0,
* see license.txt file for details.
*/
package org.robotframework.ide.eclipse.main.plugin.tableeditor.settings;
import java.util.List;
import org.eclipse.nebula.widgets.nattable.data.IColumnPropertyAccessor;
import org.robotframework.ide.eclipse.main.plugin.model.RobotKeywordCall;
import org.robotframework.ide.eclipse.main.plugin.model.cmd.SetKeywordCallCommentCommand;
import org.robotframework.ide.eclipse.main.plugin.model.cmd.settings.SetSettingArgumentCommand;
import org.robotframework.ide.eclipse.main.plugin.tableeditor.RobotEditorCommandsStack;
import com.google.common.collect.ImmutableBiMap;
public class ImportSettingsColumnsPropertyAccessor implements IColumnPropertyAccessor<RobotKeywordCall> {
private static ImmutableBiMap<Integer, String> properties = ImmutableBiMap.of(0, "name", 1, "value");
private final RobotEditorCommandsStack commandsStack;
private int numberOfColumns;
public ImportSettingsColumnsPropertyAccessor(final RobotEditorCommandsStack commandsStack, final int numberOfColumns) {
this.commandsStack = commandsStack;
this.numberOfColumns = numberOfColumns;
}
@Override
public Object getDataValue(RobotKeywordCall rowObject, int columnIndex) {
final List<String> arguments = rowObject.getArguments();
if (columnIndex == 0) {
return rowObject.getName();
} else if (columnIndex == numberOfColumns - 1) {
return rowObject.getComment();
} else if (columnIndex <= arguments.size()) {
return arguments.get(columnIndex - 1);
}
return "";
}
@Override
public void setDataValue(RobotKeywordCall rowObject, int columnIndex, Object newValue) {
if (columnIndex > 0 && columnIndex < (numberOfColumns - 1)) {
commandsStack.execute(new SetSettingArgumentCommand(rowObject, columnIndex - 1, (String) newValue));
} else if (columnIndex == (numberOfColumns - 1)) {
commandsStack.execute(new SetKeywordCallCommentCommand(rowObject, (String) newValue));
}
}
@Override
public int getColumnCount() {
return numberOfColumns;
}
@Override
public String getColumnProperty(int columnIndex) {
String property = properties.get(columnIndex);
return property;
}
@Override
public int getColumnIndex(String propertyName) {
return properties.inverse().get(propertyName);
}
public void setNumberOfColumns(int numberOfColumns) {
this.numberOfColumns = numberOfColumns;
}
}