eclipse RCP 根据输入内容,将内容显示在编辑区中

本文介绍如何使用Eclipse RCP从指定URL获取WSDL文件内容,并将其显示在编辑器区域。通过创建自定义的输入流处理及编辑器输入实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将输入流内容显示在 eclipse rcp编辑区内,输入流的内容从wsdlurl中获取
String wsdlUrl = "http://fy.webxml.com.cn/webservices/EnglishChinese.asmx?wsdl";
		InputStream inputStream = null;
					
		IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
		if (page != null) {
			try {
				inputStream = getUrlInputStream(wsdlUrl);
				IStorage storage = new WsdlStorage(inputStream,serviceName);
				IStorageEditorInput input = new WsdlEditorInput(storage);
				page.openEditor(input, TextEditor.ID);
			 } catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
		}
getUrlInputStream 方法
/**
	 * 根据wsdlurl,返回网页内容
	 * @param wsdlUrl
	 * @return
	 */
	public static InputStream getUrlInputStream(String wsdlUrl) {
		InputStream inputStream = null;
		ByteArrayOutputStream bos = new ByteArrayOutputStream();//定义字符数组输出流对象
		Definition definition = null;
		WSDLFactory wsdlFactory = null;
		
		try {
			wsdlFactory = WSDLFactory.newInstance();
			WSDLReader reader = wsdlFactory.newWSDLReader();
			definition = reader.readWSDL(wsdlUrl);
			WSDLWriter wsdlWriter = wsdlFactory.newWSDLWriter();
			
			Writer wr = new OutputStreamWriter(bos, "gbk");
			wsdlWriter.writeWSDL(definition, wr);
			inputStream = new ByteArrayInputStream(bos.toString().getBytes());
		} catch (WSDLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return inputStream;
	}
WsdlStorage 类
import java.io.InputStream;


import org.eclipse.core.resources.IStorage;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.PlatformObject;


public class WsdlStorage extends PlatformObject  implements IStorage  {


	private InputStream inputStream;//wsdl文档对应的输入流
	private String  wsdlName;//wsdl对应的名字
	
	public WsdlStorage(InputStream inputStream, String wsdlName) { 
		super();   
		this.inputStream = inputStream; 
		this.wsdlName = wsdlName; 
	}
	@Override
	public Object getAdapter(Class adapter) {
		// TODO Auto-generated method stub
		return null;
	}


	@Override
	public InputStream getContents() throws CoreException {
		// TODO Auto-generated method stub
		return inputStream;
	}


	@Override
	public IPath getFullPath() {
		// TODO Auto-generated method stub
		return null;
	}


	/**
	 * 返回在编辑中显示的名字
	 */
	@Override
	public String getName() {
		// TODO Auto-generated method stub
		return wsdlName;
	}


	/**
	 * 设置是否只读
	 */
	@Override
	public boolean isReadOnly() {
		// TODO Auto-generated method stub
		return false;
	}


}
WsdlEditorInput  类
import org.eclipse.core.resources.IStorage;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.PlatformObject;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IPersistableElement;
import org.eclipse.ui.IStorageEditorInput;
/**
 * 编辑区内容输入为wsdl的内容
 * @author lww
 *
 */
public class WsdlEditorInput extends PlatformObject  implements IStorageEditorInput {
	
	private IStorage storage;   
	    
	public WsdlEditorInput(IStorage storage) {   
		super();   
	    this.storage=storage;   
	}   


	@Override
	public boolean exists() {
		// TODO Auto-generated method stub
		return false;
	}


	@Override
	public ImageDescriptor getImageDescriptor() {
		// TODO Auto-generated method stub
		return null;
	}


	@Override
	public String getName() {
		// TODO Auto-generated method stub
		return storage.getName();
	}


	@Override
	public IPersistableElement getPersistable() {
		// TODO Auto-generated method stub
		return null;
	}


	@Override
	public String getToolTipText() {
		// TODO Auto-generated method stub
		return "toolTip:" + storage.getName();
	}


	@Override
	public Object getAdapter(Class adapter) {
		// TODO Auto-generated method stub
		return null;
	}


	@Override
	public IStorage getStorage() throws CoreException {
		// TODO Auto-generated method stub
		return storage;   
	}


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值