155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project/* //device/tools/ddms/src/com/android/ddms/DropdownSelectionListener.java 255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project** 355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project** Copyright 2007, The Android Open Source Project 455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project** 555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License"); 655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project** you may not use this file except in compliance with the License. 755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project** You may obtain a copy of the License at 855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project** 955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project** http://www.apache.org/licenses/LICENSE-2.0 1055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project** 1155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project** Unless required by applicable law or agreed to in writing, software 1255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project** distributed under the License is distributed on an "AS IS" BASIS, 1355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project** See the License for the specific language governing permissions and 1555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project** limitations under the License. 1655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project*/ 1755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 1855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectpackage com.android.ddms; 1955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 2055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport com.android.ddmlib.Log; 2155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 2255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.swt.SWT; 2355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.swt.events.SelectionAdapter; 2455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.swt.events.SelectionEvent; 2555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.swt.graphics.Point; 2655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.swt.graphics.Rectangle; 2755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.swt.widgets.Menu; 2855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.swt.widgets.MenuItem; 2955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.swt.widgets.ToolItem; 3055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 3155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project/** 3255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Helper class for drop-down menus in toolbars. 3355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project */ 3455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectpublic class DropdownSelectionListener extends SelectionAdapter { 3555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project private Menu mMenu; 3655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project private ToolItem mDropdown; 3755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 3855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project /** 3955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Basic constructor. Creates an empty Menu to hold items. 4055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project */ 4155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project public DropdownSelectionListener(ToolItem item) { 4255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project mDropdown = item; 4355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project mMenu = new Menu(item.getParent().getShell(), SWT.POP_UP); 4455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 4555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 4655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project /** 4755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Add an item to the dropdown menu. 4855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project */ 4955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project public void add(String label) { 5055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project MenuItem item = new MenuItem(mMenu, SWT.NONE); 5155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project item.setText(label); 5255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project item.addSelectionListener(new SelectionAdapter() { 5355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project @Override 5455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project public void widgetSelected(SelectionEvent e) { 5555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project // update the dropdown's text to match the selection 5655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project MenuItem sel = (MenuItem) e.widget; 5755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project mDropdown.setText(sel.getText()); 5855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 5955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project }); 6055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 6155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 6255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project /** 6355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Invoked when dropdown or neighboring arrow is clicked. 6455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project */ 6555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project @Override 6655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project public void widgetSelected(SelectionEvent e) { 6755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project if (e.detail == SWT.ARROW) { 6855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project // arrow clicked, show menu 6955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project ToolItem item = (ToolItem) e.widget; 7055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project Rectangle rect = item.getBounds(); 7155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project Point pt = item.getParent().toDisplay(new Point(rect.x, rect.y)); 7255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project mMenu.setLocation(pt.x, pt.y + rect.height); 7355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project mMenu.setVisible(true); 7455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } else { 7555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project // button clicked 767ab724a2d101fb390a2622c3f0c90405c91f78fbXavier Ducrohet Log.d("ddms", mDropdown.getText() + " Pressed"); 7755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 7855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 7955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project} 8055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 81