Archief | Eclipse rcp

Simpele tekst editor

9 apr

Ik heb zelf een simpele tekst editor aangemaakt voor mijn Eclipse RCP applicatie. Dit heb ik gedaan omdat als je de ingebouwde tekst editor van Eclipse zelf wilt gebruiken je een bundel van plugins moet toevoegen. Dit is van zichzelf al een hele uitzoekwerk plus je zit de halve structuur van Eclipse te importeren. Hier zat ik niet op te wachten. Dit moet makkelijker kunnen.

Voorbeeld van tekst editor

Tekst editor

Code voor TextEditor class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package semantica.editor;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.EditorPart;
import semantica.editor.StringEditorInput;

public class TextEditor extends EditorPart {
    public static final String ID = "semantica.editor.textEditor";
    private String content ;
    private StyledText editor ;
   
    @Override
    public void doSave(IProgressMonitor monitor) {
    }

    @Override
    public void doSaveAs() {
    }
   

    @Override
    public void init(IEditorSite site, IEditorInput input) throws PartInitException {
        setSite(site);
        setInput(input);
        setPartName(input.getName());
        setTitleImage(input.getImageDescriptor().createImage());
        content = ((StringEditorInput)input).getContent();
    }
   
    @Override
    public boolean isDirty() {
        return false;
    }

    @Override
    public boolean isSaveAsAllowed() {
        return false;
    }

    @Override
    public void createPartControl(Composite parent) {
        GridLayout gridLayout = new GridLayout(1, false);
        parent.setLayout(gridLayout);
       
        editor = new StyledText(parent, SWT.None | SWT.BORDER | SWT.V_SCROLL);
        editor.setText(content);
        editor.setLayoutData(new GridData(GridData.FILL_BOTH));
        editor.setEditable(false);
       
        editor.setFont(JFaceResources.getTextFont());
    }

    @Override
    public void setFocus() {
        editor.setFocus();
        SourceProvider.get().setCurrent(new StructuredSelection(), TextEditor.this);
    }
}

Als je net als mij de “TextEditor” wilt gebruiken zonder een daadwerkelijk bestand te open, maar gewoon een string gebruik dan de “StringEditorInput”

Code voor StringEditorInput class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package semantica.editor;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IPersistableElement;

public class StringEditorInput implements IEditorInput {
    private String name ;
    private String content ;
    private ImageDescriptor imageDescriptor ;
   
    public StringEditorInput(String name, String content, ImageDescriptor imageDescriptor) {
        this.name = name ;
        this.content = content ;
        this.imageDescriptor = imageDescriptor ;
    }
   
    @Override
    public boolean exists() {
        return false;
    }

    @Override
    public ImageDescriptor getImageDescriptor() {
        return imageDescriptor;
    }

    @Override
    public String getName() {
        return name;
    }

    @Override
    public IPersistableElement getPersistable() {
        return null;
    }

    @Override
    public String getToolTipText() {
        return name;
    }

    @Override
    public Object getAdapter(Class adapter) {
        return null;
    }

    public String getContent() {
        return content;
    }
}

Toevoegen van class TextEditor in plugin.xml

1. Open je plugin.xml
2. Ga naar extensions
3. Voeg extension point toe “org.eclipse.ui.editors”
4. Rechtermuis op “org.eclipse.ui.editors” dan naar new=>editor

Vul de volgende gegevens in:

id: semantica.editor.textEditor
name: TextEditor
class: semantica.editor.TextEditor
default: false



Aanroepen tekst editor

1
2
3
4
ImageDescriptor imageDescriptor = Activator.getImageDescriptor("icons/txt.png");
StringEditorInput editor = new StringEditorInput("Naam", "Dit is de tekst", imageDescriptor );
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
page.openEditor(editor, "semantica.editor.textEditor");