| /* //device/tools/ddms/src/com/android/ddms/DropdownSelectionListener.java |
| ** |
| ** Copyright 2007, The Android Open Source Project |
| ** |
| ** Licensed under the Apache License, Version 2.0 (the "License"); |
| ** you may not use this file except in compliance with the License. |
| ** You may obtain a copy of the License at |
| ** |
| ** http://www.apache.org/licenses/LICENSE-2.0 |
| ** |
| ** Unless required by applicable law or agreed to in writing, software |
| ** distributed under the License is distributed on an "AS IS" BASIS, |
| ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| ** See the License for the specific language governing permissions and |
| ** limitations under the License. |
| */ |
| |
| package com.android.ddms; |
| |
| import com.android.ddmlib.Log; |
| |
| import org.eclipse.swt.SWT; |
| 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; |
| |
| /** |
| * Helper class for drop-down menus in toolbars. |
| */ |
| public class DropdownSelectionListener extends SelectionAdapter { |
| private Menu mMenu; |
| private ToolItem mDropdown; |
| |
| /** |
| * Basic constructor. Creates an empty Menu to hold items. |
| */ |
| public DropdownSelectionListener(ToolItem item) { |
| mDropdown = item; |
| mMenu = new Menu(item.getParent().getShell(), SWT.POP_UP); |
| } |
| |
| /** |
| * Add an item to the dropdown menu. |
| */ |
| public void add(String label) { |
| MenuItem item = new MenuItem(mMenu, SWT.NONE); |
| item.setText(label); |
| item.addSelectionListener(new SelectionAdapter() { |
| @Override |
| public void widgetSelected(SelectionEvent e) { |
| // update the dropdown's text to match the selection |
| MenuItem sel = (MenuItem) e.widget; |
| mDropdown.setText(sel.getText()); |
| } |
| }); |
| } |
| |
| /** |
| * Invoked when dropdown or neighboring arrow is clicked. |
| */ |
| @Override |
| public void widgetSelected(SelectionEvent e) { |
| if (e.detail == SWT.ARROW) { |
| // arrow clicked, show menu |
| ToolItem item = (ToolItem) e.widget; |
| Rectangle rect = item.getBounds(); |
| Point pt = item.getParent().toDisplay(new Point(rect.x, rect.y)); |
| mMenu.setLocation(pt.x, pt.y + rect.height); |
| mMenu.setVisible(true); |
| } else { |
| // button clicked |
| Log.d("ddms", mDropdown.getText() + " Pressed"); |
| } |
| } |
| } |
| |