/******************************************************************************* * 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.Map; import org.eclipse.jface.text.source.SourceViewer; import org.eclipse.swt.SWT; 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.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.ToolItem; import org.eclipse.swtbot.generator.ui.BotGeneratorEventDispatcher; import org.eclipse.swtbot.generator.jdt.editor.document.ClassDocument; public class MethodSelectionListener extends SelectionAdapter { private ToolItem dropdown; private Map<CTabItem, SourceViewer> tabViewer; private CTabFolder classTabFolder; private Menu menu; private ToolItem annotationsToolItem; public MethodSelectionListener(ToolItem dropdown, BotGeneratorEventDispatcher recorder, Map<CTabItem, SourceViewer> tabViewer, CTabFolder classTabFolder, ToolItem annotationsToolItem) { this.dropdown = dropdown; this.menu = new Menu(dropdown.getParent()); this.classTabFolder = classTabFolder; this.tabViewer = tabViewer; this.annotationsToolItem = annotationsToolItem; } public void add(String item) { MenuItem menuItem = new MenuItem(menu, SWT.NONE); menuItem.setText(item); menuItem.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent event) { MenuItem selected = (MenuItem) event.widget; dropdown.setText(selected.getText()); SourceViewer viewer = tabViewer.get(classTabFolder.getSelection()); ClassDocument doc = (ClassDocument) viewer.getDocument(); doc.setActiveMethod(selected.getText()); ((AnnotationSelectionListener)annotationsToolItem.getData()).update(); viewer.setTopIndex(((ClassDocument) viewer.getDocument()).getLastOffset()-4); } }); dropdown.setText(item); SourceViewer viewer = tabViewer.get(classTabFolder.getSelection()); ClassDocument doc = (ClassDocument) viewer.getDocument(); doc.setActiveMethod(menuItem.getText()); ((AnnotationSelectionListener)annotationsToolItem.getData()).update(); } public void widgetSelected(SelectionEvent event) { if (event.detail == SWT.ARROW) { ToolItem item = (ToolItem) event.widget; Rectangle rect = item.getBounds(); Point pt = item.getParent().toDisplay(new Point(rect.x, rect.y)); menu.setLocation(pt.x, pt.y + rect.height); menu.setVisible(true); } } }