Eclipse plugin 实现启动器框架-禁用对话框上的应用按钮
我正在开发一个eclipse插件,并根据链接实现一个自定义启动器 我已经实现了一个类BrowsersTab,它扩展了AbstractLaunchConfigurationTab并实现了所有的方法。问题是当我调用UpdateLanchConfigurationDialog()时;在选择事件中,“应用”按钮保持禁用状态 代码:Eclipse plugin 实现启动器框架-禁用对话框上的应用按钮,eclipse-plugin,eclipse-rcp,Eclipse Plugin,Eclipse Rcp,我正在开发一个eclipse插件,并根据链接实现一个自定义启动器 我已经实现了一个类BrowsersTab,它扩展了AbstractLaunchConfigurationTab并实现了所有的方法。问题是当我调用UpdateLanchConfigurationDialog()时;在选择事件中,“应用”按钮保持禁用状态 代码: public class BrowsersTab extends AbstractLaunchConfigurationTab { private Button
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
中更改的所有内容。应用按钮状态是通过检查工作副本是否与原始配置不同来确定的。没有答复吗?以前有人做过这个吗?