将输入流内容显示在 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;
}
}
eclipse RCP 根据输入内容,将内容显示在编辑区中
最新推荐文章于 2024-04-27 03:33:03 发布