<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    West Farm
    吾本布衣,生于川北,躬耕于代碼的田地上。
    posts - 16,  comments - 15,  trackbacks - 0

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

    import org.eclipse.core.databinding.observable.value.IObservableValue;
    import org.eclipse.jface.databinding.swt.SWTObservables;
    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.custom.StyledText;
    import org.eclipse.swt.custom.VerifyKeyListener;
    import org.eclipse.swt.events.TraverseEvent;
    import org.eclipse.swt.events.TraverseListener;
    import org.eclipse.swt.events.VerifyEvent;
    import org.eclipse.swt.graphics.Color;
    import org.eclipse.swt.layout.FillLayout;
    import org.eclipse.swt.widgets.Composite;
    import org.eclipse.wb.swt.SWTResourceManager;

    /**
     * 關(guān)鍵字高亮編輯器。This class is a simple customized widget that wrappes a  {
    @link org.eclipse.swt.custom.StyledText StyledText}. 
     * It consumes a keyword array and highlight them.
     * 
    @author ggfan@amarsoft
     *
     
    */
    public class KeywordsHighlightingEditor extends Composite{
        
        
    private Color color = SWTResourceManager.getColor(SWT.COLOR_BLUE);
        
        
    private Color variableColor = SWTResourceManager.getColor(SWT.COLOR_DARK_GREEN);

        
    private String[] keywords;
        
        
    private StyledText st;
        
        
    public void setKeywordsColor(Color color){
            
    this.color = color;
        }
        
        
    public void setKeywordsBgColor(Color color){
        
        }
        
        
    public IObservableValue observerContent(){
            
    return SWTObservables.observeText(st, SWT.Modify);
        }

        
    public KeywordsHighlightingEditor(Composite parent, String[] keywords) {
            
    super(parent, SWT.NONE);
            
    this.keywords = keywords;
            
    this.setLayout(new FillLayout());
            st 
    = new StyledText(this, SWT.WRAP | SWT.BORDER | SWT.V_SCROLL);
            
    // 禁止回車鍵換行
            st.addVerifyKeyListener(new VerifyKeyListener(){
                
    public void verifyKey(VerifyEvent event) {
                    
    if(event.keyCode == SWT.CR){
                        event.doit 
    = false;
                    }
                }
            });
            
    // Tab鍵失去焦點而不是插入制表符
            st.addTraverseListener(new TraverseListener(){
                
    public void keyTraversed(TraverseEvent e) {
                    
    if (e.detail == SWT.TRAVERSE_TAB_NEXT || e.detail == SWT.TRAVERSE_TAB_PREVIOUS) {
                        e.doit 
    = true;
                    }
                }
            });
            st.addLineStyleListener(
    new SQLSegmentLineStyleListener());
        }
        
        
    private class SQLSegmentLineStyleListener implements LineStyleListener {

            @Override
            
    public void lineGetStyle(LineStyleEvent event) {
                
    if(keywords == null || keywords.length == 0){
                    
    return;
                }
                List
    <StyleRange> styles = new ArrayList<StyleRange>();
                
    int start = 0;
                
    int length = event.lineText.length();
                
    while (start < length) {
                    
    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(Arrays.asList(keywords).contains(buf.toString())) {
                            styles.add(
    new StyleRange(event.lineOffset + start, i - start, color, null, SWT.BOLD));
                        }
                        start 
    = i;
                    }
    else if (event.lineText.charAt(start) == '#') {
                        StringBuffer buf 
    = new StringBuffer();
                        buf.append(
    '#');
                        
    int i = start + 1;
                        
    for (; i < length && Character.isLetter(event.lineText.charAt(i)); i++) {
                            buf.append(event.lineText.charAt(i));
                        }
                        
    if(buf.toString().matches("#[a-zA-Z]+\\d?")) {
                            styles.add(
    new StyleRange(event.lineOffset + start, i - start, variableColor, null, SWT.NORMAL));
                        }
                        start 
    = i;
                    }
                    
    else{
                        start 
    ++;
                    }
                }
                event.styles 
    = (StyleRange[]) styles.toArray(new StyleRange[0]);
            }

        }
        
    }
    posted on 2011-10-12 10:42 West Farmer 閱讀(933) 評論(0)  編輯  收藏 所屬分類: Eclipse-RCP

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     

    <2011年10月>
    2526272829301
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    相冊

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲熟妇av一区二区三区| 全部免费毛片在线| 国内一级一级毛片a免费| 免费女人18毛片a级毛片视频| 中文字幕精品亚洲无线码一区| 久久夜色精品国产嚕嚕亚洲av| 亚洲精彩视频在线观看| 亚洲色欲色欱wwW在线| 免费人成再在线观看网站| 嫩草成人永久免费观看| 九九精品免费视频| 亚洲国产精品丝袜在线观看| 亚洲国产精品无码久久久秋霞2| 亚洲第一页中文字幕| 久久水蜜桃亚洲AV无码精品| 久久成人18免费网站| 嘿嘿嘿视频免费网站在线观看| 国产中文字幕免费观看| 亚洲AV无码乱码国产麻豆 | 四虎国产精品免费久久影院| 亚洲人成无码网站| 亚洲sss综合天堂久久久| 全黄A免费一级毛片| 24小时在线免费视频| 亚洲国产成人精品无码久久久久久综合| 亚洲国产另类久久久精品| 亚洲中文字幕乱码一区| 成在线人视频免费视频| 毛片免费在线观看网站| 亚洲日韩av无码| 亚洲日韩乱码中文字幕| 中文无码成人免费视频在线观看| 免费无码又黄又爽又刺激 | 亚洲AV无码一区二三区 | 亚洲制服丝袜在线播放| 一级毛片完整版免费播放一区| 精品福利一区二区三区免费视频| 免费va在线观看| 亚洲国产精品线观看不卡| jizz免费观看视频| 成人超污免费网站在线看|