`
huzhenyu
  • 浏览: 192034 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

eclipse 查看器

阅读更多
查看器的框架构成:
* 模型和元素:存储着要显示在控件中的数据模型(由开发者编写)
* 内容提供者和标签提供者:负责将数据模型转化成可显示的图片和文字(由开发者编写)
* 控件:显示内容
* 查看器:负责协调上面各部分的工作

============Demo============
public class User {

	private String id;

	private String name;
	
	public User(String id, String name) {
		this.id = id;
		this.name = name;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}


import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.util.Vector;

public class ListModel {

	public static final String ADD_ELEMENT = "addElement";

	public static final String REMOVE_ELEMENT = "removeElement";

	private PropertyChangeSupport delegate;

	private Vector content;

	public ListModel() {
		content = new Vector();
		delegate = new PropertyChangeSupport(this);
	}

	public void addPropertyChangeListener(PropertyChangeListener listener) {
		delegate.addPropertyChangeListener(listener);
	}

	public void firePropertyChange(PropertyChangeEvent evt) {
		delegate.firePropertyChange(evt);
	}

	public void removePropertyChangeListener(PropertyChangeListener listener) {
		delegate.removePropertyChangeListener(listener);
	}

	public void add(Object element) {
		if (content.add(element))
			firePropertyChange(new PropertyChangeEvent(this, ADD_ELEMENT, null,
					element));
	}

	public void remove(Object element) {
		if (content.remove(element))
			firePropertyChange(new PropertyChangeEvent(this, REMOVE_ELEMENT,
					null, element));
	}

	public Object[] elements() {
		return content.toArray();
	}
}


import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.swt.graphics.Image;

public class ListLabelProvider implements ILabelProvider {

	public Image getImage(Object element) {
		return null;
	}

	public String getText(Object element) {
		if(element instanceof User)
			return ((User)element).getName();
		return element.toString();
	}

	public boolean isLabelProperty(Object element, String property) {
		return false;
	}
	
	public void dispose() {}
	
	public void addListener(ILabelProviderListener listener) {}
	
	public void removeListener(ILabelProviderListener listener) {}
}


import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.jface.viewers.Viewer;

public class ListContentProvider implements IStructuredContentProvider,
		PropertyChangeListener {

	private ListViewer viewer;

	private ListModel model;

	public Object[] getElements(Object inputElement) {
		return model.elements();
	}

	public void dispose() {
	}

	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
		this.viewer = (ListViewer) viewer;

		if (oldInput instanceof ListModel)
			((ListModel) oldInput).removePropertyChangeListener(this);

		if (newInput instanceof ListModel) {
			this.model = (ListModel) newInput;
			((ListModel) newInput).addPropertyChangeListener(this);
		}

	}

	public void propertyChange(PropertyChangeEvent evt) {
		if (ListModel.ADD_ELEMENT.equals(evt.getPropertyName()))
			viewer.add(evt.getNewValue());
		if (ListModel.REMOVE_ELEMENT.equals(evt.getPropertyName()))
			viewer.remove(evt.getNewValue());
	}
}


import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class UsingListViewer {

	public static void main(String[] args) {
		Display display = Display.getDefault();
		final Shell shell = new Shell(display);
		shell.setSize(400, 400);
		shell.setLayout(new FillLayout());

		ListViewer viewer = new ListViewer(shell, SWT.BORDER);

		viewer.setContentProvider(new ListContentProvider());
		viewer.setLabelProvider(new ListLabelProvider());

		final ListModel input = new ListModel();
		viewer.setInput(input);
		
		shell.open();
		shell.layout();
		
		input.add(new User("1","张三"));
		input.add(new User("2","李四"));
		input.add(new User("3","王五"));
		
		viewer.addDoubleClickListener(new IDoubleClickListener() {

			@Override
			public void doubleClick(DoubleClickEvent event) {
				input.add(new User("4","hzy"));
			}
		});
		
		viewer.addSelectionChangedListener(new ISelectionChangedListener() {

			@Override
			public void selectionChanged(SelectionChangedEvent event) {
				System.out.println(((User)((StructuredSelection)event.getSelection()).getFirstElement()).getName());
			}
		});

		while (!shell.isDisposed())
			if (!display.readAndDispatch())
				display.sleep();
	}

}
分享到:
评论

相关推荐

    eclipse反编译查看器插件

    "eclipse反编译查看器插件"就是为此目的设计的,它可以让你在Eclipse环境中直接查看Java字节码的源代码近似表示。 "decompiler-3"标签表明这是一个反编译器的第三个版本,通常意味着更多的改进和增强的性能。反...

    eclipse查看class源码

    在这种情况下,Eclipse IDE提供了查看`.class`源码的功能,但默认并不直接支持反编译。为了解决这个问题,我们可以借助一些第三方工具,例如JAD。本篇文章将详细介绍如何在Eclipse中通过JAD插件查看`.class`源码。 ...

    JSON查看器(firefox&eclipse;插件)

    标题提及的“JSON查看器(firefox&eclipse;插件)”是指两款专门针对Firefox浏览器和Eclipse集成开发环境的插件,旨在提升开发人员处理JSON数据的效率。 1. Firefox插件版: 这款插件通常会在Firefox浏览器中提供...

    VB实现的Eclipse编辑器

    5. **调试器**:虽然VB自身具备调试功能,但如果要实现Eclipse的调试器功能,需要设计复杂的断点管理、变量查看和调用堆栈追踪等。 6. **性能优化**:VB相对于Java在运行效率上可能略逊一筹,因此在实现过程中,...

    Eclipse中查看class源码的插件

    反编译出的源码会以Eclipse的编辑器形式展示,你可以像浏览普通源码一样进行查找、导航和修改(尽管修改不会影响实际的字节码)。此外,它还支持语法高亮、代码折叠和跳转到定义等常见IDE功能。 值得注意的是,反...

    jd-gui class文件查看器及eclipse插件

    包含jd-gui-windows-1.4.0(class查看器)和jd-eclipse-site-1.0.0-RC2(eclipse插件) 1、jd-gui-windows-1.4.0解压后找到jd-gui.exe,打开即可用 2、jd-eclipse-site-1.0.0-RC2暗装请参阅eclipse插件安装教程

    配置eclipse 在eclipse中查看源码,配置说明、插件

    虽然不是专门用于查看源码的插件,但Eclipse的内置调试器提供了强大的源码查看功能。通过断点调试,你可以逐步执行代码并查看每一步的源码。 3. **JD-Eclipse**: JD-Eclipse是一个反编译插件,它可以在Eclipse中...

    Eclipse manual.pdf

    * 查看器:Eclipse提供了多种查看器,例如项目查看器、资源查看器和任务查看器等,用于显示项目和资源的信息。 四、项目管理 Eclipse提供了强大的项目管理功能,支持多种项目类型和编程语言。 * 项目类型:...

    eclipse查看propertise插件

    总结来说,Eclipse查看propertise插件是为了增强Eclipse对.properties文件的编辑和管理能力,提供诸如语法高亮、自动完成、多语言本地化管理等功能,以优化开发流程。通过Marketplace安装合适的插件,并熟练运用,能...

    android eclipse 查看网页源码最减版

    android eclipse 查看网页源码最减版。之前这个程序的例子太多代码(http://download.csdn.net/detail/day_moon/9713901),做了一些修改。上传这个例子为了更好学习。

    eclipse下的js插件

    4. **JavaScript Debugging (JSDT Debugger)**:Eclipse的JSDT Debugger允许开发者设置断点、步进执行代码、查看变量值,从而有效调试JavaScript应用。这对于解决复杂问题和优化代码至关重要。 5. **Eclipse ...

    eclipse查看源码插件

    这时,Eclipse查看源码插件就显得尤为重要。这些插件能够帮助开发者无缝地浏览和分析第三方库的源代码,提高开发效率。 在Eclipse中查看源码通常需要正确配置JDK和JRE系统路径,确保Eclipse知道在哪里查找源代码。...

    嵌入到eclipse和myeclipse中的class源码查看器

    "嵌入到eclipse和myeclipse中的class源码查看器"是一个非常实用的工具,它使得开发者能够在IDE内直接查看这些无法直接关联到.java源文件的.class文件的源码,极大地提高了调试和学习效率。 Eclipse和MyEclipse都是...

    eclipse插件开发form编辑器

    - **WYSIWYG原则**:Eclipse Forms借鉴了WYSIWYG(What You See Is What You Get)的概念,让用户在最终形式上进行编辑操作,类似于在Web浏览器中查看HTML文档的方式。 #### 三、Eclipse Forms的关键特性 - **组件...

    eclipse查看jar包源码的工具.zip

    安装完成后,如何使用jd-eclipse查看jar包源码呢? 1. 首先,确保你的项目已经正确导入了需要查看源码的jar包。这通常通过右键点击项目 -> Build Path -> Configure Build Path -> Libraries -> Add JARs 或 Add ...

    怎样在eclipse查看.class文件.jar

    Eclipse作为一款强大的Java集成开发环境,虽然默认并不支持直接查看`.class`文件,但通过添加特定插件可以实现这一功能。本文将详细介绍如何在Eclipse中查看`.class`文件,特别是使用jadclipse插件及其依赖jad.exe的...

    eclipse RCP开发的编辑器

    你可以直接在IDE中运行RCP应用,实时查看编辑器的运行效果。此外,Eclipse的插件开发环境还支持插件依赖分析、启动配置管理等功能,方便进行开发和调试。 标签中的"java"表明了我们的编辑器是基于Java语言的,这...

    Eclipse的JS编辑器插件

    同时,插件通常也提供集成调试器,使得在Eclipse环境中可以直接调试JavaScript代码,查看变量值,设置断点,单步执行等,让调试过程更加直观高效。 最后,插件可能还集成了版本控制工具,如Git,便于团队协作和代码...

    Eclipse RCP 属性编辑器实例

    属性编辑器是Eclipse RCP中的一个重要组成部分,它允许用户查看和修改对象的属性值。这些对象可以是程序中的数据模型、工作台资源或其他任何具有可配置属性的对象。属性编辑器通常以表单形式展示,每个属性都有一个...

    eclipse插件(查看java、class文件)

    然而,标准的Eclipse可能无法直接查看.java源代码或.class字节码文件,这正是我们需要插件的原因。以下将详细介绍如何利用Eclipse插件来查看和分析这两种类型的文件。 1. **查看.java源代码** 当我们导入一个只...

Global site tag (gtag.js) - Google Analytics