English 中文(简体)
eclipse rcp :帮助形成一种定制的型式样式陶瓷植被
原标题:eclipse rcp : help to create a customized StyledText widget

我想要一个能够接受关键词清单的定制式大刀切植被,强调这些关键词!

我认为,我很难执行。

最佳回答

真主保!! 在花了几个小时搜索网站之后,我最后从《书》中找到了一些样本。 The Definitive Guide to SWT and JFace , it s brief :

主要班级:

package amarsoft.rcp.base.widgets.test;

import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

import amarsoft.rcp.base.widgets.SQLSegmentEditor;

public class PageDemo extends ApplicationWindow {

    public PageDemo(Shell parentShell) {
        super(parentShell);
        final Composite topComp = new Composite(parentShell, SWT.BORDER);
        FillLayout fl = new FillLayout();
        fl.marginWidth = 100;
        topComp.setLayout(fl);
        new SQLSegmentEditor(topComp);

    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        Display display = new Display();
        Shell shell = new Shell(display);
        shell.setLayout(new FillLayout());

        new PageDemo(shell);
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }
}

package amarsoft.rcp.base.widgets;

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;

/**
 * SQL语句/SQL语句片段编辑器,除了内容编辑之外,提供一个额外的功能——常用SQL语句关键字高亮显示。
 * @author ggfan@amarsoft
 *
 */
public class SQLSegmentEditor extends Composite{

    private StyledText st;

    public SQLSegmentEditor(Composite parent) {
        super(parent, SWT.NONE);
        this.setLayout(new FillLayout());
        st = new StyledText(this, SWT.WRAP);
        st.addLineStyleListener(new SQLSegmentLineStyleListener());
    }

}
package amarsoft.rcp.base.widgets;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.LineStyleEvent;
import org.eclipse.swt.custom.LineStyleListener;
import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.graphics.Color;
import org.eclipse.wb.swt.SWTResourceManager;

public class SQLSegmentLineStyleListener implements LineStyleListener {

    private static final Color KEYWORD_COLOR = SWTResourceManager
            .getColor(SWT.COLOR_BLUE);

    private List<String> keywords = new ArrayList<String>();

    public SQLSegmentLineStyleListener() {
        super();
        keywords.add("select");
        keywords.add("from");
        keywords.add("where");
    }

    @Override
    public void lineGetStyle(LineStyleEvent event) {
        List<StyleRange> styles = new ArrayList<StyleRange>();
        int start = 0;
        int length = event.lineText.length();
        System.out.println("current line length:" + event.lineText.length());
        while (start < length) {
            System.out.println("while lopp");
            if (Character.isLetter(event.lineText.charAt(start))) {
                StringBuffer buf = new StringBuffer();
                int i = start;
                for (; i < length
                        && Character.isLetter(event.lineText.charAt(i)); i++) {
                    buf.append(event.lineText.charAt(i));
                }
                if (keywords.contains(buf.toString())) {
                    styles.add(new StyleRange(event.lineOffset + start, i - start, KEYWORD_COLOR, null, SWT.BOLD));
                }
                start = i;
            }
            else{
                start ++;
            }
        }
        event.styles = (StyleRange[]) styles.toArray(new StyleRange[0]);
    }

}
问题回答

暂无回答




相关问题
SWT version of: getOppositeComponent on focus change

In Swing you can get "the other Component involved in this focus change" from this: getOppositeComponent. There does not seem to be a similar call in SWT, does anyone have a workaround or fix for this?...

Styling a SWT label to be italic

How would I go about styling a SWT label created along the following lines so it is displayed italicised? Label label = formToolkit.createLabel(composite, "My label name");

Lazy and Deferred TreeViewer questions

I have actually two questions but they are kind of related so here they go as one... How to ensure garbage collection of tree nodes that are not currently displayed using TreeViewer(SWT.VIRTUAL) and ...

add toolbar to section

I want to add a toolbar to a section in SWT. There is an example i saw in the PDE manifest editor. How can i add this toolbar or buttons? maybe i need to use a different control? Thank you, Ido

Create a custom button with SWT

I would like to ask the same thing than this question but using SWT: Is there a way to make a Button with your own button graphic not just with an image inside the button? If not is another way to ...

Mouse events on an SWT Scrollbar

Using standalone SWT Scrollbars is something of a hack (using this workaround), but it can be done. Here s a snippet: ScrolledComposite scrolledComposite = new ScrolledComposite( ...

SWT Cross-Platform Enter Detection

I have a global filter (Display.addFilter) in SWT in which I want to detect Enter key. In Windows, pressing Enter generates SWT.CR in keyCode part of KeyListener event. Is this assumption safe for ...

热门标签