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

📄 wordview.java

📁 这是用eclipseRCP开发的一个自定义的视图的原代码
💻 JAVA
字号:
package viewprojec.views;


import java.io.File;
import java.net.*;
import java.util.*;
import org.eclipse.jface.action.*;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.*;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.ui.*;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.part.ViewPart;
import viewprojec.ViewprojecPlugin;

/**
 * A WordView shows a bunch of words.
 */
public class WordView extends ViewPart 
{
	private WordFile input;
	private ListViewer viewer;
	private Action addItemAction, deleteItemAction, 
	selectAllAction,doubleClickAction;
	private IMemento memento;
	
	/**
	 * Constructor
	 */
	public WordView() {
		super();
		input = new WordFile(new File("list.lst"));
	}

	/**
	 * @see IViewPart.init(IViewSite)
	 */
	public void init(IViewSite site) throws PartInitException {
		super.init(site);
	}

	/**
	 * Initializes this view with the given view site.  A memento is passed to
 	 * the view which contains a snapshot of the views state from a previous
	 * session.  	
	 */
	public void init(IViewSite site,IMemento memento) throws PartInitException {
		init(site);
		this.memento = memento;	
	}
	
	/**
	 * @see IWorkbenchPart#createPartControl(Composite)
	 */
	public void createPartControl(Composite parent) {
		// Create viewer.
		viewer = new ListViewer(parent);
		viewer.setContentProvider(new WordContentProvider());
		//viewer.setLabelProvider(new LabelProvider());
		viewer.setLabelProvider(new WordLabelProvidor());
		viewer.setInput(input);
		//getSite().setSelectionProvider(viewer);
		

		// Create menu and toolbars.
		createActions();
		createMenu();
		createToolbar();
		createContextMenu();
		hookGlobalActions();
		hookDoubleClickAction();
		
		// Restore state from the previous session.
		//restoreState();
	}
	
	/**
	 * @see WorkbenchPart#setFocus()
	 */
	public void setFocus() {
		viewer.getControl().setFocus();
	}

	/**
	 * Create the actions.
	 */
	private void hookDoubleClickAction() {
		viewer.addDoubleClickListener(new IDoubleClickListener() {
			public void doubleClick(DoubleClickEvent event) {
				doubleClickAction.run();
			}
		});
	}
	public void createActions() {
		addItemAction = new Action("添加") {
			public void run() { 
				addItem();
			}
				};
		doubleClickAction = new Action() {
					public void run() {
						ISelection selection = viewer.getSelection();
						Object obj = ((IStructuredSelection)selection).getFirstElement();
						showMessage("双击 "+obj.toString());
					}
				};
		
		addItemAction.setImageDescriptor(getImageDescriptor("sample.gif"));
		addItemAction.setToolTipText("添加");
		deleteItemAction = new Action("删除") {
			public void run() {
				deleteItem();
			}
		};
		deleteItemAction.setImageDescriptor(getImageDescriptor("sample.gif"));
		deleteItemAction.setToolTipText("删除");
		selectAllAction = new Action("全部选择") {
			public void run() {
				selectAll();
			}
		};
		
		// Add selection listener.
		viewer.addSelectionChangedListener(new ISelectionChangedListener() {
			public void selectionChanged(SelectionChangedEvent event) {
				updateActionEnablement();
			}
		});
	}

	/**
	 * Returns the image descriptor with the given relative path.
	 */
	private ImageDescriptor getImageDescriptor(String relativePath) {
		String iconPath = "icons/";
		try {
			ViewprojecPlugin plugin = ViewprojecPlugin.getDefault();
			URL installURL = plugin.getDescriptor().getInstallURL();
			URL url = new URL(installURL, iconPath + relativePath);
			return ImageDescriptor.createFromURL(url);
		}
		catch (MalformedURLException e) {
			// should not happen
			return ImageDescriptor.getMissingImageDescriptor();
		}
	}
	
	/**
	 * Create menu.
	 */
	private void createMenu() {
		IMenuManager mgr = getViewSite().getActionBars().getMenuManager();
		mgr.add(selectAllAction);
		mgr.add(addItemAction);
		mgr.add(deleteItemAction);
	}
	
	/**
	 * Create toolbar.
	 */
	private void createToolbar() {
		IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager();
		mgr.add(addItemAction);
		mgr.add(deleteItemAction);

	}
		
	/**
	 * Create context menu.
	 */
	private void createContextMenu() {
		// Create menu manager.
		MenuManager menuMgr = new MenuManager("#WordListContextMenu");
		menuMgr.setRemoveAllWhenShown(true);
		menuMgr.addMenuListener(new IMenuListener() {
			public void menuAboutToShow(IMenuManager mgr) {
				fillContextMenu(mgr);
			}
		});
		
		// Create menu.
		Menu menu = menuMgr.createContextMenu(viewer.getControl());
		viewer.getControl().setMenu(menu);
		
		// Register menu for extension.
		getSite().registerContextMenu(menuMgr, viewer);
	}

	/**
	 * Hook global actions
	 */
	
	private void hookGlobalActions() {
		IActionBars bars = getViewSite().getActionBars();
		bars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId() , selectAllAction);
		bars.setGlobalActionHandler(ActionFactory.DELETE.getId() , deleteItemAction);
		viewer.getControl().addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent event) {
				if (event.character == SWT.DEL && 
					event.stateMask == 0 && 
					deleteItemAction.isEnabled()) 
				{
					deleteItemAction.run();
				}
			}
		});
	}
		
	private void fillContextMenu(IMenuManager mgr) {
		mgr.add(addItemAction);
		mgr.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
		mgr.add(deleteItemAction);
		mgr.add(new Separator());
		mgr.add(selectAllAction);
		
	}

	private void updateActionEnablement() {
		IStructuredSelection sel = 
			(IStructuredSelection)viewer.getSelection();
		deleteItemAction.setEnabled(sel.size() > 0);
	}
	
	/**
	 * Add item to list.
	 */
	private void addItem() {
		String name = promptForValue("请输入名称:", null);
		if (name != null) {
			Word word = new Word(name);
			input.add(word);
			viewer.setSelection(new StructuredSelection(word));
		}
	}
	
	/**
	 * Remove item from list.
	 */
	private void deleteItem() {
		IStructuredSelection sel = 
			(IStructuredSelection)viewer.getSelection();
		Iterator iter = sel.iterator();
		while (iter.hasNext()) {
			Word word = (Word)iter.next();
			input.remove(word);
		}
	}

	/**
	 * Select all items.
	 */
	private void selectAll() {
		viewer.getList().selectAll();
		
		updateActionEnablement();
	}
		
	/**
	 * Ask user for value.
	 */
	private String promptForValue(String text, String oldValue) {
		InputDialog dlg = new InputDialog(getSite().getShell(), 
			"List View", text, oldValue, null);
		if (dlg.open() != Window.OK)
			return null;
		return dlg.getValue();
	}
	
	/**
	 * Saves the object state within a memento.
	 */
	public void saveState(IMemento memento){
		IStructuredSelection sel = (IStructuredSelection)viewer.getSelection();
		if (sel.isEmpty())
			return;
		memento = memento.createChild("selection");
		Iterator iter = sel.iterator();
		while (iter.hasNext()) {
			Word word = (Word)iter.next();
			memento.createChild("descriptor", word.toString());
		}
	}

	/**
	 * Restores the viewer state from the memento.
	 */
	private void restoreState() {
		if (memento == null)
			return;
		memento = memento.getChild("selection");
		if (memento != null) {
			IMemento descriptors [] = memento.getChildren("descriptor");
			if (descriptors.length > 0) {
				ArrayList objList = new ArrayList(descriptors.length);
				for (int nX = 0; nX < descriptors.length; nX ++) {
					String id = descriptors[nX].getID();
					Word word = input.find(id);
					if (word != null)
						objList.add(word);		
				}
				viewer.setSelection(new StructuredSelection(objList));
			}
		}
		memento = null;
		updateActionEnablement();
	}
	private void showMessage(String message) {
		MessageDialog.openInformation(
			viewer.getControl().getShell(),
			"Sample View",
			message);
	}
}

⌨️ 快捷键说明

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