- 浏览: 241559 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
heartneo:
破解原作真是太厉害了。
Spket 1.6.18的简单破解 -
mwp1115:
谢谢,现在官方的demo代码还是jdk1.2的
Swing JTreeTable范例 -
bulktree:
Spket 谢谢了,js格式化 行宽太小了,你这个帮了我很大的 ...
Spket 1.6.18的简单破解 -
REGAL2T:
谢谢, 可以使用了
Spket 1.6.18的简单破解 -
wuwei1616:
我想问下lz 我生成了 wsdl文件 我用客户端去调用 怎么总 ...
调用CXF工具 生成 WSDL
插件向导开发最好的例子莫过于Eclipse中本身一些向导,但如何去找不易记住
一些常规界面组件,如:容器、类、项目、包等,可以参考以下类:
NewAnnotationWizardPage
NewClassWizardPage
NewContainerWizardPage
NewElementWizardPage
NewEnumWizardPage
NewInterfaceWizardPage
NewJavaProjectWizardPage
NewPackageWizardPage
NewTypeWizardPage
。。。。。。。。
这些类位于org.eclipse.jdt.ui.wizards包下,javadoc可参考 http://www.jdocs.com/eclipse/3.1/api-index.html?m=package&p=org.eclipse.core.expressions&render=classic
例子:
import org.eclipse.core.runtime.IStatus; import org.eclipse.jdt.ui.wizards.NewContainerWizardPage; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import com.cownew.studio.Activator; import com.cownew.studio.modelDev.codeGen.CodeGeneratorInfo; import com.cownew.studio.modelDev.codeGen.CodeGeneratorLoader; import com.cownew.studio.modelDev.codeGen.IEntityModelCodeGenerator; public class CodeGenOptionWizardPage extends NewContainerWizardPage { private final String SETTINGPREFIX = CodeGenOptionWizardPage.class.getName(); // 是否覆盖已有文件 private final String OVERRIDEEXISTS = SETTINGPREFIX + "OVERRIDEEXISTS"; // 上次选中的代码生成器索引 private final String CODEGENINDEX = SETTINGPREFIX + "CODEGENINDEX"; private Combo comboCodeGen; private Button btnCheckBoxOverrideExistsFile; private IStructuredSelection structSelect; private CodeGeneratorInfo[] codeGenerators; public CodeGenOptionWizardPage(String name, IStructuredSelection structSelect) { super(name); setTitle("code generation option"); this.structSelect = structSelect; } public void createControl(Composite parent) { initializeDialogUnits(parent); Composite composite = new Composite(parent, SWT.NONE); composite.setFont(parent.getFont()); int nColumns = 3; GridLayout layout = new GridLayout(); layout.numColumns = 3; composite.setLayout(layout); Label label = new Label(composite, SWT.WRAP); label.setText("please select the source folder to store the code"); GridData gd = new GridData(); gd.widthHint = convertWidthInCharsToPixels(60); gd.horizontalSpan = 3; label.setLayoutData(gd); createContainerControls(composite, nColumns); initContainerPage(getInitialJavaElement(structSelect)); createOptionControls(composite); setControl(composite); Dialog.applyDialogFont(composite); } private void createOptionControls(Composite composite) { // 得到对话框设置 IDialogSettings settings = Activator.getDefault().getDialogSettings(); Label lTargetORM = new Label(composite, SWT.WRAP); lTargetORM.setText("Target ORM:"); GridData gdLTargetORM = new GridData(); gdLTargetORM.horizontalSpan = 1; gdLTargetORM.horizontalAlignment = GridData.FILL; lTargetORM.setLayoutData(gdLTargetORM); comboCodeGen = new Combo(composite, SWT.READ_ONLY); // 取得所有代码生成器 codeGenerators = CodeGeneratorLoader.loadAll(); for (int i = 0, n = codeGenerators.length; i < n; i++) { CodeGeneratorInfo codeGen = codeGenerators[i]; // 将代码生成器属性对象以代码生成器的索引为key // 保存到控件的用户数据区中 comboCodeGen.setData(Integer.toString(i), codeGen); // 添加项 comboCodeGen.add(codeGen.getName()); } if (settings.get(CODEGENINDEX) == null) { // 如果“上次选中的代码生成器索引”为空,则选择第一项 comboCodeGen.select(0); } else { // 如果“上次选中的代码生成器索引”不为空,则选择上次选中的项 int index = settings.getInt(CODEGENINDEX); comboCodeGen.select(index); } GridData gdComboTargetORM = new GridData(); gdComboTargetORM.horizontalSpan = 2; gdComboTargetORM.horizontalAlignment = GridData.FILL; comboCodeGen.setLayoutData(gdComboTargetORM); btnCheckBoxOverrideExistsFile = new Button(composite, SWT.CHECK); btnCheckBoxOverrideExistsFile.setText("override existing file"); btnCheckBoxOverrideExistsFile.setSelection(true); // 如果“是否覆盖已有文件”不为空,则将“是否覆盖已有文件” // 选择框设置为和上次一样的设置 if (settings.get(OVERRIDEEXISTS) != null) { boolean overwrite = settings.getBoolean(OVERRIDEEXISTS); btnCheckBoxOverrideExistsFile.setSelection(overwrite); } GridData gdOverrideExists = new GridData(); gdOverrideExists.horizontalSpan = 3; gdOverrideExists.horizontalAlignment = GridData.FILL; btnCheckBoxOverrideExistsFile.setLayoutData(gdOverrideExists); } protected IStatus containerChanged() { IStatus status = super.containerChanged(); updateStatus(status); return status; } /** * 得到用户选择的代码生成器的实例 * * @return */ public IEntityModelCodeGenerator getCodeGenerator() { CodeGeneratorInfo gen = codeGenerators[comboCodeGen.getSelectionIndex()]; String className = gen.getClassName(); try { Class clz = Class.forName(className); return (IEntityModelCodeGenerator) clz.newInstance(); } catch (ClassNotFoundException e) { Activator.logException(e); } catch (InstantiationException e) { Activator.logException(e); } catch (IllegalAccessException e) { Activator.logException(e); } return null; } public boolean isOverrideExistsFile() { return btnCheckBoxOverrideExistsFile.getSelection(); } /** * 保存用户本次的设置 */ public void saveConfig() { IDialogSettings settings = Activator.getDefault().getDialogSettings(); settings.put(OVERRIDEEXISTS, isOverrideExistsFile()); settings.put(CODEGENINDEX, comboCodeGen.getSelectionIndex()); } }
发表评论
-
目录树的生成
2011-09-22 08:54 1391项目上线需要生成个目录树文件,本来可以用dos的tree就搞定 ... -
Eclipse Tip: Define Custom Content Types to Identify Your Data Files
2010-06-13 08:53 1214【转自】http://www.developer.com/ja ... -
WTP Facet 之 AddFilter
2010-06-11 14:22 1259做插件开发的人员都知道,如果你不晓得该使用那个Eclipse提 ... -
Properties文件的读写 : Properties操作示例
2010-04-21 14:19 1526package properties; import j ... -
如何访问当前Project???
2010-04-14 08:27 1125【转】http://wiki.eclipse.org/FAQ_ ... -
How to create dynamic web project using facets
2010-03-22 08:51 1486To create a blank faceted proje ... -
Introduction to the XSD Editor(XML Schema Editor)
2010-03-13 16:46 1353By Trung Ha August 30, 2006 ... -
同类编辑器只能打开一个
2010-02-23 13:28 1292在(http://sxw7362693.iteye.com/b ... -
通过事件驱动,创建不同的部件
2010-02-20 15:43 1072非常easy的东西,就是先dispose再create。 ... -
Tree Check 带复选框的树
2009-08-25 13:23 7699在SWT/JFace中,带复选框树最好使用Contain ... -
Swing JTreeTable范例
2009-08-21 13:48 3039由于工作需要,看了一点Swing的JtreeTable的实现。 ... -
SWT/JFACE——toolbar/toolItem
2009-04-23 22:47 10812工具栏通常有两种: toolbar、coolBar。两者的区 ... -
SWT-Menu篇
2009-04-23 17:12 3305今天用到Menu,本以为小菜一碟,都是老掉牙的东东了还不简单。 ... -
Eclipse.ini参数意义
2009-04-16 17:34 826eclipse.ini内存设置各参数含义 ... -
Editor的脏处理
2009-03-11 21:05 1716做编辑器Editor插件,肯定离不开对“脏”的处理。以前虽然也 ... -
SWT-Table按“行“进行编辑
2009-03-11 10:24 4693package table; /* * 通常在一个表 ... -
读取properties文件
2008-11-27 10:26 1839在 武晨伟的博客 http://blog.csdn.n ... -
移除Builders
2008-08-15 09:36 904public static void removeBuild ... -
Java项目classPath的添加
2008-08-15 09:28 3640// import org.eclipse.jem.workb ... -
tree file options
2008-08-15 08:47 1159package jface.treeviewer; impo ...
相关推荐
自定义向导(wizard)是通过 org.eclipse.ui.ide.wizard 和 org.eclipse.ui.ide.wizardpage 接口来实现的。每个向导页面都描述了一步任务,向导页面被添加到向导中,页面的状态决定了该页面是否已经完成。当该页面...
在 `CustomerInfoPage` 类中,创建了四个 `Text` 控件,分别用于输入这些信息,并且定义了 `createControl(Composite parent)` 方法,此方法是 WizardPage 必须实现的,用于在 Wizard 对话框中构建页面的UI。...
这里没有实际应用,但可以作为参考。 #### 注册字段 ```cpp // page->registField(QString(field), QLineEdit*, Qt::DisplayRole); // page->setField(QString(field), QVariant()); ``` 虽然这些代码片段被注释掉...
React简单向导 一个简单的分步向导组件。 用法 具有两个公共方法来导航步骤的父组件: WizardRef.next() // goes to the next step WizardRef.jump(step) // jumps to the desired step 将您的导航组件作为此...
在上面的代码中,我们实现了一个名为 NewCodeGenWizardPage 的 Wizard 页面,该页面继承自 WizardPage 类。 七、总结 在本节中,我们探讨了Eclipse代码生成器插件开发的相关知识点,包括插件开发基本概念、Wizard...
在Java编程领域,`WizardDialog` 和 `TitleAreaDialog` 是两种常见的对话框类,...如果你遇到任何问题或需要进一步的解释,请查阅SWT的官方文档,或者参考在线社区如ITEYE上的博客和讨论,那里通常有丰富的资源和解答。
7. **对话框和页**:除了基本的组件外,Eclipse SWT还提供了如`MessageDialog`、`InputDialog`等对话框以及`WizardPage`等高级组件,用于创建更复杂的功能,如文件选择、用户输入验证等。 8. **插件开发**:在...
这些类将实现`INewWizard`接口,扩展`WizardPage`类,并覆盖必要的方法。\n\n**Wizard类与INewWizard接口**\n\n在新创建的插件项目中,会生成几个类,如`NewXHTMLFileWizard`、`NewXHTMLFileWizardPage`和`Activator...
它通过一系列的`WizardPage`组件来构建整个向导流程,每个页面都负责展示一部分用户界面,并处理相应的业务逻辑。 ##### 2.1 JFaceWizard原理 - **数据模型**:JFaceWizard中每个页面都可以包含自己的数据模型,但...
- **WizardPage**: WizardPage是构成向导的基本单元,每个页面可以包含不同的控件和逻辑。 #### 12. 高级特性 - **数据绑定**: JFace支持数据模型与UI元素之间的自动绑定,减少了大量手动同步代码的编写。 - **...
每个页面都是一个WizardPage,用户按照步骤逐个完成。每个页面可以通过nextId()方法定义下一步的页面ID,QWizard会自动处理页面间的跳转逻辑: ```cpp QWizard *wizard = new QWizard(); QWizardPage *page1 = new ...
2. WizardPage.cpp 和 WizardPage.h:定义属性页或向导页面的类。 3. Resource.h:资源定义文件,用于菜单和其他GUI元素。 4..rc 文件:资源脚本文件,包含菜单、对话框等资源定义。 5. MainFrm.cpp/h 和 DlgMain....
每个步骤对应一个WizardPage,用户按顺序完成所有步骤。 3. **QDialog和QMainWindow**:QDialog通常用于弹出对话框,而QMainWindow是主窗口的基础类,两者结合可以实现不同界面间的跳转。 4. **QQuickView和QML**...
- `wizard`:封装了向导的实现,包括Wizard、WizardDialog和各个特定类型的WizardPage。 虽然描述中提到源码里有部分在Eclipse环境中可能报错,但这通常是因为依赖问题或版本不匹配。开发者可以忽略这些错误,专注...
QWizard提供了一种分步的界面布局,每一步都是一个WizardPage。用户只能按顺序前进或后退,直到完成所有步骤。 在实际项目中,可能需要结合以上多种方法,根据应用的具体需求灵活运用。同时,为了保持主窗口的稳定...
此外,`PreferencePage`类用于表示首选项中的一个页面,类似于向导式对话框中的单个步骤(WizardPage)。`PreferenceNode`代表了首选项界面中的一个节点,它可以链接到一个`PreferencePage`。而`PreferenceManager`...
- **WizardPage**:介绍如何设计和实现每个向导页面,包括数据验证和逻辑控制。 - **扩展点**:说明如何通过扩展点注册自定义的向导,例如新建文件向导、导入/导出向导等。 ##### 二、内置对话框 - **消息框**:...
- 实现addPages()方法以添加WizardPage。 #### 9. 首选项 - **概述**: 首选项用于存储用户的个性化设置。 - **使用首选项**: - 获取PreferenceStore实例。 - 通过set/get方法存储/获取偏好值。 - 实现...