/******************************************************************************* * Copyright (c) 2012 Red Hat Inc.. * 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: * Rastislav Wagner (Red Hat) *******************************************************************************/ package org.eclipse.swtbot.generator.jdt.editor.listener; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.eclipse.jface.text.source.SourceViewer; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.ToolItem; import org.eclipse.swtbot.generator.framework.AnnotationRule; import org.eclipse.swtbot.generator.ui.BotGeneratorEventDispatcher; import org.eclipse.swtbot.generator.jdt.editor.document.ClassDocument; public class ClassAnnotationSelectionListener extends AbstractAnnotationSelectionListener { public ClassAnnotationSelectionListener(ToolItem dropdown, BotGeneratorEventDispatcher recorder, Map<CTabItem, SourceViewer> tabViewer, CTabFolder classTabFolder) { super(dropdown,recorder,tabViewer,classTabFolder); } @Override protected List<AnnotationRule> filterRules(List<AnnotationRule> items) { List<AnnotationRule> classAnnotations = new ArrayList<AnnotationRule>(); for(AnnotationRule item: items){ if(item.isClassAnnotation()){ classAnnotations.add(item); } } return classAnnotations; } @Override protected SelectionAdapter getSelectionAdapter(final MenuItem menuItem) { return new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent event) { MenuItem selected = (MenuItem) event.widget; SourceViewer viewer = tabViewer.get(classTabFolder.getSelection()); ClassDocument doc = (ClassDocument) viewer.getDocument(); if (selected.getSelection()) { doc.addClassAnnotation((AnnotationRule) menuItem.getData()); } else { doc.removeClassAnnotation((AnnotationRule) menuItem.getData()); } update(); } }; } @Override protected boolean checkDocAnnotation(ClassDocument doc, MenuItem i) { return doc.getClassAnnotations().contains(i.getData()); } }