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

📄 mainshell.java

📁 lumaQQ的源文件
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
			@Override
			public void controlResized(ControlEvent e) {
				Composite panel = (Composite)e.getSource();
				Rectangle rect = panel.getClientArea();
				
				int childrenHeight = 47 + 5 + 19 + 5 + 20 + 10 + 26;
				int reference = (rect.height - childrenHeight) >> 1;
				FormData fd = (FormData)lblLogo.getLayoutData();
				fd.left.offset = (rect.width - 160) >> 1;
				fd.top.offset = reference;
				
				fd = (FormData)waitingPanelAnimator.getLayoutData();
				fd.left.offset = (rect.width - 108) >> 1;
				fd.top.offset = reference + 52;
				
				fd = (FormData)waitingPanelHint.getLayoutData();
				fd.left.offset = (rect.width - 160) >> 1;
				fd.top.offset = reference + 47 + 5 + 19 + 5;
				
				fd = (FormData)lblCancel.getLayoutData();
				fd.left.offset = (rect.width - 90) >> 1;
				fd.top.offset = reference + 47 + 5 + 19 + 5 + 20 + 10;
				
				panel.layout();
			}
		});
		
		return panel;
	}
	
	/**
	 * 设置等待面板的提示
	 * 
	 * @param text
	 */
	public void setWaitingPanelHint(String text) {
		waitingPanelHint.setText(text);
	}
	
	/**
	 * 停止等待面板的动画
	 */
	public void stopWaitingPanelAnimation() {
		waitingPanelAnimator.stopAnimation();
	}
	
	/**
	 * 回复等待面板的动画
	 */
	public void resumeWaitingPanelAnimation() {
		waitingPanelAnimator.resumeAnimation();
	}

	/**
	 * 初始化主面板
	 * 
	 * @param body
	 */
	private Composite initMainPanel(Composite body) {
		Composite panel = new Composite(body, SWT.NONE);
		GridLayout layout = new GridLayout();
		layout.marginHeight = layout.marginWidth = layout.horizontalSpacing = layout.verticalSpacing = 0;
		panel.setLayout(layout);
		
		viewContainer = new Composite(panel, SWT.NONE);
		viewContainer.setLayoutData(new GridData(GridData.FILL_BOTH));
		viewContainer.setLayout(new StackLayout());		
		viewContainer.setBackground(Colors.MAINSHELL_BACKGROUND);
		
		// 初始化视图
		views = new Control[2];
		initFriendView();
		initDiskView();
        
        // expand bar
        Label lblBar = new Label(panel, SWT.LEFT);
        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
        gd.heightHint = 4;
        lblBar.setLayoutData(gd);
        lblBar.addPaintListener(new PaintListener() {
        	public void paintControl(PaintEvent e) {
        		boolean expanded = optionHelper.isBarExpanded();
        		Color color = null;
        		if(mouseOnBar)
        			color = new Color(display, 0xA2, 0xD3, 0x75);
        		else
        			color = new Color(display, 0x5E, 0xB6, 0xF6);
        		Label lbl = (Label)e.getSource();
        		Rectangle rect = lbl.getBounds();
        		rect.x = rect.y = 0;
        		e.gc.setBackground(color);
        		e.gc.fillRectangle(rect);
        		color.dispose();
        		
        		int middle = rect.width >> 1;
        		color = new Color(display, 0x39, 0x69, 0xB9);
        		e.gc.setForeground(color);
        		if(expanded) {
        			e.gc.drawLine(middle - 3, 0, middle + 2, 0);
        			e.gc.drawLine(middle - 2, 1, middle + 1, 1);
        			e.gc.drawLine(middle - 1, 2, middle, 2);
        		} else {
        			e.gc.drawLine(middle - 1, 1, middle, 1);
        			e.gc.drawLine(middle - 2, 2, middle + 1, 2);
        			e.gc.drawLine(middle - 3, 3, middle + 2, 3);        			
        		}
        		color.dispose();
        	}
        });
        lblBar.addMouseTrackListener(new MouseTrackAdapter() {
        	@Override
        	public void mouseEnter(MouseEvent e) {
        		mouseOnBar = true;
        		((Label)e.getSource()).redraw();
        	}
        	@Override
        	public void mouseExit(MouseEvent e) {
        		mouseOnBar = false;
        		((Label)e.getSource()).redraw();
        	}
        });
        lblBar.addMouseListener(new MouseAdapter() {
        	@Override
        	public void mouseUp(MouseEvent e) {
        		optionHelper.setBarExpanded(!optionHelper.isBarExpanded());
        		((Label)e.getSource()).redraw();
        	}
        });
        
        /* 按钮区 */        
        // 按钮容器
        Composite buttonContainer = new Composite(panel, SWT.NONE);
        gd = new GridData(GridData.FILL_HORIZONTAL);
        gd.heightHint = 24;
        buttonContainer.setLayoutData(gd);
        layout = new GridLayout(5, false);
        layout.marginHeight = layout.marginWidth = layout.verticalSpacing = 0;
        layout.horizontalSpacing = 6;
        buttonContainer.setLayout(layout);  
        buttonContainer.addPaintListener(new PaintListener() {
        	public void paintControl(PaintEvent e) {        		
        		paintBackground(e, ((Composite)e.getSource()).getClientArea().width, res.getImage(Resources.bmpToolbarBackground));
        	}
        });
        // 系统菜单
        btnSysMenu = new Label(buttonContainer, SWT.LEFT);
        btnSysMenu.setImage(res.getImage(Resources.bmpMenuNormal));
        gd = new GridData(GridData.FILL_VERTICAL);
        btnSysMenu.setLayoutData(gd);
        btnSysMenu.setToolTipText(tooltip_button_sysmenu);
        btnSysMenu.addMouseListener(new MouseAdapter() {
        	@Override
        	public void mouseDown(MouseEvent e) {
        		btnSysMenu.setImage(res.getImage(Resources.bmpMenuDown));
        	}
    		public void mouseUp(MouseEvent e) {     
        		btnSysMenu.setImage(res.getImage(Resources.bmpMenuHover));
        		if(menuHelper.isSystemMenuVisible())
        			menuHelper.setSystemMenuVisible(false);
        		else {
        			menuHelper.setSystemMenuData(0);
        			menuHelper.setSystemMenuLocation(btnSysMenu.toDisplay(btnSysMenu.getLocation()));
        			menuHelper.setSystemMenuVisible(true);        			
        		}
    		}
    	});
        btnSysMenu.addMouseTrackListener(new MouseTrackAdapter() {
        	@Override
        	public void mouseEnter(MouseEvent e) {
        		btnSysMenu.setImage(res.getImage(Resources.bmpMenuHover));
        	}
        	@Override
        	public void mouseExit(MouseEvent e) {
        		btnSysMenu.setImage(res.getImage(Resources.bmpMenuNormal));
        	}
        });
        // 系统消息按钮
        btnSysMsg = new Label(buttonContainer, SWT.CENTER);
        btnSysMsg.setImage(res.getImage(Resources.icoSysMsg));
        btnSysMsg.setToolTipText(tooltip_button_sysmsg);
        btnSysMsg.setLayoutData(new GridData(GridData.FILL_VERTICAL));
        btnSysMsg.setCursor(display.getSystemCursor(SWT.CURSOR_HAND));
        btnSysMsg.addMouseListener(new MouseAdapter() {
    		public void mouseUp(MouseEvent e) {     
    			if(mq.hasSystemMessage()) {
    				InPacket in = (InPacket)mq.getSystemMessage();
    				shellLauncher.openReceiveSystemMessageShell(in);
    				if(in instanceof SystemNotificationPacket) {
    					SystemNotificationPacket packet = (SystemNotificationPacket)in;
    					if(packet.type == QQ.QQ_SYS_ADD_FRIEND_APPROVED ||
    							packet.type == QQ.QQ_SYS_ADD_FRIEND_APPROVED_AND_ADD)
    						blindHelper.addFriend(packet.from);    					
    				}
    			} else
    				shellLauncher.openSystemMessageListWindow();
    		}
    	});
        btnSysMsg.addPaintListener(new PaintListener() {
        	public void paintControl(PaintEvent e) {
        		Label label = (Label)e.getSource();
        		Rectangle bound = label.getBounds();
        		paintBackground(e, bound.width, res.getImage(Resources.bmpToolbarBackground));
        		if(label.getImage() != null)
        			e.gc.drawImage(label.getImage(), 0, (bound.height - label.getImage().getBounds().height) >>> 1);
        	}
        });
        // 添加查找按钮
        Label btnFind = new Label(buttonContainer, SWT.CENTER);
        btnFind.setImage(res.getImage(Resources.icoSearch));
        btnFind.setToolTipText(tooltip_button_search);
        btnFind.setLayoutData(new GridData(GridData.FILL_VERTICAL));
        btnFind.setCursor(display.getSystemCursor(SWT.CURSOR_HAND));
        btnFind.addMouseListener(new MouseAdapter() {
    		public void mouseUp(MouseEvent e) {
    			if(client.getUser().isLoggedIn())
    				shellLauncher.openSearchWizard();
    		}
    	});
        btnFind.addPaintListener(new PaintListener() {
        	public void paintControl(PaintEvent e) {
        		Label label = (Label)e.getSource();
        		Rectangle bound = label.getBounds();
        		paintBackground(e, bound.width, res.getImage(Resources.bmpToolbarBackground));
        		e.gc.drawImage(label.getImage(), 0, (bound.height - label.getImage().getBounds().height) >>> 1);
        	}
        });
        // 短信按钮
        btnSMS = new Label(buttonContainer, SWT.CENTER);
		btnSMS.setImage(res.getImage(Resources.icoMobile));
        btnSMS.setToolTipText(tooltip_button_sms);
        btnSMS.setCursor(display.getSystemCursor(SWT.CURSOR_HAND));
        btnSMS.setLayoutData(new GridData(GridData.FILL_VERTICAL));
        btnSMS.addMouseListener(new MouseAdapter() {
    		public void mouseUp(MouseEvent e) {     
    		    onSMS();
    		}
    	});
        btnSMS.addPaintListener(new PaintListener() {
        	public void paintControl(PaintEvent e) {
        		Label label = (Label)e.getSource();
        		Rectangle bound = label.getBounds();
        		paintBackground(e, bound.width, res.getImage(Resources.bmpToolbarBackground));
        		if(label.getImage() != null)
        			e.gc.drawImage(label.getImage(), 0, (bound.height - label.getImage().getBounds().height) >>> 1);
        	}
        });
        // 状态指示
        statusRing = new Ring(buttonContainer);
        gd = new GridData(GridData.FILL_BOTH);
        statusRing.setLayoutData(gd);
        statusRing.setMinWidth(18);
        statusRing.setBackground(Colors.MAINSHELL_BACKGROUND);
        statusRing.setTiledBackground(res.getImage(Resources.bmpToolbarBackground));
        statusRing.setMaxAvailableHeight(18);
        statusRing.setCursor(display.getSystemCursor(SWT.CURSOR_HAND));
        statusRing.addMouseListener(new MouseAdapter() {
    		public void mouseUp(MouseEvent e) {        			
    			menuHelper.setStatusMenuLocation(statusRing.toDisplay(e.x, e.y));
    			menuHelper.setStatusMenuVisible(true);
    		}
    	});
        
        return panel;
	}
	
	/**
	 * 刷新网络硬盘树型图
	 */
	public void refreshDiskViewer() {
		diskViewer.refresh();
	}
	
	/**
	 * 设置网络硬盘操作提示
	 * 
	 * @param hint
	 */
	public void setDiskOpHint(String hint) {
		lblDiskHint.setText(hint);
	}

	/**
	 * 初始化网络硬盘视图
	 */
	private void initDiskView() {
		Composite comp = new Composite(viewContainer, SWT.NONE);
		GridLayout layout = new GridLayout();
		layout.marginHeight = layout.marginWidth = layout.horizontalSpacing = layout.verticalSpacing = 0;
		comp.setLayout(layout);
		comp.setBackground(Colors.LIGHT_BLUE_2);
		
		// 面板容器
		diskCenter = new Composite(comp, SWT.NONE);
		diskCenter.setLayoutData(new GridData(GridData.FILL_BOTH));
		diskCenter.setLayout(new StackLayout());
		
		diskTreePanel = new Composite(diskCenter, SWT.NONE);
		layout = new GridLayout();
		layout.marginHeight = layout.marginWidth = layout.horizontalSpacing = layout.verticalSpacing = 0;
		diskTreePanel.setLayout(layout);
		
		// 工具条
		ToolBar tb = new ToolBar(diskTreePanel, SWT.FLAT);
		tb.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
		tb.setBackground(Colors.LIGHT_BLUE_2);
		tiRefresh = new ToolItem(tb, SWT.PUSH);
		tiRefresh.setImage(res.getImage(Resources.icoRefresh));
		tiRefresh.setToolTipText(disk_tooltip_refresh);
		tiRefresh.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				IStructuredSelection s = (IStructuredSelection)diskViewer.getSelection();
				diskManager.refresh(s.getFirstElement());
				diskViewer.refresh();
			}
		});
		tiDownload = new ToolItem(tb, SWT.PUSH);
		tiDownload.setImage(res.getImage(Resources.icoDiskDownload));
		tiDownload.setToolTipText(disk_tooltip_download);
		tiDownload.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				onDiskDownload((IStructuredSelection)diskViewer.getSelection());
			}
		});
		tiUpload = new ToolItem(tb, SWT.PUSH);
		tiUpload.setImage(res.getImage(Resources.icoDiskUpload));
		tiUpload.setToolTipText(disk_tooltip_upload);
		tiUpload.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				onDiskUpload((IStructuredSelection)diskViewer.getSelection());
			}
		});
		// separator
		new ToolItem(tb, SWT.SEPARATOR);
		// 密码
		ToolItem tiPassword = new ToolItem(tb, SWT.PUSH);
		tiPassword.setImage(res.getImage(Resources.icoDiskPassword));
		tiPassword.setToolTipText(disk_tooltip_password);
		tiPassword.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				onDiskPassword();
			}
		});

		// 网络硬盘目录树
		diskViewer = new TreeViewer(diskTreePanel, SWT.V_SCROLL | SWT.H_SCROLL | SWT.SINGLE);
		diskViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
		diskManager = new DiskManager(this);
		diskViewer.setContentProvider(new DiskContentProvider(this));
		diskViewer.setLabelProvider(new DiskLabelProvider(this));
		diskViewer.setSorter(new DiskViewerSorter());
		diskViewer.setInput(this);
		diskViewer.addSelectionChangedListener(new ISelectionChangedListener() {
			public void selectionChanged(SelectionChangedEvent event) {
				onDiskViewerSelection(event);
			}
		});
		diskViewer.getTree().addMouseListener(new MouseAdapter() {
			@Override
			public void mouseUp(MouseEvent e) {
				if(e.button == 3) {
					menuHelper.setDiskMenuLocation(display.map(diskViewer.getTree(), null, e.x, e.y));
					menuHelper.setDiskMenuVisible(true);					
				} else
					menuHelper.hideAllMenu();
			}
		});
		diskViewer.addDragSupport(DND.DROP_MOVE, new Transfer[] { TextTransfer.getInstance() }, new DragSourceListener() {
			public void dragStart(DragSourceEvent event) {
				IStructuredSelection s = (IStructuredSelection)diskViewer.getSelection();
				if(s.isEmpty())
					event.doit = false;
				
				Object obj = s.getFirstElement();
				if(obj instanceof Directory) {
					if(!diskManager.isMovable((Directory)obj))
						event.doit = false;
				} else if(obj instanceof File) {
					if(!diskManager.isMovable((File)obj))
						event.doit = false;
				} else
					event.doit = false;
			}

			public void dragSetData(DragSourceEvent event) {
				event.data = "dummy";
				IStructuredSelection s = (IStructuredSelection)diskViewer.getSelection();
				Object obj = s.getFirstElement();
				DragHelper.setObject(obj);
			}

			public void dragFinished(DragSourceEvent event) {				
			}			
		});
		diskViewer.addDropSupport(DND.DROP_MOVE, new Transfer[] { TextTransfer.getInstance() }, new DropTargetListener() {
			public void dragEnter(DropTargetEvent event) {
			}

			public void dragLeave(DropTargetEvent event) {
			}

			public void dragOperationChanged(DropTargetEvent event) {
			}

			public void dragOver(DropTargetEvent event) {
				TreeItem item = (TreeItem)event.item;
				if(item == null) {
					event.detail = DND.DROP_NONE;
				} else if(item.getData() instanceof Integer) {
					boolean accept = ((Integer)item.getData()) == DiskContentProvider.MY_DISK;
					event.detail = accept ? event.operations : DND.DROP_NONE;
					if(accept)
						event.feedback |= DND.FEEDBACK_EXPAND;

⌨️ 快捷键说明

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