Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/PopupList.java')
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/PopupList.java274
1 files changed, 0 insertions, 274 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/PopupList.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/PopupList.java
deleted file mode 100755
index c3bb6f073d..0000000000
--- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/PopupList.java
+++ /dev/null
@@ -1,274 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * 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:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.swt.custom;
-
-import org.eclipse.swt.*;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.widgets.*;
-
-/**
-* A PopupList is a list of selectable items that appears in its own shell positioned above
-* its parent shell. It is used for selecting items when editing a Table cell (similar to the
-* list that appears when you open a Combo box).
-*
-* The list will be positioned so that it does not run off the screen and the largest number of items
-* are visible. It may appear above the current cursor location or below it depending how close you
-* are to the edge of the screen.
-*
-* @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a>
-*/
-public class PopupList {
- Shell shell;
- List list;
- int minimumWidth;
-/**
-* Creates a PopupList above the specified shell.
-*
-* @param parent a Shell control which will be the parent of the new instance (cannot be null)
-*/
-public PopupList(Shell parent) {
- this (parent, 0);
-}
-/**
-* Creates a PopupList above the specified shell.
-*
-* @param parent a widget which will be the parent of the new instance (cannot be null)
-* @param style the style of widget to construct
-*
-* @since 3.0
-*/
-public PopupList(Shell parent, int style) {
- shell = new Shell(parent, checkStyle(style));
-
- list = new List(shell, SWT.SINGLE | SWT.V_SCROLL);
-
- // close dialog if user selects outside of the shell
- shell.addListener(SWT.Deactivate, new Listener() {
- public void handleEvent(Event e){
- shell.setVisible (false);
- }
- });
-
- // resize shell when list resizes
- shell.addControlListener(new ControlListener() {
- public void controlMoved(ControlEvent e){}
- public void controlResized(ControlEvent e){
- Rectangle shellSize = shell.getClientArea();
- list.setSize(shellSize.width, shellSize.height);
- }
- });
-
- // return list selection on Mouse Up or Carriage Return
- list.addMouseListener(new MouseListener() {
- public void mouseDoubleClick(MouseEvent e){}
- public void mouseDown(MouseEvent e){}
- public void mouseUp(MouseEvent e){
- shell.setVisible (false);
- }
- });
- list.addKeyListener(new KeyListener() {
- public void keyReleased(KeyEvent e){}
- public void keyPressed(KeyEvent e){
- if (e.character == '\r'){
- shell.setVisible (false);
- }
- }
- });
-
-}
-private static int checkStyle (int style) {
- int mask = SWT.LEFT_TO_RIGHT | SWT.RIGHT_TO_LEFT;
- return style & mask;
-}
-/**
-* Gets the widget font.
-* <p>
-* @return the widget font
-*
-* @exception SWTException <ul>
-* <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
-* <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
-* </ul>
-*/
-public Font getFont () {
- return list.getFont();
-}
-/**
-* Gets the items.
-* <p>
-* This operation will fail if the items cannot
-* be queried from the OS.
-*
-* @return the items in the widget
-*
-* @exception SWTException <ul>
-* <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
-* <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
-* </ul>
-*/
-public String[] getItems () {
- return list.getItems();
-}
-/**
-* Gets the minimum width of the list.
-*
-* @return the minimum width of the list
-*/
-public int getMinimumWidth () {
- return minimumWidth;
-}
-/**
-* Launches the Popup List, waits for an item to be selected and then closes the PopupList.
-*
-* @param rect the initial size and location of the PopupList; the dialog will be
-* positioned so that it does not run off the screen and the largest number of items are visible
-*
-* @return the text of the selected item or null if no item is selected
-*/
-public String open (Rectangle rect) {
-
- Point listSize = list.computeSize (rect.width, SWT.DEFAULT, false);
- Rectangle screenSize = shell.getDisplay().getBounds();
-
- // Position the dialog so that it does not run off the screen and the largest number of items are visible
- int spaceBelow = screenSize.height - (rect.y + rect.height) - 30;
- int spaceAbove = rect.y - 30;
-
- int y = 0;
- if (spaceAbove > spaceBelow && listSize.y > spaceBelow) {
- // place popup list above table cell
- if (listSize.y > spaceAbove){
- listSize.y = spaceAbove;
- } else {
- listSize.y += 2;
- }
- y = rect.y - listSize.y;
-
- } else {
- // place popup list below table cell
- if (listSize.y > spaceBelow){
- listSize.y = spaceBelow;
- } else {
- listSize.y += 2;
- }
- y = rect.y + rect.height;
- }
-
- // Make dialog as wide as the cell
- listSize.x = rect.width;
- // dialog width should not be less than minimumWidth
- if (listSize.x < minimumWidth)
- listSize.x = minimumWidth;
-
- // Align right side of dialog with right side of cell
- int x = rect.x + rect.width - listSize.x;
-
- shell.setBounds(x, y, listSize.x, listSize.y);
-
- shell.open();
- list.setFocus();
-
- Display display = shell.getDisplay();
- while (!shell.isDisposed () && shell.isVisible ()) {
- if (!display.readAndDispatch()) display.sleep();
- }
-
- String result = null;
- if (!shell.isDisposed ()) {
- String [] strings = list.getSelection ();
- shell.dispose();
- if (strings.length != 0) result = strings [0];
- }
- return result;
-}
-/**
-* Selects an item with text that starts with specified String.
-* <p>
-* If the item is not currently selected, it is selected.
-* If the item at an index is selected, it remains selected.
-* If the string is not matched, it is ignored.
-*
-* @param string the text of the item
-*
-* @exception SWTException <ul>
-* <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
-* <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
-* </ul>
-*/
-public void select(String string) {
- String[] items = list.getItems();
-
- // find the first entry in the list that starts with the
- // specified string
- if (string != null){
- for (int i = 0; i < items.length; i++) {
- if (items[i].startsWith(string)){
- int index = list.indexOf(items[i]);
- list.select(index);
- break;
- }
- }
- }
-}
-/**
-* Sets the widget font.
-* <p>
-* When new font is null, the font reverts
-* to the default system font for the widget.
-*
-* @param font the new font (or null)
-*
-* @exception SWTException <ul>
-* <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
-* <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
-* </ul>
-*/
-public void setFont (Font font) {
- list.setFont(font);
-}
-/**
-* Sets all items.
-* <p>
-* The previous selection is cleared.
-* The previous items are deleted.
-* The new items are added.
-* The top index is set to 0.
-*
-* @param strings the array of items
-*
-* This operation will fail when an item is null
-* or could not be added in the OS.
-*
-* @exception IllegalArgumentException <ul>
-* <li>ERROR_NULL_ARGUMENT - if the items array is null</li>
-* <li>ERROR_INVALID_ARGUMENT - if an item in the items array is null</li>
-* </ul>
-* @exception SWTException <ul>
-* <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
-* <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
-* </ul>
-*/
-public void setItems (String[] strings) {
- list.setItems(strings);
-}
-/**
-* Sets the minimum width of the list.
-*
-* @param width the minimum width of the list
-*/
-public void setMinimumWidth (int width) {
- if (width < 0)
- SWT.error(SWT.ERROR_INVALID_ARGUMENT);
-
- minimumWidth = width;
-}
-}

Back to the top