[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.platform.swt] Re: How to let Popup Shell show up at the given location
|
Note that you can use the x and y coordinates in the event if you like -
it's just that you have to map them to display coordinates before popping up
your shell.
For example, in Snippet233 that Stuart pointed you to (under "Shell" on the
http://www.eclipse.org/swt/snippets/ page), you can also change the line
that uses the point using getCursorLocation() to the following:
Point pt = display.map(shell, null, new Point(e.x, e.y));
which maps e.x and e.y to Display coordinates.
Hope this also helps,
Carolyn
"Stuart Pond" <Stuart.Pond@xxxxxxx> wrote in message
news:fsdag6$rle$1@xxxxxxxxxxxxxxxxxxxx
> How about trying the snippet that is on SWT snippet site. Note they are
> using Display.getCursorLocation().
>
> public class Snippet233 {
> public static void main (String [] args) {
> final Display display = new Display ();
> final Shell shell = new Shell (display);
> shell.setText ("Parent Shell");
> shell.addMouseListener (new MouseAdapter() {
> public void mouseDown (MouseEvent e) {
> Shell dialog = new Shell (shell, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
> Point pt = display.getCursorLocation ();
> dialog.setLocation (pt.x, pt.y);
> dialog.setText ("Dialog Shell");
> dialog.setSize (100, 100);
> dialog.open ();
> }});
> shell.setSize (400, 400);
> shell.open ();
> while (!shell.isDisposed ()) {
> if (!display.readAndDispatch ()) display.sleep ();
> }
> display.dispose ();
> }
> }
>
>
> "Hongying Zhang" <hongying.zhang@xxxxxxx> wrote in message
> news:fsc3m1$vuj$1@xxxxxxxxxxxxxxxxxxxx
>> Hello,
>>
>> I need create a pupup shell that when a widget is clicked that popup
>> shell can open at the Mouse location. I tried to call setLocation, but it
>> doesn't work. the popup shell always show up at the top right corner at
>> my desktop.
>>
>> Can someone please what I should change to let the popup shell show up in
>> the correct location? Please see the snippet to reproduce the problem.
>>
>> Thanks,
>> Hongying Zhang
>>
>>
>>
>> import org.eclipse.swt.SWT;
>> import org.eclipse.swt.events.MouseAdapter;
>> import org.eclipse.swt.events.MouseEvent;
>> import org.eclipse.swt.layout.GridLayout;
>> import org.eclipse.swt.layout.RowLayout;
>> import org.eclipse.swt.widgets.Button;
>> import org.eclipse.swt.widgets.Display;
>> import org.eclipse.swt.widgets.Label;
>> import org.eclipse.swt.widgets.Shell;
>>
>> public class testpopupShell {
>> public static void main (String [] args) {
>> Display display = new Display ();
>> final Shell shell = new Shell (display);
>>
>> Button ok = new Button (shell, SWT.PUSH);
>> ok.setText ("Show Popup Shell");
>> ok.addMouseListener( new MouseAdapter() {
>> @Override
>> public void mouseUp(MouseEvent evt) {
>> int style = SWT.NONE | SWT.BORDER | SWT.ON_TOP ;
>> final Shell popup = new Shell ( shell, style );
>> popup.setLayout( new GridLayout() );
>> Label label = new Label( popup, SWT.NONE );
>> label.setText("Pop up shell" );
>>
>> Button b = new Button( popup, SWT.PUSH );
>> b.setText("Push to Close Shell");
>> b.addMouseListener( new MouseAdapter() {
>> @Override
>> public void mouseUp(MouseEvent evt) {
>> popup.close();
>> }
>> });
>>
>> popup.setLocation( evt.x, evt.y );
>> popup.setSize(120, 100);
>> popup.open();
>> }
>> });
>>
>> shell.setLayout (new RowLayout ());
>> shell.pack ();
>> shell.open ();
>> while (!shell.isDisposed ()) {
>> if (!display.readAndDispatch ()) display.sleep ();
>> }
>> display.dispose ();
>> }
>> }
>
>