Copy Project:
1. Project菜单添加步骤:
a) Extensions àorg.eclipse.ui.popupMenu ànew menu;
b) Action,Implementationà org.eclipse.ui.IWorkbenchWindowActionDelegate;
2. 导入/WorkSpace的Project,工作空间都是WorkSpace,
a) 共同的root:ResourcesPlugin.getWorkSpace().getRoot();
b) Root path: ResourcesPlugin.getWorkSpace().getRoot().getLocation().toString();
c) IProjectDescription :ResourcesPlugin.getWorkSpace().loadProjectDescription(.projectIPath);该对象可以获得.project文件信息
i. IPath : new Path(String fullPath);
ii. IPath : IProject.getFile(“.project”).getLocation();
iii. IFile :IProject.getFile(fileName);
d) After Copy : modify DBCLauncher.path 保存路径由此改变,操作对象不变;
3. 创建Project
a) àIProject iProject = ResourcesPlugin.getWorkSpace().getRoot().getProject(newProjectName);
b) à if (!iProject.exists()){ iProject.create(null); }
c) àif (!iProject.isOpen()){ iProject.open(null); }
4. 创建文件
a) IFile iFile = iProject.getFile(new Path(filePath));
b) InputStream inputStream = new ByteArrayInputStream(String.getBytes());
c) If (iFile.exists()) iFile.setContents(inputStream,true,false,null);
d) Else iFile.create(inputStream,false,null);
Refresh Viewer/Editor:
1. Extends ViewPart:
a) IWorkbenchPage page = 1.PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); 2.this.getSite().getWorkbenchWindow().getActivePage();
b) àpage.hideView(page.findView(ViewPart.ID));
c) à page.showView(ViewPart.ID);
2. Extends EditorPart:
a) IWorkbenchPage page =
1.PlatFormUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
2.this.getSite().getWorkbenchWindow().getActivePage();
b) àpage.closeEditor(page.findEditor(EditorInput));
c) àpage.openEditor(EditorInput,Editor.ID);
Content Type:
1. 用户自定义类型,注册编辑器联系在一起
2. àExtensionsàorg.eclipse.core.runtime.contenttype.contentTypes
3. àorg.eclipse.ui.editorsànew Editorànew contentTypeBinding
Create A Editor Steps:
1. àEditor extends EditorPart
a) Init():setSite();setInput(); 初始化
b) isDirty();firePropertyChange(IeditorPart.PROP_DIRTY); 更改提示
c) createPartControl();setContentProvider();setLabelProvider;setInput();setFilter;主要是设置大致布局
2. àContentProvider implements IStructuredContentProvider
a) 主要getElements(Object inputElement) toArray(); 返回数组类型
3. àLabelProvider extends LabelProvider implements ItableLabelProvider,ItableColorProvider or StyledCellLabelProvider
a) extends LabelProvide à createTableColumns,setColumnEditor,getImage(),getText(); 创建列,列可编辑,获得图片,文本
b) implements ItableLabelPovider,ItableColorProviderà 同上功能,同时具备设置行颜色
c) extends StyledCellLabelProvider à update(ViewerCell cell) 高亮,替换都可
d) table.addListener(SWT.MeasureItem,new Listener(){
public void handleEvent(Event event){
event.height = (int)Math.floor(event.gc.getFontMetrics().getHeight()*1.5);
}
})
Table.setHeaderVisible();table.setLinesVisible(true);
4. àEditorInput implements IEditorInput
a) Object getter/setter getName()/getToolTipText ()
5. àEditing extends EditingSupport
a) canEdit(){ return true; } //设置可以编辑
b) getValue(),setValue();//获得、设置 对象值
c) getCellEditor(){} ,CellEditor types:àTextCellEditor,ComboBoxCellEditor
一,Editor有时出现数据粘连,是因为返回结果是null的缘故,判断null返回“”;
二,ComboBoxCellEditor 使用时,getValue()返回Integer,有String[]与之对应;