`

TextEditor的基本操作

 
阅读更多

_part是是action中的IEidtorPart。

如何获得一个未被TextEditor打开的文件的内容:

这个在做“选中文件并对其中内容进行操作”这种功能时很有用,代码如下:

<!----> 1  IFile file = ((FileEditorInput) Workbench.getInstance().getActiveWorkbenchWindow().getActivePage().getActiveEditor().getEditorInput()).getFile();
 2
 3  try {
 4      InputStream contents = file.getContents();
 5      byte[] data = new byte[contents.available()];
 6      contents.read(data);
 7      String textContent = new String(data);
 8  catch (Exception e) {
 9      e.printStackTrace();
10 }

 

如何获得被TextEditor打开的文件的内容:

只有这个方法才能获得未保存的信息,代码如下:

<!---->1 IDocument document = ((TextEditor) _part).getDocumentProvider().getDocument(_part.getEditorInput());
2 String textContent = document.get();

可以看到,每个TextEditor都有一个DocumentProvider,我们通过它来获得IDocument,而IDocument中存储的就有一些字符信息,就是我们想要的内容。注意getDocument方法的参数其实Object类型,也就是说可以传入任何东东,然后DocumentProvider会尝试把它转换成Document。这里我们传入的是TextEditor的EditorInput,是正确的。之后我们再用IDocument的get方法就可以得到TextEditor的内容啦!

如何获得在TextEditor中选中的内容:

代码如下:

<!---->1 String content = ((TextSelection) ((TextEditor) _part).getSelectionProvider().getSelection()).getText();

虽然phiobos说SelectionProvider不是这样用的,有点儿旁门左到,但是貌似正解的getSourceViewer().getSelectedRange()中getSourceViewer()却是个protected方法,所以没办法啦,还好能用就成~

如何把内容写回TextEditor:

知道了IDocument这个东东就简单了~

 

<!---->1 document.set(content);

 

如何替换TextEditor中内容的一部分:

对TextEditor的操作,最重要的就是这个IDocument类,很多功能的实现都是通过它来完成的。IDocument包含了TextEditor中内容的完整信息,可以想到,如果要替换TextEditor中的一部分内容,要知道的信息有两个:被替换代码的位置和范围,替换代码。下面的例子中展示了一个简单的替换:

 

<!----> 1  // get the selection object.
 2  TextSelection selection = (TextSelection) ((TextEditor) _part).getSelectionProvider().getSelection();
 3  // get the content of the selection object as a string.
 4  String source = ((TextSelection) ((TextEditor) _part).getSelectionProvider().getSelection()).getText();
 5  // get the document of the TextEditor's content.
 6  IDocument doc = ((TextEditor) _part).getDocumentProvider().getDocument(_part.getEditorInput());
 7  try {
 8      // replace selection with the result of format.
 9      doc.replace(selection.getOffset(), selection.getLength(),"hello");
10 catch (BadLocationException e) {
11     e.printStackTrace();
12 }

可以看到核心方法是IDocument的replace,它的三个参数分别是被替换代码的offset,被替换代码的length和替换代码。我在例子中实现的是替换选中部分的代码,所以offset和length可以从TextSelection对象中得到。

如何在TextEditor中插入内容:

感觉上应该有insert之类的方法,但是很遗憾的是并没有。变通的做法是使用上面所提到的replace方法,把被替换代码长度这个参数设置为0就可以了。那么如果要实现在光标处插入内容,如何得到光标的位置呢?同样遗憾的是,并没有专门的方法,而是使用上面提到的getSelection.getOffset()。这样返回的就是光标的位置,而getSelection.getLength()返回为0。

分享到:
评论

相关推荐

    TextEditor

    一、TextEditor的基本功能 TextEditor是一款专为文本编辑设计的应用程序,其主要功能包括: 1. **文本输入**:提供一个干净、简洁的界面,让用户能够无干扰地进行文字输入。 2. **格式化**:支持基本的文本格式...

    JAVA文本编辑器TextEditor

    【JAVA文本编辑器TextEditor】是一款基于JAVA编程语言开发的简单文本编辑工具,它具备基本的文本处理功能,如打开、保存文档,并且允许用户进行颜色和字体的个性化设置,以提升文字编辑体验。在这款编辑器中,用户...

    A Text Editor Imlementation

    "A Text Editor Implementation" 提供了一个实用的文本编辑器实现,它专注于字符串操作,为编程工作提供了极大的便利。本文将深入探讨该文本编辑器实现中的关键知识点,以及它们在实际编程工作中的应用。 1. 字符串...

    text editor

    这里提到的“text editor”是一款基于Java语言编写的文本编辑器,主要用于实验目的,同时也作为个人备份使用。Java作为一种跨平台的编程语言,使得这款文本编辑器具备了在不同操作系统上运行的能力,如Windows、...

    pydocx_texteditor_

    `pydocx_texteditor_`可能是一个项目或者工具,用于通过Python来编辑和操作.docx文件,尤其是对文本进行处理。这个工具可能包含了对文本的添加、删除、替换、格式化等多种功能,使得开发者可以方便地自动化Word文档...

    ICSharpCode.TextEditor修正选中横线滚动条无法跟随

    总的来说,理解和修复“选中横线滚动条无法跟随”的问题需要对ICSharpCode.TextEditor的内部工作原理有深入的了解,同时也需要熟悉.NET Framework的控件操作。这是一个涉及到用户交互优化和代码调试的典型任务,对于...

    Silverlight rich text editor v2.0.zip

    《深入探索Silverlight Rich Text Editor v2.0》 在.NET框架中,Silverlight作为一种强大的RIA(Rich Internet Application)开发工具,曾广泛应用于构建富媒体和交互性极强的Web应用。本文将围绕"Silverlight Rich...

    windows下的textmate E TextEditor 文本编辑器

    然而,由于操作系统环境的不同,E TextEditor在某些方面进行了调整,以适应Windows用户的操作习惯。 四、安装与使用 E TextEditor作为绿色版软件,无需安装即可使用,只需解压压缩包中的文件,启动可执行程序即可...

    使用ICSharpCode.TextEditor

    在本文中,我们将深入探讨如何在C# WinForms应用程序中集成并使用`ICSharpCode.TextEditor`,这是一个强大的文本编辑控件,能够提供语法高亮显示,极大地提升了代码编辑体验。`ICSharpCode.TextEditor`是.NET框架下...

    Cross-Browser Rich Text Editor v3.13

    开发者可能会在这里解释如何在自己的项目中集成Cross-Browser Rich Text Editor,包括必要的JavaScript引用、初始化配置以及可能的自定义设置。此外,它也可能包含一些示例代码,展示如何调用编辑器API来实现特定...

    A simple text editor

    【标题】:“A simple text editor” 在编程领域,创建一个简单的文本编辑器是学习和理解基本的用户界面和文件操作的常见练习。本项目是一个用C语言编写的简单文本编辑器,适合C语言课程设计使用。C语言因其高效、...

    Text Editor SDI.rar

    Text Editor SDI通过选中文本,然后执行复制和粘贴操作,实现文本的移动或复制。这些功能通常由剪贴板API支持,如Java的`Clipboard`类。 4. **状态栏**:状态栏显示了当前文件的相关信息,例如文件名、编码格式和...

    text-editor-master_made_texteditor_

    【标题】"text-editor-master_made_texteditor_" 暗示了这是一个基于C++和SFML(Simple and Fast Multimedia Library)开发的文本编辑器项目。它可能是由个人或团队从零开始构建的,目的是提供一个基础但实用的文本...

    DOS text editor DOS下的文本编辑工具

    在这个环境下,文本编辑器扮演了至关重要的角色,其中“DOS text editor”就是这样一个在DOS下用于编辑TXT文档的工具。它提供了一种在命令行界面中创建、修改和查看文本文件的方式,与Windows系统下的Notepad类似,...

    IOS应用源码之【应用】TextEditor for iPad.rar

    7. **用户交互**:iOS的触摸事件处理机制(如UIPanGestureRecognizer、UITapGestureRecognizer)可能会在TextEditor中广泛使用,以便实现手势操作,比如捏合缩放文本。 8. **错误处理和日志记录**:良好的错误处理...

    TextEditor.zip

    本文将探讨一款名为"TextEditor"的记事本程序,其源代码是使用Java语言在IntelliJ IDEA集成开发环境中编写的。这个项目以"TextEditor.zip"的形式提供,包含了整个IntelliJ IDEA的模块结构,用户可以直接导入并运行。...

    java text editor

    Java文本编辑器是一款基于Java语言开发的文本处理工具,它提供了基本的文字编辑功能,如创建、打开、保存、复制、粘贴、查找、替换等,同时也可能具备语法高亮、自动完成、代码折叠等特性,使得程序员在编写和调试...

Global site tag (gtag.js) - Google Analytics