Eclipse plugin 实现启动器框架-禁用对话框上的应用按钮

Eclipse plugin 实现启动器框架-禁用对话框上的应用按钮,eclipse-plugin,eclipse-rcp,Eclipse Plugin,Eclipse Rcp,我正在开发一个eclipse插件,并根据链接实现一个自定义启动器 我已经实现了一个类BrowsersTab,它扩展了AbstractLaunchConfigurationTab并实现了所有的方法。问题是当我调用UpdateLanchConfigurationDialog()时;在选择事件中,“应用”按钮保持禁用状态 代码: public class BrowsersTab extends AbstractLaunchConfigurationTab { private Button

我正在开发一个eclipse插件,并根据链接实现一个自定义启动器

我已经实现了一个类BrowsersTab,它扩展了AbstractLaunchConfigurationTab并实现了所有的方法。问题是当我调用UpdateLanchConfigurationDialog()时;在选择事件中,“应用”按钮保持禁用状态

代码:

public class BrowsersTab extends AbstractLaunchConfigurationTab  {

    private Button chrome;
    private Button firefox;
    private Button safari;
    private Button ie;
    private Button opera;
    private Button android;
    private Button ios;



    @Override
    public void createControl(Composite parent) {

        Composite comp = new Composite(parent, SWT.NONE);
        setControl(comp);

        GridLayout topLayout = new GridLayout();
        comp.setLayout(topLayout);


        Group fGroup = new Group(comp, SWT.NONE);

        fGroup.setFont(parent.getFont());
        fGroup.setLayout(new GridLayout(2, true));
        fGroup.setText(DialogMessages.browserSelection);
        chrome = new Button(fGroup, SWT.CHECK);
        chrome.setText("Google Chrome");

        chrome.addSelectionListener(new SelectionListener() {

            public void widgetSelected(SelectionEvent e) {
                System.out.println("chrome selected");
                updateLaunchConfigurationDialog();
            }

            public void widgetDefaultSelected(SelectionEvent e) {
                // TODO Auto-generated method stub

            }
        });

        Image chromeIcon= getBrowserIcon("chrome-browser-24X24.png");
        if(null!=chromeIcon)
        chrome.setImage(chromeIcon);

        Combo comboDropDown = new Combo(fGroup, SWT.DROP_DOWN | SWT.BORDER);
        comboDropDown.setText("Version");


        firefox = new Button(fGroup, SWT.CHECK);
        firefox.setText("Mozilla Firefox");

        Image firefoxIcon= getBrowserIcon("Firefox-icon.png");
        if(null!=firefoxIcon)
            firefox.setImage(firefoxIcon);

        comboDropDown = new Combo(fGroup, SWT.DROP_DOWN | SWT.BORDER);
        comboDropDown.setText("Version");


        safari = new Button(fGroup, SWT.CHECK);
        safari.setText("Apple Safari");

        Image safariIcon= getBrowserIcon("Safari-icon.png");
        if(null!=safariIcon)
            safari.setImage(safariIcon);

        comboDropDown = new Combo(fGroup, SWT.DROP_DOWN | SWT.BORDER);
        comboDropDown.setText("Version");

        ie = new Button(fGroup, SWT.CHECK);
        ie.setText("Internet Explorer");

        Image ieIcon= getBrowserIcon("Internet-Explorer-icon.png");
        if(null!=ieIcon)
            ie.setImage(ieIcon);

        comboDropDown = new Combo(fGroup, SWT.DROP_DOWN | SWT.BORDER);
        comboDropDown.setText("Version");

        opera= new Button(fGroup, SWT.CHECK);
        opera.setText("Opera");

        Image operaIcon= getBrowserIcon("browser-opera-icon.png");
        if(null!=operaIcon)
            opera.setImage(operaIcon);

        comboDropDown = new Combo(fGroup, SWT.DROP_DOWN | SWT.BORDER);
        comboDropDown.setText("Version");

        android= new Button(fGroup, SWT.CHECK);
        android.setText("Android");

        Image androidIcon= getBrowserIcon("android-platform-icon.png");
        if(null!=androidIcon)
            android.setImage(androidIcon);

        comboDropDown = new Combo(fGroup, SWT.DROP_DOWN | SWT.BORDER);
        comboDropDown.setText("Version");

        ios= new Button(fGroup, SWT.CHECK);
        ios.setText("Mobile Safari");

        Image iosIcon= getBrowserIcon("Apple-grey-icon.png");
        if(null!=iosIcon)
            ios.setImage(iosIcon);

        comboDropDown = new Combo(fGroup, SWT.DROP_DOWN | SWT.BORDER);
        comboDropDown.setText("Version");



    }

    @Override
    public String getName() {
        return "Browsers";
    }

    public Image getBrowserIcon(String name){
        Image icon=null;
        try {
            icon = AbstractUIPlugin.imageDescriptorFromPlugin("SuitACore","icons/"+name).createImage();

        } catch (Exception e) {
            // Swallow it; we'll do without images
        }
        return icon;
    }

    public Image getImage() {
        Image tab=null;
        try {
            tab = AbstractUIPlugin.imageDescriptorFromPlugin("SuitACore","icons/browser.png").createImage();

        } catch (Exception e) {
            // Swallow it; we'll do without images
        }
        return tab;
    }


    public void initializeFrom(ILaunchConfiguration configuration) {
        try {
            List<String> browsersDefaults = new ArrayList<String>();
            browsersDefaults.add("chrome");
            List<String> browsers =configuration.getAttribute("browsers", browsersDefaults);
        } catch (CoreException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        chrome.setSelection(true);
    }


    public void performApply(ILaunchConfigurationWorkingCopy configuration) {
        List<String> browsers = new ArrayList<String>();
        browsers.add("chrome");
        configuration.setAttribute("browser",browsers );
    }


    public void setDefaults(ILaunchConfigurationWorkingCopy arg0) {

    }

}
公共类浏览器Stab扩展了AbstractLaunchConfigurationTab{
私人按钮铬;
私有按钮firefox;
私人按钮旅行;
私人按钮;
私人按钮歌剧;
私有按钮安卓;
私人按钮操作系统;
@凌驾
公共void createControl(复合父级){
复合复合材料=新复合材料(母体,SWT.NONE);
setControl(comp);
GridLayout topLayout=新建GridLayout();
组件设置布局(顶部布局);
组F组=新组(公司,SWT.无);
fGroup.setFont(parent.getFont());
setLayout(新的GridLayout(2,true));
fGroup.setText(DialogMessages.browserSelection);
chrome=新按钮(F组,SWT.检查);
chrome.setText(“谷歌浏览器”);
chrome.addSelectionListener(新的SelectionListener(){
公共无效WidgeSelected(SelectionEvent e){
System.out.println(“选择铬合金”);
UpdateLanchConfigurationDialog();
}
公共无效widgetDefaultSelected(SelectionEvent e){
//TODO自动生成的方法存根
}
});
图像chromeIcon=getBrowserIcon(“chrome-browser-24X24.png”);
如果(空!=色度)
chrome.setImage(chromeIcon);
Combo comboDropDown=新组合(fGroup,SWT.DROP|u DOWN | SWT.BORDER);
comboDropDown.setText(“版本”);
firefox=新建按钮(fGroup,SWT.CHECK);
setText(“Mozilla firefox”);
Image firefoxIcon=getBrowserIcon(“Firefox icon.png”);
如果(null!=firefoxIcon)
setImage(firefoxIcon);
comboDropDown=新组合(fGroup,SWT.DROP|u DOWN | SWT.BORDER);
comboDropDown.setText(“版本”);
safari=新建按钮(fGroup,SWT.CHECK);
safari.setText(“苹果safari”);
Image safariIcon=getBrowserIcon(“Safari icon.png”);
如果(空!=Safaricon)
safari.setImage(Safaricon);
comboDropDown=新组合(fGroup,SWT.DROP|u DOWN | SWT.BORDER);
comboDropDown.setText(“版本”);
ie=新按钮(F组,SWT.检查);
ie.setText(“Internet Explorer”);
Image ieIcon=getBrowserIcon(“internetexplorer icon.png”);
如果(null!=ieIcon)
ie.setImage(ieIcon);
comboDropDown=新组合(fGroup,SWT.DROP|u DOWN | SWT.BORDER);
comboDropDown.setText(“版本”);
opera=新建按钮(fGroup,SWT.CHECK);
opera.setText(“opera”);
Image operaIcon=getBrowserIcon(“browser opera icon.png”);
如果(空!=操作)
歌剧集图像(歌剧);
comboDropDown=新组合(fGroup,SWT.DROP|u DOWN | SWT.BORDER);
comboDropDown.setText(“版本”);
安卓=新建按钮(fGroup,SWT.CHECK);
android.setText(“android”);
Image androidIcon=getBrowserIcon(“android platform icon.png”);
if(null!=androidIcon)
setImage(androidIcon);
comboDropDown=新组合(fGroup,SWT.DROP|u DOWN | SWT.BORDER);
comboDropDown.setText(“版本”);
ios=新建按钮(F组,SWT.CHECK);
ios.setText(“移动Safari”);
Image iosIcon=getBrowserIcon(“Apple grey icon.png”);
if(null!=iosIcon)
ios.setImage(iosIcon);
comboDropDown=新组合(fGroup,SWT.DROP|u DOWN | SWT.BORDER);
comboDropDown.setText(“版本”);
}
@凌驾
公共字符串getName(){
返回“浏览器”;
}
公共映像getBrowserIcon(字符串名称){
图像图标=空;
试一试{
icon=AbstractUIPlugin.imageDescriptorFromPlugin(“SuitACore”,“icons/”+name).createImage();
}捕获(例外e){
//吞下它吧,我们不需要图像
}
返回图标;
}
公共映像getImage(){
图像选项卡=空;
试一试{
tab=AbstractUIPlugin.imageDescriptorFromPlugin(“SuitACore”,“icons/browser.png”).createImage();
}捕获(例外e){
//吞下它吧,我们不需要图像
}
返回选项卡;
}
public void initializeFrom(ILaunchConfiguration配置){
试一试{
List browsedefaults=new ArrayList();
browsersDefaults.添加(“铬”);
List browsers=configuration.getAttribute(“browsers”,browsersDefaults);
}捕获(COREE){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
chrome.setSelection(true);
}
public void performApply(ILaunchConfigurationWorkingCopy配置){
列表浏览器=新的ArrayList();
浏览器。添加(“chrome”);
setAttribute(“浏览器”,浏览器);
}
public void setDefaults(ILaunchConfigurationWorkingCopy arg0){
}
}

每当有任何可能更新应用按钮的更改时,您必须调用
updateLanchConfigurationDialog()
,因此所有复选框和组合框都必须如此


您还必须在
performApply
方法中保存
ILaunchConfigurationWorkingCopy
中更改的所有内容。应用按钮状态是通过检查工作副本是否与原始配置不同来确定的。

没有答复吗?以前有人做过这个吗?