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

推荐订阅源

Engineering at Meta
Engineering at Meta
T
Threatpost
P
Palo Alto Networks Blog
NISL@THU
NISL@THU
O
OpenAI News
Project Zero
Project Zero
G
GRAHAM CLULEY
P
Privacy International News Feed
A
Arctic Wolf
Microsoft Azure Blog
Microsoft Azure Blog
H
Help Net Security
M
MIT News - Artificial intelligence
T
Threat Research - Cisco Blogs
S
Security @ Cisco Blogs
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
D
Docker
aimingoo的专栏
aimingoo的专栏
博客园 - 【当耐特】
N
Netflix TechBlog - Medium
云风的 BLOG
云风的 BLOG
雷峰网
雷峰网
W
WeLiveSecurity
P
Proofpoint News Feed
腾讯CDC
Cloudbric
Cloudbric
S
Secure Thoughts
C
Check Point Blog
博客园 - Franky
T
The Exploit Database - CXSecurity.com
T
Troy Hunt's Blog
GbyAI
GbyAI
Security Archives - TechRepublic
Security Archives - TechRepublic
Application and Cybersecurity Blog
Application and Cybersecurity Blog
月光博客
月光博客
C
Cyber Attacks, Cyber Crime and Cyber Security
I
Intezer
TaoSecurity Blog
TaoSecurity Blog
L
Lohrmann on Cybersecurity
V
Visual Studio Blog
F
Fortinet All Blogs
博客园 - 叶小钗
C
CXSECURITY Database RSS Feed - CXSecurity.com
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recorded Future
Recorded Future
C
Cisco Blogs
博客园 - 司徒正美
Stack Overflow Blog
Stack Overflow Blog
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research

博客园 - 刘刚

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