亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
青青草原综合久久大伊人精品 | 午夜激情一区二区| 国产精品久久99| 国产精品欧美综合在线| 久久久91精品国产一区二区精品| 欧美成人猛片aaaaaaa| 欧美一区国产二区| 日韩一区二区在线观看| 91精品国产91久久久久久最新毛片| 欧美日韩国产综合一区二区三区| 在线观看亚洲专区| 欧美日韩国产系列| 欧美一区二区三区系列电影| 欧美一区国产二区| 欧美精品一区二区高清在线观看 | 亚洲免费av高清| 亚洲美女少妇撒尿| 午夜一区二区三区在线观看| 性做久久久久久免费观看| 日韩国产精品久久久久久亚洲| 蜜桃视频在线观看一区| 精品午夜久久福利影院| 国产福利一区二区| 盗摄精品av一区二区三区| jvid福利写真一区二区三区| 91麻豆精品秘密| 欧美日本精品一区二区三区| 日韩午夜电影在线观看| 久久久国产综合精品女国产盗摄| 欧美激情艳妇裸体舞| 中文字幕在线观看不卡视频| 亚洲精品成人在线| 三级成人在线视频| 国产一区二区伦理片| 不卡一区二区中文字幕| 欧美午夜精品一区| 欧美电影免费观看高清完整版| 国产欧美一区二区三区在线看蜜臀 | 亚洲人午夜精品天堂一二香蕉| 亚洲宅男天堂在线观看无病毒| 日韩电影在线免费观看| 国产一区二区三区免费看| 99久久er热在这里只有精品15| 欧美影院一区二区三区| 精品久久久久久久久久久院品网 | 亚洲欧美日韩国产另类专区| 婷婷久久综合九色综合伊人色| 激情久久五月天| 91麻豆国产自产在线观看| 日韩一区二区在线看片| 17c精品麻豆一区二区免费| 五月激情综合色| 福利一区福利二区| 欧美日本韩国一区二区三区视频| 国产日韩欧美一区二区三区综合 | www.亚洲精品| 欧美一区二区三区四区视频| 亚洲国产成人一区二区三区| 偷窥国产亚洲免费视频| 成人爱爱电影网址| 日韩视频永久免费| 亚洲在线一区二区三区| 国产精品影视网| 欧美精品乱码久久久久久按摩| 欧美激情在线看| 日本成人在线网站| 色综合一个色综合亚洲| 精品国产成人系列| 午夜精品久久久久久久99樱桃 | 国产日本一区二区| 日韩和欧美一区二区三区| av电影在线观看不卡| 日韩欧美亚洲国产精品字幕久久久| 亚洲欧美日韩国产成人精品影院| 国产制服丝袜一区| 91精选在线观看| 亚洲免费观看视频| 9i在线看片成人免费| 精品奇米国产一区二区三区| 亚洲成人av福利| 91在线视频免费观看| 国产日韩欧美精品一区| 久久国产精品色| 欧美剧情片在线观看| 一区二区三区精品久久久| 成人夜色视频网站在线观看| 亚洲精品一区二区三区四区高清 | 国产精品亚洲专一区二区三区 | 精品久久久久久久久久久久久久久久久| 一区二区三区欧美| gogo大胆日本视频一区| 日本一区二区三区久久久久久久久不| 免费看黄色91| 日韩视频免费观看高清在线视频| 午夜久久久久久| 欧美日韩国产一级片| 一区二区三区日韩欧美| 色婷婷一区二区三区四区| 国产精品欧美极品| 成人午夜在线播放| 国产精品乱码一区二三区小蝌蚪| 国产在线一区二区综合免费视频| 欧美videossexotv100| 免费人成网站在线观看欧美高清| 日韩一区二区三免费高清| 日韩av成人高清| 日韩欧美综合一区| 精品一区二区免费| 亚洲精品在线观| 国产激情偷乱视频一区二区三区| 2欧美一区二区三区在线观看视频| 久久99精品国产91久久来源| 精品国产乱码久久| 国产高清在线观看免费不卡| 国产拍欧美日韩视频二区| 不卡的av电影| 亚洲最新在线观看| 欧美日本一区二区| 另类小说一区二区三区| 久久亚区不卡日本| 懂色av一区二区三区免费看| 国产精品狼人久久影院观看方式| av亚洲产国偷v产偷v自拍| 亚洲视频一区在线| 欧美日韩一卡二卡三卡| 免费在线欧美视频| 久久精品网站免费观看| 成人avav影音| 亚洲一区二区三区小说| 欧美一区二区三区视频| 国产乱理伦片在线观看夜一区| 欧美激情资源网| 色婷婷国产精品久久包臀 | 欧美日韩一区二区三区在线| 日韩av在线播放中文字幕| 精品国产乱码久久久久久夜甘婷婷| 国产精品一区二区果冻传媒| 成人欧美一区二区三区在线播放| 欧美探花视频资源| 久久精品国产一区二区三区免费看| 欧美国产精品一区| 欧美视频一区二区三区| 九色综合狠狠综合久久| 亚洲欧美综合色| 宅男噜噜噜66一区二区66| 国产乱子轮精品视频| 亚洲男人的天堂在线观看| 91精品国产欧美日韩| 成人黄色一级视频| 午夜精品久久久久影视| 欧美激情在线观看视频免费| 欧美乱妇23p| 成人免费看黄yyy456| 亚洲福中文字幕伊人影院| 亚洲精品在线观| 精品视频一区二区三区免费| 国内不卡的二区三区中文字幕 | 粉嫩av一区二区三区粉嫩| 一级日本不卡的影视| 久久男人中文字幕资源站| 欧美在线视频你懂得| 国产成人在线电影| 亚洲电影欧美电影有声小说| 国产性天天综合网| 69久久99精品久久久久婷婷 | 欧美不卡一区二区| 欧美专区日韩专区| 国产成人无遮挡在线视频| 调教+趴+乳夹+国产+精品| 欧美激情在线一区二区| 日韩丝袜美女视频| 日本久久电影网| 国产一区二区精品在线观看| 亚洲一二三区在线观看| 日本一区二区三区四区| 日韩精品中文字幕在线不卡尤物| 99国产精品久久久久久久久久| 韩国精品在线观看| 同产精品九九九| 亚洲精品美国一| 中文字幕精品三区| 精品日韩一区二区三区免费视频| 欧美丝袜丝交足nylons| 成人av动漫在线| 国产乱人伦精品一区二区在线观看 | 欧美一级欧美一级在线播放| 91毛片在线观看| 99久久久国产精品| 国产成人精品综合在线观看| 久久国产精品一区二区| 五月婷婷另类国产| 一区二区三区四区激情| 中文字幕一区av| 国产精品视频第一区| 久久综合九色综合97婷婷女人 | 国产精品午夜在线观看| 久久久亚洲高清| 日韩西西人体444www| 欧美一区二区三区影视| 在线成人午夜影院|