在eclipse中获取对话框的输入字段

时间:2014-04-21 22:06:15

标签: java eclipse eclipse-plugin dialog title

对于我的插件,我尝试使用以下行来获取活动的Eclipse对话框:

String shellTitle = Display.getCurrent().getActiveShell().getTitle();
System.out.println("Opened dialog: " + shellTitle);

如果是我打开搜索对话框,这些行打印我

Opened dialog: Search

在我的控制台中。但我还想在搜索字段中打印关键字,例如

Opened dialog: Search (with the search word 'ChatSession')

我已经阅读了API参考,在那里,我只能找到getTitle()和其他一些获取边界的方法等等。

我的想法是否可以实现?如果没有,这些所谓的扩展点是否可以实现?我从未使用它们但听说过它们。

1 个答案:

答案 0 :(得分:0)

你的问题中的错误:

  1. 您正在Shell数组对象上调用getTitle()方法。这是错误的。
  2. 您正在混合对话框和Shell
  3. 假设你在谈论壳牌。您可以使用以下代码获取活动Shell上的控件。

    import org.eclipse.swt.SWT;
    import org.eclipse.swt.events.SelectionEvent;
    import org.eclipse.swt.events.SelectionListener;
    import org.eclipse.swt.layout.FillLayout;
    import org.eclipse.swt.widgets.Button;
    import org.eclipse.swt.widgets.Control;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Label;
    import org.eclipse.swt.widgets.Shell;
    import org.eclipse.swt.widgets.Text;
    
    public class ShellControlsGetting {
        public static void main(String[] args) {
            Display display = new Display();
            final Shell shell = new Shell(display);
            shell.setLayout(new FillLayout());
            Button button = new Button(shell, SWT.PUSH);
            button.setText("Open 3 Shells");
            final Shell[] shells = new Shell[3];
            button.addSelectionListener(new SelectionListener() {
    
                @Override
                public void widgetSelected(SelectionEvent e) {
                    for (int i = 0; i < 3; i++) {
                        shells[i] = new Shell(shell);
                        shells[i].setText("Shell" + (i + 1));
                        shells[i].setLayout(new FillLayout());
                        shells[i].setSize(250, 50);
                        shells[i].setLocation(100, 200 + (i + 1) * 100);
    
                        Label label = new Label(shells[i], SWT.LEFT);
                        label.setText("Search Box" + (i + 1));
    
                        Text search = new Text(shells[i], SWT.SINGLE | SWT.BORDER);
                        search.setText("search key" + (i + 1));
                        shells[i].open();
                    }
    
                    Shell currentActiveShell = Display.getCurrent().getActiveShell();
                    String shellTitle = currentActiveShell.getText();
    
                    Control[] children = currentActiveShell.getChildren();
                    for (int i = 0; i < children.length; i++) {
                        Control child = children[i];
                        if (child instanceof Text) {
                            System.out.println("Opened dialog: " + shellTitle + "(with the search word '" + ((Text)child).getText()
                                    + "')");
                        }
                    }
                }
    
                @Override
                public void widgetDefaultSelected(SelectionEvent e) {
    
                }
            });
    
            shell.pack();
            shell.open();
            while (!shell.isDisposed()) {
                if (!display.readAndDispatch()) {
                    display.sleep();
                }
            }
            display.dispose();
        }
    }
    

    如果这不能回答您的问题,请编辑您的帖子添加一些代码并澄清您的期望。