小编Mic*_*ael的帖子

如何从活动的Eclipse编辑器中获取当前方法?

我目前正在开发一个Eclipse插件,它可以帮助我编码.基本上是一个String片段库.

在创建一个新的时,我很乐意给它一个Class of Class Class.MethodName.X的ID.

获取编辑器非常简单:

IWorkbenchPage page = PlatformUI.getWorkbench()
                        .getActiveWorkbenchWindow().getActivePage();
IEditorPart activeEditor = page.getActiveEditor();
if(activeEditor.getClass().getName().endsWith("CompilationUnitEditor")){
// do something
}
Run Code Online (Sandbox Code Playgroud)

现在......有没有办法使用Eclipse jdt API来获取我的文本光标当前所在方法的名称?

编辑:好的.在安德鲁的帮助下,这就是我得到的:

IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IEditorPart activeEditor = page.getActiveEditor();

if(activeEditor instanceof JavaEditor) {
    ICompilationUnit root = (ICompilationUnit) EditorUtility.getEditorInputJavaElement(activeEditor, false);
    try {
        ITextSelection sel = (ITextSelection) ((JavaEditor) activeEditor)
            .getSelectionProvider().getSelection();
        int offset = sel.getOffset();
        IJavaElement element = root.getElementAt(offset);
        if(element.getElementType() == IJavaElement.METHOD){
            return element.getElementName());
        }
    } catch (JavaModelException e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

工作得很好.虽然使用受限制的类是一种肮脏的解决方案.

java eclipse eclipse-plugin eclipse-jdt

10
推荐指数
2
解决办法
3130
查看次数

如何在我的64位RHEL6上获得libpam.so.0(32位)?

我正在尝试在RHEL6计算机上安装DB2 Enterprise Server.不幸的是,对于某些例程,它似乎需要32位版本的libpam.so.0.机器运行64位版本似乎安装了lib ...我认为它是64版本.有没有办法获取和安装DB2安装程序要使用的32位版本?

linux db2 redhat

7
推荐指数
2
解决办法
5万
查看次数

Lucene在更新后找不到文档

似乎每当我更新索引中的现有文档(删除/添加的相同行为)时,都无法使用TermQuery找到它.这是一个简短的片段:

iw = new IndexWriter(directory,config);

Document doc = new Document();
doc.add(new StringField("string", "a", Store.YES));
doc.add(new IntField("int", 1, Store.YES));

iw.addDocument(doc);

Query query = new TermQuery(new Term("string","a"));

Document[] hits = search(query);
doc = hits[0];
print(doc);

doc.removeField("int");
doc.add(new IntField("int", 2, Store.YES));

iw.updateDocument(new Term("string","a"), doc);

hits = search(query);
System.out.println(hits.length);
System.out.println("_________________");

for(Document hit : search(new MatchAllDocsQuery())){
    print(hit);
}
Run Code Online (Sandbox Code Playgroud)

这会产生以下控制台输出:

stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<string:a>
stored<int:1>
________________
0
_________________
stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<string:a>
stored<int:2>
________________
Run Code Online (Sandbox Code Playgroud)

似乎在更新之后,索引中的文档(而不是新文档)被MatchAllDocsQuery返回,但是由TermQuery找不到.

有关完整的示例代码,请访问http://pastebin.com/sP2Vav9v

此外,当StringField值包含特殊字符(例如file:/ F:/)时,这只会发生(第二次搜索不起作用).

java lucene

7
推荐指数
1
解决办法
707
查看次数

在Eclipse/RCP中定位工具栏

我正在研究我的小型RCP应用程序,它需要一个自定义的透视切换器来控制用户可以访问的视图.所以我在这里,尝试添加一个带有几个按钮的工具栏来切换视角.

我认为控制这些东西的最好方法是在ApplicationActionBarAdvisor中添加第二个工具栏,它可以调用我的操作/命令来切换视角.

所以假设我在fillCoolBar方法中创建了第二个ToolBarContributionItem,它看起来像这样:

protected void fillCoolBar(ICoolBarManager coolBar) {
    IToolBarManager toolbar = new ToolBarManager(SWT.FLAT | SWT.RIGHT);
    ToolBarContributionItem mainBar = new ToolBarContributionItem(toolbar, "main");
    coolBar.add(mainBar);

    toolbar.add(openViewAction);
    toolbar.add(newConnectionAction);

    //Custom perspective switcher bar
    IToolBarManager perspectives = new ToolBarManager(SWT.FLAT | SWT.RIGHT);
    ToolBarContributionItem perspectiveBar = new ToolBarContributionItem(perspectives, "perspectives");
    coolBar.add(perspectiveBar);        
}
Run Code Online (Sandbox Code Playgroud)

有什么想法我可以如何对齐工具栏,以便它在窗口的右侧?我很想把这个职位硬编码.

问候,迈克尔

java eclipse swt eclipse-plugin eclipse-rcp

5
推荐指数
1
解决办法
6280
查看次数

如何在Video控件上创建透明标签

我在这里几乎没有想法......对于其他一切,将背景颜色设置为Color.Transparent或设置TransparencyKey工作正常...

我有一个mp4视频,我需要将其作为我的表单的"背景".为此,我目前正在使用WMP控件.我的问题:我不能在它上面添加任何控件,因为它们总是呈现背景.哪个看起来像**视频...

有什么建议?

c# vb.net visual-studio-2010 windows-media-player axwindowsmediaplayer

5
推荐指数
2
解决办法
4655
查看次数

log4j属性:LevelMatchFilter不起作用

我试图将我的Logging路由到两个不同的文件:一个用于INFO消息,另一个用于ERROR.LevelMatchFilter似乎是正确的方法.不幸的是,所有消息都记录在我的info.log中,而不仅仅是INFO消息.我做错了什么想法?

这是我的配置:

# Define the root logger with appender file
log4j.logger.com.my.class.ClassName=DEBUG, FILE, ERR, CA

# Define the info file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=info.log
log4j.appender.FILE.filter.a=org.apache.log4j.varia.LevelMatchFilter
log4j.appender.FILE.filter.a.LevelToMatch=INFO
log4j.appender.FILE.filter.a.AcceptOnMatch=true

# Define the layout for info file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%d %-5p %c - %m%n

# Define the error file appender
log4j.appender.ERR=org.apache.log4j.FileAppender
log4j.appender.ERR.File=error.log
log4j.appender.ERR.Threshold=ERROR

# Define the layout for error file appender
log4j.appender.ERR.layout=org.apache.log4j.PatternLayout
log4j.appender.ERR.layout.conversionPattern=%d %-5p %c - %m%n


log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern=%d %-5p %c - %m%n
Run Code Online (Sandbox Code Playgroud)

java logging log4j properties

5
推荐指数
2
解决办法
1万
查看次数

将参数传递给视图

在我的RCP应用程序中,TreeViewer左侧有一个带有导航的视图,右侧有一个用于我的视图的文件夹.透视图如下所示:

public void createInitialLayout(IPageLayout layout) {
    layout.setEditorAreaVisible(false);
    layout.setFixed(false);

    layout.addStandaloneView(NavigationView.ID, false, IPageLayout.LEFT, 0.7f, layout.getEditorArea());

    right = layout.createFolder("right", IPageLayout.RIGHT, 0.3f, "com.my.app.views.browser.navigation");


    layout.getViewLayout(WallpaperView.Id).setCloseable(false);//dummy view to keep the folder from closing
    layout.getViewLayout(WallpaperView.Id).setMoveable(false);      

    right.addView(WallpaperView.Id);        
    //add some placeholders for the potential views
    right.addPlaceholder(DefaultAdminView.ID+":*");

}
Run Code Online (Sandbox Code Playgroud)

我想根据用户在导航树中选择的内容打开不同的视图.认为这不会很难.我的导航树视图:

tree = new TreeViewer(composite);
tree.setContentProvider(new BrowserNavigationTreeContentProvider());
tree.setLabelProvider(new BrowserNavigationTreeLabelProvider());
tree.setInput(UserProfileAdvisor.getProject());     

//register Mouselistener for doubleclick events
tree.addDoubleClickListener(new IDoubleClickListener(){

    @Override
    public void doubleClick(DoubleClickEvent event) {
        TreeSelection ts = (TreeSelection) event.getSelection();
        Object selectedItem = ts.getFirstElement();
        String viewId = DefaultAdminView.ID;                

         //set viewId depending on …
Run Code Online (Sandbox Code Playgroud)

java eclipse swt eclipse-plugin eclipse-rcp

4
推荐指数
2
解决办法
3628
查看次数

有没有办法打开JFace ElementTreeSelectionDialog展开?

正如标题已经说明的那样......我想打开一个已经展开的Tree的ElementTreeSelectionDialog.有什么办法吗?

问候,迈克尔

java eclipse eclipse-plugin jface

2
推荐指数
1
解决办法
323
查看次数