/*
* Copyright 2016 Nokia Solutions and Networks
* Licensed under the Apache License, Version 2.0,
* see license.txt file for details.
*/
package org.rf.ide.core.testdata.model.presenter.update.settings;
import java.util.List;
import org.rf.ide.core.testdata.model.AModelElement;
import org.rf.ide.core.testdata.model.ModelType;
import org.rf.ide.core.testdata.model.presenter.DocumentationServiceHandler;
import org.rf.ide.core.testdata.model.presenter.update.ISettingTableElementOperation;
import org.rf.ide.core.testdata.model.table.SettingTable;
import org.rf.ide.core.testdata.model.table.setting.SuiteDocumentation;
import org.rf.ide.core.testdata.text.read.IRobotTokenType;
import org.rf.ide.core.testdata.text.read.recognizer.RobotTokenType;
import com.google.common.base.Joiner;
public class DocumentationModelOperation implements ISettingTableElementOperation {
@Override
public boolean isApplicable(final IRobotTokenType elementType) {
return (elementType == RobotTokenType.SETTING_DOCUMENTATION_DECLARATION);
}
@Override
public boolean isApplicable(final ModelType elementType) {
return (elementType == ModelType.SUITE_DOCUMENTATION);
}
@Override
public AModelElement<?> create(final SettingTable settingsTable, final int tableIndex, final List<String> args,
final String comment) {
final SuiteDocumentation newSuiteDocumentation = settingsTable.newSuiteDocumentation();
DocumentationServiceHandler.update(newSuiteDocumentation, Joiner.on(' ').join(args));
if (comment != null && !comment.isEmpty()) {
newSuiteDocumentation.setComment(comment);
}
return newSuiteDocumentation;
}
@Override
public void insert(final SettingTable settingsTable, final int index, final AModelElement<?> modelElement) {
settingsTable.addDocumentation((SuiteDocumentation) modelElement);
}
@Override
public void update(final AModelElement<?> modelElement, final int index, final String value) {
final SuiteDocumentation suiteDocumentation = (SuiteDocumentation) modelElement;
DocumentationServiceHandler.update(suiteDocumentation, value);
}
@Override
public void remove(final SettingTable settingsTable, final AModelElement<?> modelElements) {
settingsTable.removeDocumentation();
}
}