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

📄 menuhelper.java

📁 java写的qq代码实现qq的部分功能
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
/*
* LumaQQ - Java QQ Client
*
* Copyright (C) 2004 luma <stubma@163.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package edu.tsinghua.lumaqq.ui.helper;

import java.util.List;

import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MenuAdapter;
import org.eclipse.swt.events.MenuEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.ColorDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;

import edu.tsinghua.lumaqq.IconHolder;
import edu.tsinghua.lumaqq.LumaQQ;
import edu.tsinghua.lumaqq.models.ClusterModel;
import edu.tsinghua.lumaqq.models.FriendModel;
import edu.tsinghua.lumaqq.models.GroupModel;
import edu.tsinghua.lumaqq.models.IQQNode;
import edu.tsinghua.lumaqq.models.MobileModel;
import edu.tsinghua.lumaqq.qq.QQ;
import edu.tsinghua.lumaqq.qq.QQClient;
import edu.tsinghua.lumaqq.qq.Util;
import edu.tsinghua.lumaqq.qq.debug.Debugger;
import edu.tsinghua.lumaqq.qq.robot.xml.Robot;
import edu.tsinghua.lumaqq.ui.MainShell;
import edu.tsinghua.lumaqq.ui.ReceiveIMWindow;
import edu.tsinghua.lumaqq.ui.SendIMWindow;
import edu.tsinghua.lumaqq.ui.config.sys.SystemOptionWindow;
import edu.tsinghua.lumaqq.ui.config.user.UserInfoWindow;
import edu.tsinghua.lumaqq.ui.dialogs.AboutDialog;
import edu.tsinghua.lumaqq.ui.dialogs.MobileInputDialog;
import edu.tsinghua.lumaqq.ui.jobs.DownloadFriendRemarkJob;
import edu.tsinghua.lumaqq.ui.jobs.DownloadGroupJob;
import edu.tsinghua.lumaqq.ui.jobs.JobExecutor;
import edu.tsinghua.lumaqq.ui.jobs.RefreshFriendJob;
import edu.tsinghua.lumaqq.ui.jobs.UploadGroupJob;
import edu.tsinghua.lumaqq.ui.tool.BusyFlag;
import edu.tsinghua.lumaqq.ui.tool.ShellLauncher;
import edu.tsinghua.lumaqq.ui.wizard.search.SearchWizard;
import edu.tsinghua.lumaqq.utils.OptionUtil;
import edu.tsinghua.lumaqq.utils.ReplyUtil;
import edu.tsinghua.lumaqq.widgets.ClusterMessageExporter;
import edu.tsinghua.lumaqq.widgets.FriendMessageExporter;
import edu.tsinghua.swt.models.INode;
import edu.tsinghua.swt.models.ShutterModel;
import edu.tsinghua.swt.widgets.CoolButton;
import edu.tsinghua.swt.widgets.Shutter;

/**
 * 包含一些菜单初始化的方法和工具方法
 * 
 * @author luma
 */
public class MenuHelper {
    private MainShell main;
    private ShellLauncher shellLauncher;
    private IconHolder icons;
    private ExportHelper exportHelper;
    private Shell shell;
    private QQClient client;
    private UIHelper uiHelper;
    private Display display;
    private OptionUtil options;
    private ReplyUtil replies;
    private Shutter shutter;
    private ShutterModel model;
    private MVCHelper mvcHelper;
    
    // 两个弹出菜单
    private Menu statusMenu, sysMenu, groupMenu, friendMenu, awayMenu, displayMenu, clusterMenu, mobileMenu, viewBarMenu;
    
    public MenuHelper(MainShell main) {
        this.main = main;
        shellLauncher = main.getShellLauncher();
        icons = IconHolder.getInstance();
        exportHelper = main.getExportHelper();
        shell = main.getShell();
        client = main.getClient();
        uiHelper = main.getUIHelper();
        display = main.getDisplay();
        options = OptionUtil.getInstance();
        replies = ReplyUtil.getInstance();
        shutter = main.getShutter();
        mvcHelper = main.getMVCHelper();
        model = main.getModel();
    }    

	/**
	 * 创建所有菜单
	 */
	public void initMenu() {
		initStatusMenu();
		initSysMenu();
		initGroupMenu();
		initFriendMenu();
		initClusterMenu();
		initMobileMenu();
		initViewBarMenu();
	}

	/**
     * 初始化viewBar菜单
     */
    private void initViewBarMenu() {
        viewBarMenu = new Menu(main.getViewBar());
        
        final MenuItem mi = new MenuItem(viewBarMenu, SWT.PUSH);
        mi.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                if(OptionUtil.getInstance().isShowViewBar()) {
                    OptionUtil.getInstance().setShowViewBar(false);
                    main.getUIHelper().hideViewBar();
                } else {
                    OptionUtil.getInstance().setShowViewBar(true);
                    main.getUIHelper().showViewBar();
                }
            }
        });
        viewBarMenu.addMenuListener(new MenuAdapter() {
            public void menuShown(MenuEvent e) {
                if(OptionUtil.getInstance().isShowViewBar())
                    mi.setText(LumaQQ.getString("menu.view.bar.hide"));
                else
                    mi.setText(LumaQQ.getString("menu.view.bar.show"));
            }
        });
    }

    /**
	 * 初始化群菜单
	 */
	private void initClusterMenu() {
		clusterMenu = new Menu(shell, SWT.POP_UP);
		// 显示组功能菜单
		MenuItem mi = new MenuItem(clusterMenu, SWT.PUSH);
		mi.setText(LumaQQ.getString("menu.friend.show.group.menu"));
		mi.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                setGroupMenuLocation(display.getCursorLocation());
                setGroupMenuVisible(true);
            }
		});
		// separator
		mi = new MenuItem(clusterMenu, SWT.SEPARATOR);
		// 发群组消息
		mi = new MenuItem(clusterMenu, SWT.PUSH);
		mi.setText(LumaQQ.getString("menu.cluster.send"));
		mi.setImage(icons.getImage(IconHolder.icoSendReceiveMessage));
		mi.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {					
					shellLauncher.openClusterIMWindow((CoolButton)clusterMenu.getData());
				}
			}
		);
		// 查看群组资料
		mi = new MenuItem(clusterMenu, SWT.PUSH);
		mi.setImage(icons.getImage(IconHolder.icoPersonInfo));
		mi.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {					
					shellLauncher.openClusterInfoWindow((CoolButton)clusterMenu.getData());
				}
			}
		);
		// separator
		mi = new MenuItem(clusterMenu, SWT.SEPARATOR);
		// 消息管理菜单
		mi = new MenuItem(clusterMenu, SWT.CASCADE);
		mi.setText(LumaQQ.getString("menu.cluster.message.manage"));
		mi.setImage(icons.getImage(IconHolder.icoMessageManage));
		Menu msgMenu = new Menu(mi);
		mi.setMenu(msgMenu);
		// 导出为文本文件菜单
		mi = new MenuItem(msgMenu, SWT.PUSH);
		mi.setText(LumaQQ.getString("menu.cluster.message.export"));
		mi.setImage(icons.getImage(IconHolder.icoTxtFile));
		mi.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					// 得到群的model
					CoolButton viewPart = (CoolButton)clusterMenu.getData();
					ClusterModel c = (ClusterModel)viewPart.getData();
					// 导出
					exportHelper.exportMessage(c.getClusterId(), new ClusterMessageExporter(c));
				}
			}
		);
		// separator
		mi = new MenuItem(clusterMenu, SWT.SEPARATOR);
		// 退出该群
		mi = new MenuItem(clusterMenu, SWT.PUSH);
		mi.setText(LumaQQ.getString("menu.cluster.exit"));
		mi.setImage(icons.getImage(IconHolder.icoExit));
		mi.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					CoolButton viewPart = (CoolButton)clusterMenu.getData();
				    if(viewPart.isDisposed())
				        return;
				    
					ClusterModel c = (ClusterModel)viewPart.getData();
					boolean yes = false;
					if(c.getCreator() == main.getMyModel().getQQ())
					    yes = MessageDialog.openQuestion(shell, LumaQQ.getString("message.box.common.question.title"), LumaQQ.getString("message.box.exit.my.cluster"));
					else
					    yes = MessageDialog.openQuestion(shell, LumaQQ.getString("message.box.common.question.title"), LumaQQ.getString("message.box.exit.cluster"));
					if(yes) {
						if(c.isPermanent())
						    client.exitCluster(c.getClusterId());													
						else
						    client.exitTempCluster(c.getType(), c.getClusterId(), c.getParentClusterId());
					}
				}
			}
		);
		// 菜单事件监听器
		clusterMenu.addMenuListener(new MenuAdapter() {
            public void menuShown(MenuEvent e) {
				// 得到群的model
				CoolButton viewPart = (CoolButton)clusterMenu.getData();
				ClusterModel c = (ClusterModel)viewPart.getData();
				
				if(c.getCreator() == main.getMyModel().getQQ())
				    clusterMenu.getItem(3).setText(LumaQQ.getString("menu.cluster.modifyinfo"));
				else
				    clusterMenu.getItem(3).setText(LumaQQ.getString("menu.cluster.viewinfo"));
            }
		});		
	}

	/**
	 * 初始化组菜单
	 */
	private void initGroupMenu() {
		groupMenu = new Menu(shell, SWT.POP_UP);
		// 显示小头像
		MenuItem mi = new MenuItem(groupMenu, SWT.PUSH);
		mi.setText(LumaQQ.getString("menu.friend.showsmall"));
		mi.setImage(icons.getImage(IconHolder.icoSmallFace));
		mi.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
				    uiHelper.showSmallFace(true);
				}
			}
		);
		// 显示大头像
		mi = new MenuItem(groupMenu, SWT.PUSH);
		mi.setText(LumaQQ.getString("menu.friend.showlarge"));
		mi.setImage(icons.getImage(IconHolder.icoLargeFace));
		mi.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
				    uiHelper.showSmallFace(false);
				}
			}
		);		
		// 群操作菜单
		mi = new MenuItem(groupMenu, SWT.CASCADE);
		mi.setText(LumaQQ.getString("menu.group.cluster"));
		mi.setImage(icons.getImage(IconHolder.icoCluster));
		Menu subMenu = new Menu(mi);
		mi.setMenu(subMenu);
		// 查找一个群
		mi = new MenuItem(subMenu, SWT.PUSH);
		mi.setText(LumaQQ.getString("menu.group.cluster.search"));
		mi.setImage(icons.getImage(IconHolder.icoSearchCluster));
		mi.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent e) {
				if(main.getClient().getUser().isLoggedIn())
					shellLauncher.openSearchWizard(SearchWizard.HOW_TO_SEARCH_CLUSTER);
			}
		});	
		// 创建一个群
		mi = new MenuItem(subMenu, SWT.PUSH);
		mi.setText(LumaQQ.getString("menu.group.cluster.create"));
		mi.setImage(icons.getImage(IconHolder.icoAddCluster));
		mi.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent e) {
				shellLauncher.openClusterWizard();
			}
		});	
		// 查找校友录
		mi = new MenuItem(subMenu, SWT.PUSH);
		mi.setText(LumaQQ.getString("menu.group.alumni.search"));
		mi.setImage(icons.getImage(IconHolder.icoSearchCluster));
		mi.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                shellLauncher.goAlumni();
            }
		});
		// 创建校友录
		mi = new MenuItem(subMenu, SWT.PUSH);
		mi.setText(LumaQQ.getString("menu.group.alumni.create"));
		mi.setImage(icons.getImage(IconHolder.icoAddAlbum));
		mi.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                shellLauncher.goAlumni();
            }
		});
		// separator
		mi = new MenuItem(subMenu, SWT.SEPARATOR);
		// 登录群社区
		mi = new MenuItem(subMenu, SWT.PUSH);
		mi.setText(LumaQQ.getString("menu.group.community"));
		mi.setImage(icons.getImage(IconHolder.icoCluster));
		mi.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                shellLauncher.goClusterCommunity();
            }
		});
		// 颜色设置
		mi = new MenuItem(groupMenu, SWT.CASCADE);
		mi.setText(LumaQQ.getString("menu.group.color"));
		mi.setImage(icons.getImage(IconHolder.icoColor));
		// 设置背景颜色
		Menu colorMenu = new Menu(mi);
		mi.setMenu(colorMenu);
		MenuItem sub = new MenuItem(colorMenu, SWT.PUSH);
		sub.setText(LumaQQ.getString("menu.group.group.color"));

⌨️ 快捷键说明

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