网站源码查看

来源:互联网 发布:淘宝客服兼职 招聘靠 编辑:程序博客网 时间:2024/05/01 01:19

 package com.longruan.lrgis.gui;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;

import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.ProgressBar;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;

import com.longruan.lrgis.gui.util.SWTResourceManager;

public class GetHtmlCode {
    private Label label_2;
    private Label label_1;
    private TabFolder tabFolder;
    private Label label;
    private Button saveBtn;
    private Button exitBtn;
    private Button resetBtn;
    private Text fileNameText;

    private Text textCode;

    private Combo combo;

    private Text httpText;

    protected Shell shell;

    private Button viewBtn;

    private Browser browser;

    private ProgressBar progressBar;

    // Main 函数,主入口
    public static void main(String[] args) {
        try {
            GetHtmlCode window = new GetHtmlCode();
            window.open();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 显示设备
    public void open() {
        final Display display = Display.getDefault();
        createContents();
        shell.open();
        shell.layout();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
    }

    // 查看输入网页源代码操作
    public void viewCode() {
        try {
            viewBtn.setEnabled(false); // 点击按钮操作后,设置按钮为不可点击状态
            URL url = new URL(httpText.getText());
            BufferedReader in = new BufferedReader(new InputStreamReader(url
                    .openStream(), combo.getText()));
            textCode.setText("");
            String tmpCode = "";
            int i = 0;
            progressBar.setSelection(i);
            while ((tmpCode = in.readLine()) != null) {
                textCode.append(tmpCode + '/n');
                progressBar.setSelection(i);
                i++;
            }
            progressBar.setSelection(5000);
            viewBtn.setEnabled(true);
            urlOpenMess();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 退出提示
    public void exit() {
        MessageBox mess = new MessageBox(shell, SWT.OK | SWT.CANCEL
                | SWT.ICON_QUESTION);
        mess.setText("退出");
        mess.setMessage("是否确定退出");
        if (mess.open() == SWT.OK) {
            System.exit(0);
        }
    }

    // 提示是否有源代码需要保存
    public void nullMessBox() {
        MessageBox mess = new MessageBox(shell, SWT.OK | SWT.ICON_WARNING);
        mess.setText("提示");
        mess.setMessage("并没有源代码");
        mess.open();
    }

    public void saveCode() {
        // 判断是否有源代码,没有则直接返回,不进行任何操作
        if (textCode.getText().equals("")) {
            nullMessBox();
            return;
        }
        // 新建一个对话框,提示要保存的路径
        FileDialog file = new FileDialog(shell, SWT.SAVE);
        String[] filter = { "*.txt", "*.html", "*.htm", "*.*" };
        file.setFilterExtensions(filter);
        String fileName = file.open();
        // 验证是否输入要保存的文件名,如果没有,则直接返回,不进行操作
        if (fileName == null)
            return;
        try {
            FileWriter in = new FileWriter(fileName);
            BufferedWriter out = new BufferedWriter(in);
            out.write(textCode.getText());
            out.flush();
            out.close();
            fileNameText.setText(fileName); // 保存完毕,显示保存路径
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 代码显示完后提示是否进行网页浏览
    public void urlOpenMess() {
        MessageBox mess = new MessageBox(shell, SWT.OK | SWT.CANCEL
                | SWT.ICON_QUESTION);
        mess.setText("提示");
        mess.setMessage("是否打开网页预览");
        if (mess.open() == SWT.OK) {
            browser.setUrl(httpText.getText());
        }
    }

    // 窗体绘制
    protected void createContents() {
        shell = new Shell(SWT.MIN);
        shell.setImage(SWTResourceManager
                .getImage(GetHtmlCode.class, "ico.ICO"));
        shell.setSize(685, 554);

        // 设置窗体居中,得到屏幕分辨率后与程序大小进行计算
        int x = (shell.getMonitor().getClientArea().width - shell.getSize().x) / 2;
        int y = (shell.getMonitor().getClientArea().height - shell.getSize().y) / 2;
        shell.setLocation(x, y);
        shell
                .setText("网页源代码查看器修正版 By hmilyld 04.11------ http://www.hmilyld.cn");

        final Menu menu = new Menu(shell, SWT.BAR);
        shell.setMenuBar(menu);

        final MenuItem menuItem = new MenuItem(menu, SWT.CASCADE);
        menuItem.setText("文件(&F)");

        final Menu menu_1 = new Menu(menuItem);
        menuItem.setMenu(menu_1);

        // 点击退出按钮以后的操作
        final MenuItem exitItem = new MenuItem(menu_1, SWT.NONE);
        exitItem.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent arg0) {
                exit();
            }
        });
        exitItem.setText("退出(&Q)");

        label = new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL);
        label.setBounds(0, 459, 679, 13);

        label_1 = new Label(shell, SWT.RIGHT);
        label_1.setText("网页代码查看器修正版 By hmilyld 04.11");
        label_1.setBounds(420, 478, 249, 13);

        tabFolder = new TabFolder(shell, SWT.NONE);
        tabFolder.setBounds(10, 83, 659, 370);

        final TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
        tabItem.setText("源代码");

        textCode = new Text(tabFolder, SWT.V_SCROLL | SWT.BORDER);
        tabItem.setControl(textCode);

        final TabItem tabItem_1 = new TabItem(tabFolder, SWT.NONE);
        tabItem_1.setText("网页预览");

        browser = new Browser(tabFolder, SWT.NONE);
        browser.setUrl("");
        tabItem_1.setControl(browser);

        label_2 = new Label(shell, SWT.NONE);
        label_2.setText("请输入要查看源代码的网页地址:(包含http://)");
        label_2.setBounds(10, 10, 270, 13);

        httpText = new Text(shell, SWT.BORDER);
        httpText.setToolTipText("输入网页地址,包含http://");
        httpText.setText("http://www.hmilyld.cn");
        httpText.setBounds(10, 27, 362, 25);

        // 点击查看按钮以后的操作
        viewBtn = new Button(shell, SWT.NONE);
        viewBtn.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent arg0) {
                viewCode();
            }
        });
        viewBtn.setText("查看");
        viewBtn.setBounds(456, 29, 67, 23);

        // 点击清除按钮以后的操作
        resetBtn = new Button(shell, SWT.NONE);
        resetBtn.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent arg0) {
                textCode.setText("");
            }
        });
        resetBtn.setBounds(529, 29, 67, 23);
        resetBtn.setText("清除");

        combo = new Combo(shell, SWT.NONE);
        combo.setToolTipText("网页编码类型,如出现乱码,请选择这里");
        combo.setText("gb2312");
        combo.add("gb2312");
        combo.add("utf-8");
        combo.setBounds(383, 31, 67, 21);

        // 点击退出按钮以后的操作
        exitBtn = new Button(shell, SWT.NONE);
        exitBtn.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent arg0) {
                exit();
            }
        });
        exitBtn.setBounds(602, 29, 67, 23);
        exitBtn.setText("退出");

        progressBar = new ProgressBar(shell, SWT.NONE);
        progressBar.setMaximum(5000);
        progressBar.setBounds(10, 62, 270, 17);
        progressBar.setToolTipText("代码读取进度条");

        fileNameText = new Text(shell, SWT.BORDER);
        fileNameText.setToolTipText("源代码保存路径");
        fileNameText.setBounds(286, 58, 249, 25);

        // 保存源代码按钮的操作
        saveBtn = new Button(shell, SWT.NONE);
        saveBtn.setToolTipText("保存查看到的网页源代码");
        saveBtn.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent arg0) {
                saveCode();
            }
        });
        saveBtn.setBounds(539, 58, 130, 23);
        saveBtn.setText("代码保存");
        shell.setTabList(new Control[] { httpText, combo, viewBtn, resetBtn,
                exitBtn, saveBtn });
    }
}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 保温杯磕了个坑怎么办 韩国旅游签证5年怎么办 新娘裙太长怎么办请茶 花无缺逾期20天怎么办 酷云密码忘了怎么办 我的声音不好听怎么办 耳朵后面长了个硬包怎么办 汽车油表不动了怎么办 油位传感器坏了怎么办 孕妇牙疼耳朵疼怎么办 耳机戴的耳朵疼怎么办 擤鼻涕左耳朵疼怎么办 擤完鼻涕耳朵疼怎么办 五岁儿童耳朵疼怎么办 耳朵里面长了个硬包怎么办 耳朵里有耳屎响怎么办 耳屎粘在耳膜上怎么办 小孩脖子上有淋巴结怎么办 大腿内侧的筋疼怎么办 大腿内侧磨的疼怎么办 孕晚期大腿根疼怎么办 吞口水耳朵会响怎么办 耳朵里面老痒该怎么办 牙疼头疼耳朵疼怎么办 耳朵里流水还疼怎么办 单侧耳朵里面疼怎么办 打到睾丸很疼怎么办 大拇手指关节疼怎么办 早上醒来耳朵嗡嗡响怎么办 两个月宝宝起湿疹怎么办 运动时耳朵闷堵怎么办 刚打的耳洞红肿怎么办 耳洞好了又肿了怎么办 耳洞发炎流血了怎么办 脸上出油怎么办小窍门 耳洞发炎化脓了怎么办 狗狗耳朵化脓了怎么办 狗狗耳朵破了怎么办 泰迪肛门腺发炎怎么办 狗狗肛门腺发炎怎么办 狗狗耳朵受伤了怎么办