惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
aimingoo的专栏
aimingoo的专栏
F
Fortinet All Blogs
Blog — PlanetScale
Blog — PlanetScale
GbyAI
GbyAI
MongoDB | Blog
MongoDB | Blog
月光博客
月光博客
The Cloudflare Blog
量子位
T
Tailwind CSS Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
MyScale Blog
MyScale Blog
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
G
Google Developers Blog
D
DataBreaches.Net
V
Visual Studio Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
U
Unit 42
博客园 - 聂微东
有赞技术团队
有赞技术团队
A
About on SuperTechFans

博客园 - 刘刚

Google Map [导入]Editor中嵌入Editor [导入]GEF中修改默认的FeedBack [导入](接上篇)关于GEF Feedback的补充 [导入]GEF中导视图的使用 [导入]修改GEF中Connection的端点 [导入]Eclipse中Job API使用总结如下三 [导入]Eclipse中Job API使用总结如下二 [导入]Eclipse中Job API使用总结如下一 [导入]Eclipse调试框架的学习与理解二 [导入]Eclipse调试框架的学习与理解一 [导入]使用JET自动生成代码 [导入]定义自己的Common Navigator三 [导入]定义自己的Common Navigator二 [导入]定义自己的Common Navigator一 [导入]Eclipse运行(launcher)框架三 [导入]Eclipse运行(launcher)框架一 [导入]Eclipse属性页的支持 [导入]GEF理解系列九
[导入]Eclipse运行(launcher)框架二
刘刚 · 2008-01-02 · via 博客园 - 刘刚

网站: JavaEye  作者: liugang594  链接:http://liugang594.javaeye.com/blog/152350  发表时间: 2008年01月02日

声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!

定义TabGroup

上面我们定义完了一个type。一般来说我们双击就可以产生一个configuration。但是现在我们双击,会出现一个异常:

tu4

图四

很明白的意思:我们没有定义Tab Group。简单的说,我们要生成一个configuration,对应需要有一些tab页去配置内容,所以每个configuration都有一个对应的tabgroup。因为我们还没有为他定义这些,所它不知道生成的configuration需要显示什么样的tab,所以就出错了。下面我们就来扩展这个tab group吧。

这里要用的扩展点是:org.eclipse.debug.ui.launchConfigurationTabGroups。一个type下的所有configuration显示的是同样的tab group。当然了这个扩展也应该定义在UI插件里。我的定义如下:

   <extension

         point="org.eclipse.debug.ui.launchConfigurationTabGroups">

      <launchConfigurationTabGroup

            class="com.tibco.cdc.liugang.launcher.ui.tabs.LiugangLaunchConfigurationTabGroup"

            id="com.tibco.cdc.liugang.launcher.ui.configuration.tabGroup"

            type="com.tibco.cdc.liugang.launcher.type">

      </launchConfigurationTabGroup>

   </extension>

这里的几个关键点是:

1.    class:实现完成tab页的类

2.    type:还是对应上面我们定义的configurationType

下面就是要完成这个类。

有些Eclipse内置的Tab类,我们可以直接拿来就用。例如CommonTab。下面我们就实现一个Tab页。自定义的Tab页,需要实现接口:

org.eclipse.debug.ui.ILaunchConfigurationTab

不过通常我们只要继承AbstractLaunchConfigurationTab类就行了。我实现如下:

class MainTab extends AbstractLaunchConfigurationTab {

      private Text nameText;

      public void createControl(Composite parent) {

            Composite composite = new Composite(parent,SWT.NONE);

            composite.setLayout(new GridLayout(2,false));

            composite.setLayoutData(new GridData(GridData.FILL_BOTH));

            Label label = new Label(composite,SWT.NONE);

            label.setText("Name");

            nameText = new Text(composite,SWT.SINGLE|SWT.BORDER);

            nameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

            setControl(composite);

      }

      public String getName() {

            return "Main";

      }

      public void initializeFrom(ILaunchConfiguration configuration) {

            try {

                  String name = configuration.getAttribute("name", "<unnamed>");

                  nameText.setText(name);

            } catch (CoreException e) {

                  e.printStackTrace();

            }

      }

      public void performApply(ILaunchConfigurationWorkingCopy configuration) {

            configuration.setAttribute("name", nameText.getText());

      }

      public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {

            configuration.setAttribute("name", "<unnamed>");

      }

}

最后我们完成我们的TabGroup如下:

public class LiugangLaunchConfigurationTabGroup extends

            AbstractLaunchConfigurationTabGroup {

      public LiugangLaunchConfigurationTabGroup() {

      }

      public void createTabs(ILaunchConfigurationDialog dialog, String mode) {

            setTabs(new ILaunchConfigurationTab[]{new MainTab(),new CommonTab()});

      }

}

其实现在我们已经有了一个可运行的东西了。我们先假装完成我们的delegate。如下:

public class LiugangLaunchConfigurationType implements

            ILaunchConfigurationDelegate {

      public void launch(ILaunchConfiguration configuration, String mode,

                  ILaunch launch, IProgressMonitor monitor) throws CoreException {

            System.out.println("You selected liugang launchconfiguration type to run");

      }

}

其实啥也没写。好了,运行我们的插件先:

tu5

图五

看到了,我们现在已经可以加一个或多个configuration了。而且对应的Tab也已经出来了。并且我们也可以运行。点“run”,试试效果:

You selected liugang launchconfiguration type to run

被打印出来了。这就完成了一个简单的运行器的添加。我们看到在我们创建的Tab里几个需要实现的方法里都有一个configuration参数,这个参数就是用来存储了获取配置参数的地方。最后点运行的时候,在我们的typelaunch方法里获得的configuration就是从这里传入的。所以在那里可以得到我们在Tab页上的配置信息。

以上我们虽然完成了一个运行过程。不过实在是太简单了。下面我们加一点东西。

本文的讨论也很精彩,浏览讨论>>

JavaEye推荐

文章来源:http://liugang594.javaeye.com/blog/152350