⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 systemoptionshell.java

📁 用java实现的
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
	}

	/**
     * 开始验证代理
     */
    protected synchronized void startVerify() {
        if(verifier == null && checkProxy()) {
            btnVerify.setEnabled(false);
            InetSocketAddress proxyAddress = new InetSocketAddress(textProxyAddress.getText(), Utils.getInt(textProxyPort.getText(), 1080));
            verifier = new ProxyVerifier(this, proxyAddress, comboProxyType.getText(), comboMethod.getSelectionIndex() == 0, textProxyUsername.getText(), textProxyPassword.getText());
            verifier.start();
        }
    }
    
    /**
     * 停止验证代理
     */
    protected synchronized void stopVerify() {
        if(verifier != null) {            
            try {
                verifier.dispose();
            } catch (IOException e) {
            }
            verifier = null;
        }
    }

    /**
	 * 检查代理服务器的地址和端口是否输入了,并且是否有效
	 * @return true表示输入了,false则提示
	 */
	private boolean checkProxy() {
        if(textProxyAddress.getText().equals("")) {
            MessageBox box = new MessageBox(shell, SWT.ICON_WARNING | SWT.OK);
            box.setText(LumaQQ.getResourceString("message.box.common.warning.title"));
            box.setMessage(LumaQQ.getResourceString("message.box.please.fill.proxy.address"));
            box.open();
            return false;
        } else {
            int port = Utils.getInt(textProxyPort.getText(), 0);
            if(port == 0) {
	            MessageBox box = new MessageBox(shell, SWT.ICON_WARNING | SWT.OK);
	            box.setText(LumaQQ.getResourceString("message.box.common.warning.title"));
	            box.setMessage(LumaQQ.getResourceString("message.box.please.fill.proxy.port"));
	            box.open();
	            return false;                
            }
        }
        return true;
	}
	
	/**
	 * 填充Http代理到代理列表框中
	 */
	private void fillSocks5Proxy() {	    
	    proxyList.removeAll();
	    StringBuffer sb = new StringBuffer();
	    int size = proxies.getSocksProxySize();
	    for(int i = 0; i < size; i++) {
	        Socks5Proxy proxy = proxies.getSocksProxy(i);
	        addSocks5Proxy(sb, proxy);
	    }
	}
	
	/**
	 * 在List中添加一项Socks 5代理
	 * @param sb
	 * @param proxy
	 */
	private void addSocks5Proxy(StringBuffer sb, Socks5Proxy proxy) {
        sb.delete(0, sb.length());
        sb.append(proxy.getServer())
        	.append(':')
        	.append(proxy.getPort());
        if(!proxy.getUsername().equals("")) {
            sb.append(' ')
            	.append('[')
            	.append(proxy.getUsername())
            	.append(':')
            	.append(proxy.getPassword())
            	.append(']');
        }
        proxyList.add(sb.toString());
	}
	
	/**
	 * 在List中添加一项Http代理
	 * @param sb
	 * @param proxy
	 */
	private void addHttpProxy(StringBuffer sb, HttpProxy proxy) {
        sb.delete(0, sb.length());
        sb.append(proxy.getServer())
        	.append(':')
        	.append(proxy.getPort());
        if(!proxy.getUsername().equals("")) {
            sb.append(' ')
            	.append('[')
            	.append(proxy.getUsername())
            	.append(':')
            	.append(proxy.getPassword())
            	.append(']');
        }
        proxyList.add(sb.toString());
	}
	
	/**
	 * 填充Socks 5代理到代理列表框中
	 */
	private void fillHttpProxy() {
	    proxyList.removeAll();
	    StringBuffer sb = new StringBuffer();
	    int size = proxies.getHttpProxySize();
	    for(int i = 0; i < size; i++) {
	        HttpProxy proxy = proxies.getHttpProxy(i);
	        addHttpProxy(sb, proxy);
	    }
	}
	
	/**
	 * 填充TCP Server列表到下拉框
	 */
	private void fillTcpServers() {
		for(int i = 0; i < LumaQQ.tcpServers.length; i++)
			comboServer.add(LumaQQ.tcpServers[i]);
	}
	
	/**
	 * 填充UDP Server列表到下拉框
	 */
	private void fillUdpServers() {
		for(int i = 0; i < LumaQQ.udpServers.length; i++)
			comboServer.add(LumaQQ.udpServers[i]);
	}

	/**
	 * 保存所作的修改
	 */
	private void saveChange() {
		// 界面设置区
		options.setAutoHide(chkAutoHide.getSelection());
		options.setShowTip(chkShowTip.getSelection());
		options.setShowOnlineTip(chkShowOnlineTip.getSelection());
		options.setShowMessageTip(chkShowMessageTip.getSelection());
		if(!chkShowMessageTip.getSelection())
		    main.clearAllMessageTip();
		// 消息设置区
		options.setAutoEject(chkAutoEject.getSelection());
		options.setRejectStranger(chkRejectStranger.getSelection());
		options.setEnableSound(chkEnableSound.getSelection());
		main.soundDaemon.setEnable(chkEnableSound.getSelection());
		// 登陆设置区
		options.setServer(comboServer.getText());
		options.setAutoSelect(chkAutoSelect.getSelection());
		options.setUseTcp(comboMethod.getSelectionIndex() == 1);
		options.setProxyServer(textProxyAddress.getText());
		options.setProxyPort(Utils.getInt(textProxyPort.getText(), 1080));
		options.setProxyUsername(textProxyUsername.getText());
		options.setProxyPassword(textProxyPassword.getText());
        options.setProxyType(comboProxyType.getText());
		if(chkUseProxy.getSelection()) {
		    if(comboProxyType.getSelectionIndex() == 1 && !options.isUseTcp()) {
		        options.setUseTcp(true);
		        options.setServer(LumaQQ.tcpServers[0]);		        
		    }
		} else
		    options.setProxyType("None");
	}
	
	/**
	 * 保存所作的修改
	 * @return 创建的面板
	 */
	private Composite createPanel() {
		Composite comp = new Composite(shell, SWT.NONE);
		comp.setBackground(panelBackground);
		FormData fd = new FormData();
		fd.left = new FormAttachment(buttons[0], 5, SWT.RIGHT);
		fd.right = new FormAttachment(100, -5);
		fd.top = new FormAttachment(0, 5);
		fd.bottom = new FormAttachment(100, -36);
		comp.setLayoutData(fd);
		comp.setLayout(new FormLayout());
		return comp;
	}

	/**
	 * 打开shell
	 */
	public void open()	{
		// 打开shell
		shell.layout();
		// set dialog to center of screen
		Rectangle dialogRect = shell.getBounds();
		Rectangle displayRect = display.getBounds();
		shell.setLocation((displayRect.width - dialogRect.width) / 2, (displayRect.height - dialogRect.height) / 2);
		shell.open();
	}

	/* (non-Javadoc)
	 * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent)
	 */
	public void widgetDisposed(DisposeEvent e) {
		bannerBackground.dispose();
		controlBackground.dispose();
		panelBackground.dispose();
		commonButtonColor.dispose();
	}
	
	/**
	 * 激活该窗口
	 */
	public void setActive() {
		shell.setActive();
	}
	
	/**
	 * 代理方法,设置窗口的最小化状态
	 * @param b
	 */
	public void setMinimized(boolean b) {
		shell.setMinimized(b);
	}
	
	/**
	 * 显示一个面板
	 * @param panel 面板的ID
	 */
	public void showPanel(int panel) {
		if(panel == prevPanel) return;
		else {
			prevButton.setImage(null);
			prevComposite.setVisible(false);
			prevPanel = panel;
			buttons[panel].setImage(icons.getResource(IconHolder.icoArrow));
			composites[panel].setVisible(true);
			prevButton = buttons[panel];
			prevComposite = composites[panel];
		}
	}
	
	/**
	 * 得到shell
	 * @return
	 */
	public Shell getShell() {
		return shell;
	}
	
	/**
	 * 关闭窗口
	 */
	public void close() {
		shell.close();
	}
	
	/* (non-Javadoc)
	 * @see org.eclipse.swt.events.ShellListener#shellClosed(org.eclipse.swt.events.ShellEvent)
	 */
	public void shellClosed(ShellEvent e) {
		main.systemOptionShell = null;
		stopVerify();
	}

    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.IProxyHandler#proxyReady(java.net.InetSocketAddress)
     */
    public void proxyReady(InetSocketAddress bindAddress) throws IOException {
        stopVerify();
        display.syncExec(new Runnable() {
            public void run() {
                btnVerify.setEnabled(true);
                MessageBox box = new MessageBox(shell, SWT.ICON_INFORMATION | SWT.OK);
                box.setText(LumaQQ.getResourceString("message.box.common.success.title"));
                box.setMessage(LumaQQ.getResourceString("message.box.proxy.verify.ok"));
                box.open();
            }
        });
    }

    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.IProxyHandler#proxyAuthFail()
     */
    public void proxyAuthFail() {
        stopVerify();
        display.syncExec(new Runnable() {
            public void run() {
                btnVerify.setEnabled(true);
                MessageBox box = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
                box.setText(LumaQQ.getResourceString("message.box.proxy.error.title"));
                box.setMessage(LumaQQ.getResourceString("message.box.proxy.verify.fail"));
                box.open();
            }
        });
    }

    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.IProxyHandler#proxyError(java.lang.Exception)
     */
    public synchronized void proxyError(final Exception e) {
        if(verifier != null) {
	        stopVerify();
	        display.syncExec(new Runnable() {
	            public void run() {
	                btnVerify.setEnabled(true);
	                MessageBox box = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
	                box.setText(LumaQQ.getResourceString("message.box.proxy.error.title"));
	                box.setMessage(e.getMessage());
	                box.open();
	            }
	        });            
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -