亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? swtframe.java

?? Java開發圖文混排的編輯器
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
/*
 * Created on 2004-7-24
 * Author: Xuefeng, Copyright (C) 2004, Xuefeng.
 */
package jexi.ui.swt;

import java.util.*;

import org.eclipse.swt.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.program.*;

/**
 * The implementation of Frame. And this is the real window 
 * displayed on the screen! <br>
 * <b>NOTE</b>: The UI was created by ui-design-tool, the swt-designer, 
 * (see: <a href="www.swt-designer.com">www.swt-designer.com</a>), 
 * so modify carefully! 
 * 
 * @author Xuefeng
 */
public class SWTFrame implements jexi.ui.Frame {

    // store the view:
    private jexi.ui.View view = null;

    // the device:
    private Display display = null;
    // the main window:
    private Shell shell = null;

    // the default graphics:
    private SWTGraphics defaultGraphics = null;

    private ToolBar toolBarCommon;
    private ToolBar toolBarFormat;

    private Combo cmbFontName;
    private Combo cmbFontSize;

    private Composite ScrollableView;
    private Canvas textView;

    private Slider sliderV;
    private Slider sliderH;

    // caret:
    private Caret caret;

    // color-select menu:
    private Menu mnuColorSelect;
    private MenuItem[] mnuColor = new MenuItem[16];

    // image factory:
    private SWTImageFactory imageFactory;

    /**
     * Get the display object. 
     * 
     * @return The display object.
     */
    public Display getDisplay() {
        return this.display;
    }

    /**
     * Get the shell object.
     * 
     * @return The shell object.
     */
    public Shell getShell() {
        return this.shell;
    }

    /**
     * Initialize the frame. 
     * 
     * @see jexi.ui.Frame#init()
     */
    public void init(){
        // create device:
        this.display = new Display();
        this.imageFactory = new SWTImageFactory(this.display);
        // create window:
        this.shell = new Shell(display);
        this.shell.setText("Jexi 1.0 beta");

        // create default graphics:
        org.eclipse.swt.graphics.GC gc = new org.eclipse.swt.graphics.GC(shell);
        this.defaultGraphics = new jexi.ui.swt.SWTGraphics(gc);

        // now layout:
        final GridLayout gridLayoutForShell = new GridLayout();
        gridLayoutForShell.verticalSpacing = 1;
        gridLayoutForShell.marginWidth = 0;
        gridLayoutForShell.marginHeight = 0;
        gridLayoutForShell.makeColumnsEqualWidth = true;
        shell.setLayout(gridLayoutForShell);

        // create menu bar:
        createMenu();

        // create pop-up menu of "select color":
        createColorSelectMenu();

        // create tool bar - Common:
        createToolBarCommon();

        // create tool bar - Format:
        createToolBarFormat();

        // init fonts:
        initFont();

        // create "view":
        createComposite();

        ///////////////////////////////////////////////////////////////////////
        // ok, create the view:
        //this.view = new SWTTextView(this.textView);
        this.view = new SWTScrollableViewDecorator(new SWTTextView(this.textView),
            this.sliderH, this.sliderV);
        jexi.core.Document document = jexi.core.Document.createEmptyDocument(view);
        view.init(document);
        //this.document.updateCaret();
        ///////////////////////////////////////////////////////////////////////

        // notify view when size changed:
        textView.addControlListener(new ControlAdapter () {
            public void controlResized(ControlEvent e) {
                // NOTE: the size is textView(Canvas):
                org.eclipse.swt.graphics.Rectangle r = textView.getBounds();
                view.onSizeChanged(r.width, r.height);
            }
        });

        // notify view when need repaint:
        textView.addPaintListener(new PaintListener () {
            public void paintControl(PaintEvent e) {
                view.update();
            }
        });

        // notify view when mouse moved:
        textView.addMouseMoveListener(new MouseMoveListener() {
            public void mouseMove(MouseEvent e) {
                view.onMouseMove(e.x, e.y);
            }
        });

        // nofity view when mouse clicked:
        textView.addMouseListener(new MouseListener() {
            public void mouseDown(MouseEvent e) {
                if(e.button==1)
                    view.onLButtonDown(e.x, e.y);
                if(e.button==3)
                    view.onRButtonDown(e.x, e.y);
            }
            public void mouseUp(MouseEvent e) {
                if(e.button==1)
                    view.onLButtonUp(e.x, e.y);
                if(e.button==3)
                    view.onRButtonUp(e.x, e.y);
            }
            public void mouseDoubleClick(MouseEvent e) {
                if(e.button==1)
                    view.onLButtonDblClick(e.x, e.y);
            }
        });

        // nofity view when key pressed:
        textView.addKeyListener(new KeyListener() {
            public void keyPressed(KeyEvent e) {
                System.out.println(e.toString());
                boolean shift = (e.stateMask & SWT.SHIFT) == SWT.SHIFT;
                boolean ctrl = (e.stateMask & SWT.CTRL) == SWT.CTRL;
                boolean alt = (e.stateMask & SWT.ALT) == SWT.ALT;
                if(e.character!='\0') {
                    if(e.character==8 || e.character==13 || e.character==127)
                        view.onFunctionKeyPressed(e.character, shift, ctrl, alt);
                    else if(!ctrl && !alt)
                        view.onKeyPressed(e.character);
                }
                else
                    view.onFunctionKeyPressed(e.keyCode, shift, ctrl, alt);
            }
            public void keyReleased(KeyEvent e) {
                //System.out.println(e.toString());
            }
        });

        // nofity view when select font, size and color:
        cmbFontName.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                System.out.println(e.toString());
                view.onFormatChanged(cmbFontName.getText(),
                    null, null, null, null, null
                );
            }
        });
        cmbFontSize.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                System.out.println(e.toString());
                view.onFormatChanged(null,
                    Integer.valueOf(cmbFontSize.getText()),
                    null, null, null, null
                );
            }
        });

        for(int i=0; i<16; i++) {
            mnuColor[i].addSelectionListener(new SelectColorHandler(view, i));
        }
    }


    /**
     * Ready to show the window and run message loop. 
     * 
     * @see jexi.ui.Frame#show()
     */
    public void show() {
        shell.pack();
        shell.open();
        this.textView.setFocus();

        while(!shell.isDisposed())
            if(!display.readAndDispatch())
                display.sleep();
    }

    /**
     * Clean up. 
     * 
     * @see jexi.ui.Frame#dispose()
     */
    public void dispose() {
        // dispose fonts & colors:
        jexi.ui.FontFactory.instance().clearAllFonts();
        jexi.ui.ColorFactory.instance().clearAllColors();

        // dispose the display:
        this.display.dispose();
    }

    // create menu bar:
    private void createMenu() {
        Menu menubar = new Menu(shell, SWT.BAR);

        // File menu:
        final MenuItem mnuFile = new MenuItem(menubar, SWT.CASCADE);
        mnuFile.setText("&File");

        Menu popupmenu = new Menu(mnuFile);
        mnuFile.setMenu(popupmenu);

        final MenuItem mnuFileNew = new MenuItem(popupmenu, SWT.NONE);
        mnuFileNew.setEnabled(false);
        mnuFileNew.setText("&New");

        final MenuItem mnuFileOpen = new MenuItem(popupmenu, SWT.NONE);
        mnuFileOpen.setEnabled(false);
        mnuFileOpen.setText("&Open...\tCtrl+O");

        final MenuItem mnuFileClose = new MenuItem(popupmenu, SWT.NONE);
        mnuFileClose.setEnabled(false);
        mnuFileClose.setText("&Close");

        new MenuItem(popupmenu, SWT.SEPARATOR);

        final MenuItem mnuFileSave = new MenuItem(popupmenu, SWT.NONE);
        mnuFileSave.setEnabled(false);
        mnuFileSave.setText("&Save\tCtrl+S");

        final MenuItem mnuFileSaveAs = new MenuItem(popupmenu, SWT.NONE);
        mnuFileSaveAs.setEnabled(false);
        mnuFileSaveAs.setText("Save &As...");

        new MenuItem(popupmenu, SWT.SEPARATOR);

        final MenuItem mnuFilePageSetup = new MenuItem(popupmenu, SWT.NONE);
        mnuFilePageSetup.setEnabled(false);
        mnuFilePageSetup.setText("Page Set&up...");

        final MenuItem mnuFilePrintPreview = new MenuItem(popupmenu, SWT.NONE);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩精品福利| 欧美色图一区二区三区| 日韩va亚洲va欧美va久久| 亚洲激情欧美激情| 亚洲情趣在线观看| 亚洲综合一区二区精品导航| 亚洲自拍偷拍麻豆| 亚洲福利视频三区| 日本不卡123| 日韩av电影免费观看高清完整版 | 91福利在线导航| 色94色欧美sute亚洲线路一久| 色一情一伦一子一伦一区| 欧美三级电影一区| 91精品福利在线一区二区三区| 欧美成人一区二区| 久久精品日韩一区二区三区| 国产精品久久影院| 亚洲国产精品久久不卡毛片| 性欧美疯狂xxxxbbbb| 久久成人免费网| av电影在线不卡| 欧美日韩高清在线播放| 精品欧美一区二区三区精品久久| 国产视频一区在线播放| 亚洲日穴在线视频| 青青草原综合久久大伊人精品| 久久精品国产精品亚洲综合| 成人h精品动漫一区二区三区| 成人avav影音| 欧美日韩高清不卡| 欧美xxxxx牲另类人与| 国产欧美精品一区二区色综合| 亚洲欧美激情小说另类| 久久不见久久见免费视频7| 粉嫩av一区二区三区粉嫩| 欧洲国内综合视频| 欧美va在线播放| 亚洲专区一二三| 国产mv日韩mv欧美| 精品视频全国免费看| 久久免费看少妇高潮| 亚洲综合免费观看高清完整版在线 | 成人听书哪个软件好| 欧美日韩国产影片| 欧美激情自拍偷拍| 蜜臀久久久久久久| 色综合久久久久综合99| 欧美精品一区二区在线观看| 亚洲精品高清在线| 国产精品白丝av| 欧美精选午夜久久久乱码6080| 国产精品三级在线观看| 日韩精彩视频在线观看| 91在线视频网址| 国产欧美一区二区精品秋霞影院| 日韩高清在线观看| 欧美怡红院视频| 亚洲三级在线播放| 国产91精品免费| 日韩女同互慰一区二区| 天堂蜜桃91精品| 精品婷婷伊人一区三区三| 1024国产精品| 成人免费高清视频在线观看| 久久影院视频免费| 毛片不卡一区二区| 日韩一区二区三区免费看 | 大白屁股一区二区视频| 日韩欧美亚洲国产精品字幕久久久| 亚洲私人黄色宅男| 91在线一区二区| 亚洲色欲色欲www在线观看| 99精品偷自拍| 综合电影一区二区三区 | 日韩精品一区二区三区视频播放 | 免费久久99精品国产| 日韩午夜电影av| 美国av一区二区| 国产午夜精品美女毛片视频| 国产自产v一区二区三区c| 久久天天做天天爱综合色| 精品一区二区在线视频| 久久精品人人做人人爽人人| 国产91精品久久久久久久网曝门 | 日本道色综合久久| 婷婷一区二区三区| 精品成人一区二区三区四区| 国产尤物一区二区在线| 国产精品免费久久| 色八戒一区二区三区| 一区二区三区在线观看欧美| 欧美在线|欧美| 免费人成在线不卡| 国产喷白浆一区二区三区| 一本到不卡免费一区二区| 日本网站在线观看一区二区三区| 欧美tickling挠脚心丨vk| 国产99久久久国产精品免费看| 国产精品久久久久久久久图文区| 色视频欧美一区二区三区| 午夜视频在线观看一区二区三区| 日韩视频免费观看高清完整版 | 欧美一区二区成人| 国产精品99久久久久久宅男| 国产精品黄色在线观看| 欧美午夜免费电影| 国产一区二区福利视频| 亚洲自拍偷拍网站| 亚洲精品在线观| 日本电影欧美片| 九九国产精品视频| 亚洲你懂的在线视频| 91精品国产欧美一区二区| av资源站一区| 久久精品国产澳门| 亚洲欧美日韩小说| 久久久久久一二三区| 欧美老年两性高潮| 波多野结衣中文字幕一区二区三区| 日本怡春院一区二区| 国产精品久久久久久久久动漫 | 国产69精品久久99不卡| 午夜欧美视频在线观看| 国产日韩在线不卡| 欧美成人性福生活免费看| 欧美性xxxxxxxx| 99久久精品免费看国产免费软件| 精品亚洲欧美一区| 视频在线观看91| 亚洲成人自拍偷拍| 亚洲日本va午夜在线影院| 久久蜜桃一区二区| xf在线a精品一区二区视频网站| 欧美主播一区二区三区| 93久久精品日日躁夜夜躁欧美| 国产美女视频一区| 国产在线播精品第三| 美女视频黄频大全不卡视频在线播放| 亚洲精品高清视频在线观看| 国产精品久久久久久久岛一牛影视 | 麻豆国产一区二区| 日韩高清在线一区| 视频一区欧美日韩| 亚洲成av人片| 午夜电影网一区| 亚洲一区二区欧美| 怡红院av一区二区三区| 亚洲裸体xxx| √…a在线天堂一区| 亚洲欧美自拍偷拍色图| 国产精品久久久久久妇女6080| 欧美国产禁国产网站cc| 国产日韩欧美精品电影三级在线| 久久综合九色综合欧美98| 精品成人在线观看| 国产欧美精品一区二区色综合 | 美女视频网站久久| 精品一区二区三区在线观看国产| 日本aⅴ亚洲精品中文乱码| 麻豆精品精品国产自在97香蕉 | 色视频成人在线观看免| 色噜噜夜夜夜综合网| 欧美日韩精品三区| 欧美一区二区三区影视| 91精品麻豆日日躁夜夜躁| 精品美女在线播放| 国产日本欧洲亚洲| 亚洲日本成人在线观看| 亚洲一区二区偷拍精品| 天天色综合天天| 国产精品一色哟哟哟| www..com久久爱| 欧美综合欧美视频| 精品福利av导航| 亚洲日韩欧美一区二区在线| 日韩在线a电影| proumb性欧美在线观看| 国产成人精品网址| 97se亚洲国产综合自在线观| 欧美中文字幕亚洲一区二区va在线| 欧美一区二区视频在线观看2020| 精品电影一区二区| 一区二区三区在线不卡| 免费成人av资源网| 97超碰欧美中文字幕| 日韩免费成人网| 亚洲天堂a在线| 久久99日本精品| 欧美中文字幕一二三区视频| 亚洲精品在线一区二区| 一区二区三区四区中文字幕| 久久99国产精品久久99| 色88888久久久久久影院野外| 欧美一区二区在线视频| 亚洲精品国久久99热| 韩国女主播一区| 51精品秘密在线观看| 一区二区中文视频| 蜜桃av一区二区在线观看|