folderselectaction.java

来自「mywork是rcp开发的很好的例子」· Java 代码 · 共 72 行

JAVA
72
字号
package net.sf.pim.mail.reader;

import javax.mail.Folder;
import javax.mail.MessagingException;

import net.sf.pim.mail.MailPlugin;

import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.ui.IWorkbenchWindowPulldownDelegate;

public class FolderSelectAction implements IWorkbenchWindowActionDelegate, IWorkbenchWindowPulldownDelegate {
	private Menu toolbarMenu;

	public void dispose() {
		if (toolbarMenu != null) {
			toolbarMenu.dispose();
			toolbarMenu = null;
		}
	}

	public void init(IWorkbenchWindow window) {
	}

	public void run(IAction action) {
	}

	public Menu getMenu(Control parent) {
		if (toolbarMenu != null) {
			toolbarMenu.dispose();
		}
		toolbarMenu = new Menu(parent);
		fillMenu(toolbarMenu);
		return toolbarMenu;
	}
	
	private void fillMenu(Menu menu) {
		String[] folders=new String[]{MailPlugin.INBOX_NAME,MailPlugin.OUTBOX_NAME,MailPlugin.TRASHBOX_NAME,MailPlugin.ARCHIEBOX_NAME};
		for(String s:folders ){
			MenuItem choice = new MenuItem(menu, SWT.PUSH|SWT.RADIO);
			choice.setText(s);
			choice.addSelectionListener(new SelectionAdapter(){
				@Override
				public void widgetSelected(SelectionEvent se) {
					IWorkbenchPage activePage = MailPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow(). getActivePage();
					FolderViewer fv=(FolderViewer) activePage.findView(FolderViewer.ID);
					try {
						fv.showFolder(getFolder(((MenuItem)(se.getSource())).getText()));
					} catch (MessagingException e) {
						e.printStackTrace();
					}
				}});
		}
	}

	private Folder getFolder(String folderName) throws MessagingException{
		return MailPlugin.getDefault().getStore().getFolder(MailPlugin.convertFolderName(folderName));
	}

	public void selectionChanged(IAction action, ISelection selection) {
	}
}

⌨️ 快捷键说明

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