为什么Eclipse打开新的文件在原来文件的下方显示,急求啊,怎么能长高回去??!!

eclipsephp studio为什么每次我打开新文件 都出现您想打开或保存新文件吗。_百度知道
eclipsephp studio为什么每次我打开新文件 都出现您想打开或保存新文件吗。
能让显示图
提问者采纳
能系统编辑器打文件点右键 选择open with 再选择其(般都选图标)选用再选 默认种编辑器打
还是不行...
不行那就重装或者换一个更高的版本吧
提问者评价
其他类似问题
按默认排序
其他1条回答
垃圾消耗差<img class="word-replace" src="/api/getdecpic?picenc=0af0M内存;且经崩溃;用notepad++吧语着色代码完代码折叠;
eclipsephp的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁1114人阅读
今天终于可以闲一天,想来想去就乱写点东西吧,说不定对有些新人有点帮助呢~_~
&&&&&&& 用Eclipse API的方式来打开编辑器,可能对任何一个插件开发者都不是很陌生的操作了。但是,还是建议你忍着看一下,全当是复习吧~_~。
&&&&&&& 【打开editor的接口讨论】
&&&&&&& 先来看一下workbench吧,workbench从静态划分应该大致如下:
&&&&&&&&&&& 从结构图我们大致就可以猜测出来,workbench page作为一个IWorkbenchPart(无论是eidtor part还是view part)的容器,肯定会接受workbench page的管理。看了一下,IWorkbenchPage接口定义中确实提供给了如下打开编辑器的操作:
&&&&&&&&&&&& 【IWokbenchPage提供的接口】
interface IWorkbenchPage
extends IPartService, ISelectionService,ICompatibleWorkbenchPage {
public IEditorPart openEdito(IEditorInput input, String editorId)throws PartInitE
public IEditorPart openEdito(IEditorInput input, String editorId,
boolean activate)
throws PartInitE
public IEditorPart openEditor(final IEditorInput input,
final String editorId,
boolean activate,
final int matchFlags)throws PartInitE
&&&&&&&&&&& 那到这边,可能很多人已经知道了怎么调用这些接口了:
&&&&&&&&& PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().openEditor(...)
&&&&&&&&& (说明:PlatformUI可以看作是整个eclipse ui框架的门面类,当然最核心的作用就是让用户获取到workbench。Eclipse中存在的其他一些门面类如:ResourcesPlugin、Platform、JavaCore、JavaUI等)
&&&&&&&&&&& 我们再仔细看一下IWorkbenchPage对应的实现类(org.eclipse.ui.internal.WorkbenchPage)中的以上接口的实现代码,真正在管理Editor的是一个叫做EditorManager的东东(同理,view part对应的管理器角色类是叫做ViewFactory的东东)。这里的EditorManager和View Factory是workbench实现中非常精华的部分,看一下里面的实现就会很大程度上理解workbench所谓懒加载、懒初始化是如何实现的了,如何实现part
复用的...等等。
&&&&&&&&&&&
&&&&&&&&&& 上图就用来说明workbench是如何来管理各种part的,其中descriptor角色的核心作用是延迟加载扩展(延迟加载用户通过editors或者views提供的扩展),reference角色的核心作用是用来延迟初时化具体的part(例如避免过早的创建对应的control等等)。再说下去有点偏离主题了,这部分,以后有时间再写
&&&&&&&&&&&
&&&&&&&&&& 【IDE工具类提供的接口】
&&&&&&&&&&& 上面IWorkbenchPage提供接口都需要用户准备两样东西:一是创建IEditorInput实例,二是指定editor id。有些用户可能不想干这两件事情,所以在工具类org.eclipse.ui.ide.IDE中提供了其他的接口:
&&&&&&&&&&&&
static IEditorPart openEditor(IWorkbenchPage page, IFile input)
throws PartInitException { }
static IEditorPart openEditor(IWorkbenchPage page, IFile input,
boolean activate)
throws PartInitException {& }
static IEditorPart openEditor(IWorkbenchPage page, IFile input,
boolean activate,
boolean determineContentType) { }
static IEditorPart openEditor(IWorkbenchPage page, IFile input, String editorId)
throws PartInitException {& }
static IEditorPart openEditor(IWorkbenchPage page, IFile input, String editorId,
boolean activate)
throws PartInitException {& }
&&&&&&&&&& 上面5个接口操作中, 对于上面的三个操作,Eclipse会自动为你准备IEditorInput实例,并动态绑定合适的编辑器类型。对于下面的两个操作,Eclipse会为你自动准备IEditorInput实例,但是需要用户自己指定editor id。
&&&&&&&&&&&
&&&&&&&&&& 接下来我们看两个问题,一是如何创建IEditorInput实例的;而是如何动态计算对应的editor id的。
&&&&&&&&&&
&&&&&&&&& 【有关FileEditorInput】
&&&&&&&&&& 在IDE工具类中提供的5个接受IFile对象的openEditor接口中,在对应的实现中都是默认构造了一个FileEditorInput(org.eclipse.ui.part.FileEditorInput)实例,这个实例也是org.eclipse.ui.IFileEditorInput接口的默认实现类(注意:Eclipse中很多地方都使用这种Interface/Default Impl的方式,Interface会暴露,Default Impl则根据情况选择是否暴露,一般是如果Interface希望用户来扩展继承,则会暴露对应的Default
Impl,如果Interface不希望用户来扩展继承,例如IResource系列接口,则一般会将Default Impl丢如对应的internal包中)。
&&&&&&&&&&& 我们看一下org.eclipse.ui.part.FileEditorInput中是如何实现IEditorInput.exists()接口的:
class FileEditorInput
implements IFileEditorInput,IPathEditorInput,IPersistableElement {
private IF
public boolean exists() {
return file.exists();
&&&&&&&&& 我们看到内部的实现是持有了IFile句柄,如果IFile代表的资源没有存在于工作区之内,那么就会返回false。(疑问:如果我们打开工作区外部的文件呢???显然,FileEditorInput并不合适,稍后看...)
&&&&&&& 【动态计算editor id】
&&&&&&&& 下面,我们再来看一下IDE类是如何计算所谓的默认eidtor id的。追踪实现,我们看到了IDE.getDefaultEditor
&&&&&&&&&&
static IEditorDescriptor getDefaultEditor(IFile file,
boolean determineContentType) {
// Try file specific editor.
3 &&&&&&& IEditorRegistry editorReg
= PlatformUI.getWorkbench()
4 &&&&&&&&&&&&&&& .getEditorRegistry();
6 &&&&&&&&&&& String editorID
= file.getPersistentProperty(EDITOR_KEY);
7 &&&&&&&&&&&
if (editorID
!= null) {
8 &&&&&&&&&&&&&&& IEditorDescriptor desc
= editorReg.findEditor(editorID);
9 &&&&&&&&&&&&&&&
!= null) {
10 &&&&&&&&&&&&&&&&&&&
11 &&&&&&&&&&&&&&& }
12 &&&&&&&&&&& }
13 &&&&&&& }
catch (CoreException e) {
14 &&&&&&&&&&&
// do nothing
15 &&&&&&& }
16 &&&&&&&
17 &&&&&&& IContentType contentType
18 &&&&&&&
if (determineContentType) {
19 &&&&&&&&&&& contentType
= getContentType(file);
20 &&&&&&& }&&&
21 &&&&&&&
// Try lookup with filename
22 &&&&&&&
return editorReg.getDefaultEditor(file.getName(), contentType);
&&&&&&&&&&& 上面的代码大致赶了如下两件事情:
&&&&&&&&&&& 1、如果对应的资源设定了一个特定的持久化属性EDITOR_KEY,则会使用EDITOR_KEY属性&#20540;所代表的编辑器(说明:有关Eclipse资源的属性支持,请参阅其他文档)。那如果一个资源不在工作区之内,又如何设定EDITOR_KEY属性呢???& (~_~确实没法设定)
&&&&&&&&&& 2、查找对应的content type,用户通过org.eclipse.core.runtime.contentTypes扩展点来注册自定义的内容类型,在内容类型中会指定对应的文件扩展名和默认编码,例如JDT中注册了如下内容类型(摘自org.eclipse.jdt.core/plugin.xml):
&!-- ===================================================================================
&!-- Extension: Java Content Types&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&!-- ===================================================================================
&extension
point=&org.eclipse.core.runtime.contentTypes&&
&&& &!-- declares a content type for Java Properties files
&&& &content-type
id=&javaProperties& name=&%javaPropertiesName&
&&&&&&& base-type=&org.eclipse.core.runtime.text&
&&&&&&& priority=&high&&&&&&&&&&&&&&&&
&&&&&&& file-extensions=&properties&
&&&&&&& default-charset=&ISO-8859-1&/&
&&& &!-- Associates .classpath to the XML content type
&&& &file-association
&&&&&&& content-type=&org.eclipse.core.runtime.xml&
&&&&&&& file-names=&.classpath&/&&
&&& &!-- declares a content type for Java Source files
&&& &content-type
id=&javaSource& name=&%javaSourceName&
&&&&&&& base-type=&org.eclipse.core.runtime.text&
&&&&&&& priority=&high&&&&&&&&&&&&&&&&
&&&&&&& file-extensions=&java&/&
&&& &!-- declares a content type for Java class files
&&& &content-type
id=&javaClass& name=&%javaClassName&
&&&&&&& priority=&high&&&&&&&&&&&&&&&&
&&&&&&& file-extensions=&class&&&&&&&&&
&&&&&&& &describer
&&&&&&&&&&& class=&org.eclipse.core.runtime.content.BinarySignatureDescriber&&
&&&&&&&&&&& &parameter
name=&signature& value=&CA, FE, BA, BE&/&
&&&&&&& &/describer&
&&& &/content-type&&&&&&&&
&&& &!-- declares a content type for JAR manifest files
&&& &content-type
id=&JARManifest& name=&%jarManifestName&
&&&&&&& base-type=&org.eclipse.core.runtime.text&
&&&&&&& priority=&high&&&&&&&&&&&&&&&&
&&&&&&& file-names=&MANIFEST.MF&
&&&&&&& default-charset=&UTF-8&/&
&/extension&
&&&&&&&&&&&& 那如果我们在注册编辑器的时候和对应的content type绑定,这不就联系起来了吗~_~。那我们看一下java源码编辑器扩展描述(摘自org.eclipse.jdt.ui/plugin.xml):
&&&&&&&&&&& name=&%JavaEditor.label&
&&&&&&&&&&& default=&true&
&&&&&&&&&&& icon=&$nl$/icons/full/obj16/jcu_obj.gif&
&&&&&&&&&&& contributorClass=&org.eclipse.jdt.internal.pilationUnitEditorActionContributor&
&&&&&&&&&&& class=&org.eclipse.jdt.internal.pilationUnitEditor&
&&&&&&&&&&& symbolicFontName=&org.eclipse.jdt.ui.editors.textfont&
&&&&&&&&&&& id=&org.eclipse.pilationUnitEditor&&
&&&&&&&&&&& &contentTypeBinding
&&&&&&&&&&&&&& contentTypeId=&org.eclipse.jdt.core.javaSource&
&&&&&&&&&&& /&
&&&&& &/editor&
&&&&&&&&&& 我们看到上面的xml中有contentTypeBinding元素,里面指定了绑定java源码content type。
&&&&&&&&&&& 那如果我们在注册编辑器的时候,没有绑定对应的content type呢?Eclipse允许你配置,往下看:
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&& 我想看到这边对eclipse如何动态计算一个文件对应的editor应该是明白了吧,再回顾一下吧:
&&&&&&&&&&& 1、查看资源本身是否有EIDTOR_ID持久属性(注意:一、只有工作区中存在的资源才允许设置持久属性;二、资源属性知识针对特定资源,不会影响同类型资源,即你对工作区中特定的.java文件设定了EIDTOR_ID持久属性,并不会影响工作区中其他.java文件资源的编辑器绑定操作)
&&&&&&&&&&& 2、查找对应的content type,然后查找对应的editor扩展或者查找Eclipse中的Content Types和File Associations配置
&&&&&&&&&&& 3、如果都找不到,则直接给一个默认的编辑器。例如,我们经常碰到是&org.eclipse.ui.DefaultTextEditor&
&&&&&&&&&&& 【IDE工具类提供的接口 VS& IWorkbenchPage提供的接口】
&&&&&&&&&&&&& 看一下以上提到的各个角色之间的调用关系图吧:
&&&&&&&&&&&&&
&&&&&&& 【使用Eclipse提供的打开editor的接口】
&&&&&&& 还是那句话,需求决定一切。我们看一下打开编辑器的需求:
&&&&&&& 1、打开工作区中工程内的文件资源
&&&&&&& 2、打开工作区.metadata目录中的文件资源
&&&&&&& 3、打开工作区外部的文件资源
&&&&&&& 【说明】Eclipse工作区实际上是有数据区和元数据区两个区域组成的,示意如下:
&&&&&&&&&&&
&&&&&&&&&&& 对于Eclipse来说,.metadata目录下存放的是插件运行时的关键状态数据,不建议用户再工作区实例运行期间做相应修改,为此eclipse干了两件事情:1、运行期间会自动在.metadata目录下产生一个进程锁定的.lock文件;2、Eclipse不允许用户通过IResource系列接口直接访问或修改.meatadata目录下的资源
&&&&&&&&&& 【打开工作区工程内的资源】
&&&&&&&&&&& 假设工作区中有测试工程TestProject,工程下有文本文件java_file.txt。对应创建代码如下:
&&&&&&&&&&&&
2 &&&&&&&&&&&
//创建工程
3 &&&&&&&&&&& IProject project
= ResourcesPlugin.getWorkspace().getRoot().getProject(&TestProject&);
4 &&&&&&&&&&&
if (!project.exists())
5 &&&&&&&&&&&&&&& project.create(null);
6 &&&&&&&&&&&
if (!project.isOpen())
7 &&&&&&&&&&&&&&& project.open(null);
8 &&&&&&&&&&&
9 &&&&&&&&&&&
//创建文件
10 &&&&&&&&&&& IFile java_file
= project.getFile(new Path(&/java_file.txt&));
11 &&&&&&&&&&& InputStream inputStreamJava
= new ByteArrayInputStream(&class MyType{}&.getBytes());
12 &&&&&&&&&&&
if (!java_file.exists())
13 &&&&&&&&&&&&&&& java_file.create(inputStreamJava,
14 &&&&&&& }
catch (CoreException e) {
15 &&&&&&&&&&& IStatus status
= new Status(IStatus.ERROR,
&myplugin&,
<span style="color:#1,
&创建资源失败&, e);
16 &&&&&&&&&&& Activator.getDefault().getLog().log(status);
17 &&&&&&& }
&&&&&&&&&&&
&&&&&&& 打开方式一:Eclipse默认计算对应的editor id,会用default text editor打开&
2 &&&&&&&&&&& IWorkbenchPage page
= PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
3 &&&&&&&&&&& IProject project
= ResourcesPlugin.getWorkspace().getRoot().getProject(&TestProject&);
4 &&&&&&&&&&&
5 &&&&&&&&&&& IFile java_file
= project.getFile(new Path(&/java_file.txt&));
6 &&&&&&&&&&& IDE.openEditor(page, java_file);&&&&&&&&&&&
7 &&&&&&& }
catch (CoreException e) {
8 &&&&&&&&&&& IStatus status
= new Status(IStatus.ERROR,
&myplugin&,
<span style="color:#2,
&打开工作区内文件出错&, e);
9 &&&&&&&&&&& Activator.getDefault().getLog().log(status);
10 &&&&&&& }
&&&&&&& 打开方式二:指定java源码编辑器打开,会用java源码编辑器打开
2 &&&&&&&&&&& IWorkbenchPage page
= PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
3 &&&&&&&&&&& IProject project
= ResourcesPlugin.getWorkspace().getRoot().getProject(&TestProject&);
4 &&&&&&&&&&&
5 &&&&&&&&&&& IFile java_file
= project.getFile(new Path(&/java_file.txt&));
6 &&&&&&&&&&& IDE.openEditor(page, java_file,
&org.eclipse.pilationUnitEditor&);
7 &&&&&&& }
catch (CoreException e) {
8 &&&&&&&&&&& IStatus status
= new Status(IStatus.ERROR,
&myplugin&,
<span style="color:#2,
&打开工作区内文件出错&, e);
9 &&&&&&&&&&& Activator.getDefault().getLog().log(status);
10 &&&&&&& }
&&&&&&&&&& 打开方式三:设定editor id属性,该文件以后默认都用此editor id打开
2 &&&&&&&&&&& IWorkbenchPage page
= PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
3 &&&&&&&&&&& IProject project
= ResourcesPlugin.getWorkspace().getRoot().getProject(&TestProject&);
4 &&&&&&&&&&&
5 &&&&&&&&&&& IFile java_file
= project.getFile(new Path(&/java_file.txt&));
6 &&&&&&&&&&& java_file.setPersistentProperty(IDE.EDITOR_KEY,
&org.eclipse.pilationUnitEditor&);
7 &&&&&&&&&&& IDE.openEditor(page, java_file);
8 &&&&&&& }
catch (CoreException e) {
9 &&&&&&&&&&& IStatus status
= new Status(IStatus.ERROR,
&myplugin&,
<span style="color:#2,
&打开工作区内文件出错&, e);
10 &&&&&&&&&&& Activator.getDefault().getLog().log(status);
11 &&&&&&& }
&&&&&&& 说明:对于工作区工程内的资源,可以有两种方式:一是local的,那就是物理存在与工程之内;二是link进入的。打开编辑器的时候,不需要做区分。
&&&&&&& 【打开工作区外部的资源】
&&&&&&& 说明:既存在于工作区外部,同时又没有被link进工程。
&&&&&&& 在Eclipse中有个功能,就是File-&Open File,可以打开一个外部文件。那我们看一下它是怎么实现的。我们只需要打开对应的对话框,然后挂起主线程,就可以找到对应的action了(挂起线程可以帮我们很方便的调试很多类型的问题,以后细说~_~):
&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&& 分析一下OpenExternalFileAction的实现,我们发现它自己构建了一个editor input
转载的 一个哥们写的很详细:
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:220158次
积分:3984
积分:3984
排名:第2814名
原创:170篇
转载:109篇
评论:48条
(2)(1)(3)(4)(8)(6)(1)(2)(5)(1)(1)(3)(15)(7)(22)(8)(7)(1)(2)(2)(8)(3)(18)(42)(80)(28)用eclipse学习android,打开layout下的文件后,点击Graphical Layout 提示错误,不能显示界面效果。_百度知道
用eclipse学习android,打开layout下的文件后,点击Graphical Layout 提示错误,不能显示界面效果。
error!NoClassDefFoundError: Could not initialize class sun.awt.windows.WToolkitException details are logged in Window & Show View & Error Log
前两突现错误
看环境变量没备置环境变量CLASSPATH = .&#92;;%JAVA_HOME%&#92;lib&#92;tools.jar注意前面.
环境没有问题啊
其他类似问题
android的相关知识
按默认排序
其他2条回答
sun.awt.windows.WToolkit做引用javaawt包看看包引用错误
我把整个工程发给别人,在他那里可以正常显示出来的
我今天也是这样 然后重新解压了Eclipse就ok 了
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁如何在新窗口中打开文件?
[问题点数:60分,结帖人iccke1]
如何在新窗口中打开文件?
[问题点数:60分,结帖人iccke1]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2011年4月 Windows专区大版内专家分月排行榜第三2011年2月 Windows专区大版内专家分月排行榜第三
2010年10月 Windows专区大版内专家分月排行榜第三2010年9月 Windows专区大版内专家分月排行榜第三2010年8月 Windows专区大版内专家分月排行榜第三
2010年8月 硬件使用大版内专家分月排行榜第二
2010年7月 Windows专区大版内专家分月排行榜第三2009年1月 Windows专区大版内专家分月排行榜第三2008年12月 Windows专区大版内专家分月排行榜第三2006年8月 扩充话题大版内专家分月排行榜第三
2014年4月 Windows专区大版内专家分月排行榜第一2013年8月 Windows专区大版内专家分月排行榜第一2013年7月 Windows专区大版内专家分月排行榜第一2013年5月 Windows专区大版内专家分月排行榜第一2013年4月 Windows专区大版内专家分月排行榜第一
2014年5月 Windows专区大版内专家分月排行榜第二2013年11月 Windows专区大版内专家分月排行榜第二2013年10月 Windows专区大版内专家分月排行榜第二2013年6月 Windows专区大版内专家分月排行榜第二2013年3月 Windows专区大版内专家分月排行榜第二2006年1月 Windows专区大版内专家分月排行榜第二
2014年10月 其他开发语言大版内专家分月排行榜第二2013年7月 Windows专区大版内专家分月排行榜第二2013年5月 其他开发语言大版内专家分月排行榜第二2013年4月 其他开发语言大版内专家分月排行榜第二2012年11月 其他开发语言大版内专家分月排行榜第二2012年6月 其他开发语言大版内专家分月排行榜第二2011年11月 其他开发语言大版内专家分月排行榜第二2011年9月 其他开发语言大版内专家分月排行榜第二2010年6月 其他开发语言大版内专家分月排行榜第二2007年4月 其他开发语言大版内专家分月排行榜第二2006年12月 其他开发语言大版内专家分月排行榜第二2006年11月 其他开发语言大版内专家分月排行榜第二2005年6月 其他开发语言大版内专家分月排行榜第二2003年5月 其他开发语言大版内专家分月排行榜第二2003年3月 其他开发语言大版内专家分月排行榜第二
2013年11月 其他开发语言大版内专家分月排行榜第三2013年8月 其他开发语言大版内专家分月排行榜第三2012年12月 其他开发语言大版内专家分月排行榜第三2012年9月 其他开发语言大版内专家分月排行榜第三2012年8月 其他开发语言大版内专家分月排行榜第三2012年5月 其他开发语言大版内专家分月排行榜第三2011年12月 其他开发语言大版内专家分月排行榜第三2010年12月 其他开发语言大版内专家分月排行榜第三2010年9月 其他开发语言大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 闭经怎么能调有月经 的文章

 

随机推荐