/* * 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.model; import static com.google.common.collect.Lists.newArrayList; import java.util.List; import org.rf.ide.core.testdata.model.table.KeywordTable; import org.rf.ide.core.testdata.model.table.keywords.UserKeyword; public class RobotKeywordsSection extends RobotSuiteFileSection { public static final String SECTION_NAME = "Keywords"; RobotKeywordsSection(final RobotSuiteFile parent, final KeywordTable keywordTable) { super(parent, SECTION_NAME, keywordTable); } @Override public void link() { final KeywordTable keywordsTable = getLinkedElement(); for (final UserKeyword keyword : keywordsTable.getKeywords()) { final RobotKeywordDefinition definition = new RobotKeywordDefinition(this, keyword); definition.link(); elements.add(definition); } } @Override public KeywordTable getLinkedElement() { return (KeywordTable) super.getLinkedElement(); } @SuppressWarnings("unchecked") @Override public List<RobotKeywordDefinition> getChildren() { return (List<RobotKeywordDefinition>) super.getChildren(); } public RobotKeywordDefinition createKeywordDefinition(final String name) { return createKeywordDefinition(getChildren().size(), name); } public RobotKeywordDefinition createKeywordDefinition(final int index, final String name) { final RobotKeywordDefinition keywordDefinition; final KeywordTable keywordsTable = getLinkedElement(); if(index >= 0 && index < keywordsTable.getKeywords().size() && index < getChildren().size()) { keywordDefinition = new RobotKeywordDefinition(this, keywordsTable.createUserKeyword(name, index)); elements.add(index, keywordDefinition); } else { keywordDefinition = new RobotKeywordDefinition(this, keywordsTable.createUserKeyword(name)); elements.add(keywordDefinition); } return keywordDefinition; } List<RobotKeywordDefinition> getUserDefinedKeywords() { final List<RobotKeywordDefinition> userKeywords = newArrayList(); for (final RobotElement child : getChildren()) { userKeywords.add((RobotKeywordDefinition) child); } return userKeywords; } }