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