Search code examples
eclipseeclipse-rcpeclipse-pluginnodeclipse

Eclipse-plugin-dev putting a View first in a stack breaks the stack


In Nodeclipse UI plugin Node perspective defines several Views

<extension
     point="org.eclipse.ui.perspectiveExtensions">
  <perspectiveExtension
        targetID="org.nodeclipse.ui.perspectives.NodePerspective">

when it like

        <view id="org.eclipse.debug.ui.DebugView" 
            relative="org.eclipse.ui.console.ConsoleView" 
            relationship="stack"/>              
        <view id="org.eclipse.tcf.te.ui.terminals.TerminalsView"
            relative="org.eclipse.debug.ui.DebugView"
            relationship="stack"/>
        <view id="winterwell.markdown.views.MarkdownPreview" 
            relative="org.eclipse.tcf.te.ui.terminals.TerminalsView" 
            relationship="stack"/>              
        <view id="org.eclipse.ui.views.ProblemView" 
            relative="winterwell.markdown.views.MarkdownPreview" 
            relationship="stack"/>   

is OK. The result is

3rd

But when I want to put TCF Terminals on the first place

        <view id="org.eclipse.ui.console.ConsoleView" 
            relative="org.eclipse.tcf.te.ui.terminals.TerminalsView" 
            relationship="stack"/>
        <view id="org.eclipse.debug.ui.DebugView" 
            relative="org.eclipse.ui.console.ConsoleView" 
            relationship="stack"/>              
        <view id="winterwell.markdown.views.MarkdownPreview" 
            relative="org.eclipse.debug.ui.DebugView" 
            relationship="stack"/>              
        <view id="org.eclipse.ui.views.ProblemView" 
            relative="winterwell.markdown.views.MarkdownPreview" 
            relationship="stack"/>   

it breaks down into new epmty View to the right and no Terminal View

enter image description here

UPDATE: I tried

        <view id="org.eclipse.tcf.te.ui.terminals.TerminalsView"
             relative="org.eclipse.ui.editorss"
             relationship="bottom"/>
        <view id="org.eclipse.ui.console.ConsoleView" 
            relative="org.eclipse.tcf.te.ui.terminals.TerminalsView" 
            relationship="stack"/>
        <view id="org.eclipse.debug.ui.DebugView" 
            relative="org.eclipse.ui.console.ConsoleView" 
            relationship="stack"/>
        <view id="winterwell.markdown.views.MarkdownPreview" 
            relative="org.eclipse.debug.ui.DebugView" 
            relationship="stack"/>              
        <view id="org.eclipse.ui.views.ProblemView" 
            relative="winterwell.markdown.views.MarkdownPreview" 
            relationship="stack"/>   
        <view id="org.eclipse.pde.runtime.LogView" 
            relative="org.eclipse.ui.views.ProblemView" 
            relationship="stack"/>

as advised by Uwe Stieber in https://bugs.eclipse.org/bugs/show_bug.cgi?id=454884#c3

But the result is putting View stack under editor but not in the South section:

c3


Solution

  • As later advised by Uwe Stieber, solved by using NodePerspective.java

        IFolderLayout rightBottom = factory.createFolder("rightBottom", IPageLayout.BOTTOM, 0.75f, factory.getEditorArea());// NON-NLS-1
        if (viewRegistry.find(ID_TERMINALS_VIEW) != null){
            rightBottom.addView(ID_TERMINALS_VIEW);        
        }
        rightBottom.addView(IConsoleConstants.ID_CONSOLE_VIEW);
        rightBottom.addView(ID_DEBUG_VIEW);
        if (viewRegistry.find(ID_MARKDOWN_VIEW) != null){
            rightBottom.addView(ID_MARKDOWN_VIEW); 
        }
        if (viewRegistry.find(ID_GFM_VIEW) != null){
            rightBottom.addView(ID_GFM_VIEW);        
        }
        rightBottom.addView(IPageLayout.ID_PROBLEM_VIEW);
        if (viewRegistry.find(ID_LOG_VIEW) != null){
            rightBottom.addView(ID_LOG_VIEW);        
        }