Re: Use MultiView APIs

geertjan wielenga <[email protected]>
Newsgroups gmane.comp.java.netbeans.modules.openide.devel
Organization Oracle Corporation
Message-ID <[email protected]>

Please, move to the Nodes API from your JTree. Once you have Nodes, 
you'll have many other useful features too. Plus, I recommend that you 
don't use a separate TopComponent, instead extend the Services window:

http://bits.netbeans.org/dev/javadoc/org-netbeans-core-ide/org/netbeans/api/core/ide/ServicesTabNodeRegistration.html

Example:

https://blogs.oracle.com/geertjan/entry/servicestabnoderegistration

Gj


On 14-7-2016 21:22, Nuwan Sameera wrote:
> Hi,
>
> Thank you for the support.
>
> Yes problem occurred line 508. But problem is not 
> DefaultMutableTreeNode. Because without multiview it works fine.
>
> We need to provide Lookup object with CloneableEditorSupport instance 
> instead Lookup.EMPTY. I this this is the problem.
>
> Regards,
> Nuwan Sameera.
>
>
> On Fri, Jul 15, 2016 at 12:37 AM, geertjan wielenga 
> <[email protected] <mailto:[email protected]>> 
> wrote:
>
>
>     The stacktrace is much more detailed to what you provided:
>
>     java.lang.IllegalArgumentException: We expect
>     CloneableEditorSupport in org.openide.util.Lookup$Empty@cce1139
>         at
>     org.netbeans.core.spi.multiview.text.MultiViewEditorElement.<init>(MultiViewEditorElement.java:97)
>         at
>     org.apache.syncope.netbeans.plugin.view.ResourceExplorerTopComponent$7.createElement(ResourceExplorerTopComponent.java:508)
>         at
>     org.netbeans.core.multiview.MultiViewModel.getElementForDescription(MultiViewModel.java:222)
>         at
>     org.netbeans.core.multiview.MultiViewModel.getActiveElement(MultiViewModel.java:132)
>         at
>     org.netbeans.core.multiview.MultiViewModel.getActiveElement(MultiViewModel.java:128)
>         at
>     org.netbeans.core.multiview.MultiViewPeer.assignLookup(MultiViewPeer.java:261)
>         at
>     org.netbeans.core.multiview.MultiViewTopComponent.getLookup(MultiViewTopComponent.java:117)
>         at
>     org.netbeans.modules.localhistory.LocalHistory$OpenedFilesListener.handleTCFiles(LocalHistory.java:535)
>         at
>     org.netbeans.modules.localhistory.LocalHistory$OpenedFilesListener.propertyChange(LocalHistory.java:464)
>         at
>     java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335)
>         at
>     java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:327)
>         at
>     java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:263)
>         at
>     org.netbeans.core.windows.RegistryImpl.doFirePropertyChange(RegistryImpl.java:329)
>         at
>     org.netbeans.core.windows.RegistryImpl.topComponentOpened(RegistryImpl.java:187)
>         at
>     org.netbeans.core.windows.WindowManagerImpl.notifyRegistryTopComponentOpened(WindowManagerImpl.java:1183)
>         at
>     org.netbeans.core.windows.WindowManagerImpl.notifyTopComponentOpened(WindowManagerImpl.java:1151)
>         at
>     org.netbeans.core.windows.Central.addModeOpenedTopComponent(Central.java:798)
>         at
>     org.netbeans.core.windows.ModeImpl.addOpenedTopComponent(ModeImpl.java:354)
>         at
>     org.netbeans.core.windows.WindowManagerImpl.topComponentOpenAtTabPosition(WindowManagerImpl.java:1261)
>         at
>     org.netbeans.core.windows.WindowManagerImpl.topComponentOpen(WindowManagerImpl.java:1226)
>         at org.openide.windows.TopComponent.open(TopComponent.java:497)
>         at org.openide.windows.TopComponent.open(TopComponent.java:477)
>         at
>     org.apache.syncope.netbeans.plugin.view.ResourceExplorerTopComponent.openMailEditor(ResourceExplorerTopComponent.java:580)
>         at
>     org.apache.syncope.netbeans.plugin.view.ResourceExplorerTopComponent.resourceExplorerTreeMouseClicked(ResourceExplorerTopComponent.java:170)
>         at
>     org.apache.syncope.netbeans.plugin.view.ResourceExplorerTopComponent.access$000(ResourceExplorerTopComponent.java:98)
>         at
>     org.apache.syncope.netbeans.plugin.view.ResourceExplorerTopComponent$1.mouseClicked(ResourceExplorerTopComponent.java:143)
>         at
>     java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)
>         at java.awt.Component.processMouseEvent(Component.java:6528)
>         at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
>         at java.awt.Component.processEvent(Component.java:6290)
>         at java.awt.Container.processEvent(Container.java:2234)
>         at java.awt.Component.dispatchEventImpl(Component.java:4881)
>         at java.awt.Container.dispatchEventImpl(Container.java:2292)
>         at java.awt.Component.dispatchEvent(Component.java:4703)
>         at
>     java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
>         at
>     java.awt.LightweightDispatcher.processMouseEvent(Container.java:4542)
>         at
>     java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
>         at java.awt.Container.dispatchEventImpl(Container.java:2278)
>         at java.awt.Window.dispatchEventImpl(Window.java:2739)
>         at java.awt.Component.dispatchEvent(Component.java:4703)
>         at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
>         at java.awt.EventQueue.access$400(EventQueue.java:97)
>         at java.awt.EventQueue$3.run(EventQueue.java:697)
>         at java.awt.EventQueue$3.run(EventQueue.java:691)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at
>     java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
>         at
>     java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
>         at java.awt.EventQueue$4.run(EventQueue.java:719)
>         at java.awt.EventQueue$4.run(EventQueue.java:717)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at
>     java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
>         at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
>         at
>     org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
>     [catch] at
>     java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
>         at
>     java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
>         at
>     java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
>         at
>     java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
>         at
>     java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
>         at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
>
>
>     Here's what I see at line 508, which is the line shown above as
>     being problematic:
>
>                 @Override
>                 public MultiViewElement createElement() {
>                     return new MultiViewEditorElement(Lookup.EMPTY);
>                 }
>
>     That looks quite suspicious.
>
>     I'd suggest you start by rewriting your code to use Nodes instead
>     of DefaultMutableTreeNode, etc.
>
>     I.e., rewrite your JTree to use Nodes instead:
>
>     https://platform.netbeans.org/tutorials/nbm-nodesapi2.html
>
>     Gj
>
>
>
>     On 14-7-2016 20:55, Nuwan Sameera wrote:
>>     Hi,
>>
>>     After run the project,
>>
>>     Go *Window-> Apache Syncope
>>
>>     *
>>     Enter following details,
>>
>>     *Server URL - http://syncope-vm.apache.org:9080/syncope/rest
>>     User Name - admin
>>     Password - password*
>>
>>     Then go to tree in left side called Apache Syncope and expand it.
>>
>>     Expand *Mail Templates*.
>>
>>     *Double click any element - Use First Element*.
>>
>>     Then show different tabs saying "*Test 1 , Test 2, Test 3*". But
>>     nothing open editor pane and given runtime error.
>>
>>     I think you can reproduce issue.
>>
>>     Thanks and Regards,
>>     Nuwan Samaeera.
>>
>>     On Fri, Jul 15, 2016 at 12:14 AM, geertjan wielenga
>>     <[email protected]
>>     <mailto:[email protected]>> wrote:
>>
>>
>>
>>         Well, you're going to need to provide a lot of information --
>>         otherwise I can't help.
>>
>>         What must I do to see the problem myself? When I open the
>>         window, I am asked for a user and password and various things
>>         -- I don't know what to fill in there, so I cannot reproduce
>>         the problem.
>>
>>         Pretend you're me and provide the info I need, assuming that
>>         I know nothing at all about your problem, up to the point
>>         where I can actually see the problem myself.
>>
>>         Gj
>>
>>
>>
>>
>>         On 14-7-2016 20:40, Nuwan Sameera wrote:
>>>         Hi,
>>>
>>>         I tried with this change. But same error occurred. How I
>>>         change 505. Error given from that line.
>>>
>>>         Thanks and Regards,
>>>         Nuwan Sameera
>>>
>>>         On Thu, Jul 14, 2016 at 11:59 PM, geertjan wielenga
>>>         <[email protected]
>>>         <mailto:[email protected]>> wrote:
>>>
>>>
>>>             Possibly this is all you need -- change the class
>>>             signature to this:
>>>
>>>             public final class ResourceExplorerTopComponent extends
>>>             CloneableTopComponent
>>>
>>>             Gj
>>>
>>>
>>>             On 14-7-2016 20:11, Nuwan Sameera wrote:
>>>>             Hi,
>>>>
>>>>             Thank you. My source codes available in [1]
>>>>
>>>>             [1]
>>>>             https://github.com/NuwanSameera/syncope/blob/master/netbeans-plugin/src/main/java/org/apache/syncope/netbeans/plugin/view/ResourceExplorerTopComponent.java
>>>>
>>>>             Line 479 - 581
>>>>
>>>>             Please check and support to solve issue.
>>>>
>>>>             I need to open empty editor and editor with content.
>>>>
>>>>             Regards,
>>>>             Nuwan Sameera.
>>>>
>>>>
>>>>             On Thu, Jul 14, 2016 at 11:27 PM, geertjan wielenga
>>>>             <[email protected]
>>>>             <mailto:[email protected]>> wrote:
>>>>
>>>>
>>>>                 Is the source code on GitHub or somewhere like
>>>>                 that? Would be happy to help you, but need more
>>>>                 context than the below, i.e., ideally the full
>>>>                 source code.
>>>>
>>>>                 Gj
>>>>
>>>>
>>>>                 On 14-7-2016 19:30, Nuwan Sameera wrote:
>>>>>                 Hi all,
>>>>>
>>>>>                 I am developing netbeans plugin for apache
>>>>>                 syncope. I need to open editors in different tabs
>>>>>                 in same instance like SOURCE and HISTORY. I am
>>>>>                 tried to using following code.
>>>>>
>>>>>                 MultiViewDescription[] descriptionArray = new
>>>>>                 MultiViewDescription[0];
>>>>>                 descriptionArray[0] = new MultiViewDescription() {
>>>>>                 @Override
>>>>>                 public int getPersistenceType() {
>>>>>                 return 0;
>>>>>                             }
>>>>>
>>>>>                 @Override
>>>>>                 public String getDisplayName() {
>>>>>                 return "Test 1";
>>>>>                             }
>>>>>
>>>>>                 @Override
>>>>>                 public Image getIcon() {
>>>>>                 return null;
>>>>>                             }
>>>>>
>>>>>                 @Override
>>>>>                 public HelpCtx getHelpCtx() {
>>>>>                 return null;
>>>>>                             }
>>>>>
>>>>>                 @Override
>>>>>                 public String preferredID() {
>>>>>                 return "A";
>>>>>                             }
>>>>>
>>>>>                 @Override
>>>>>                 public MultiViewElement createElement() {
>>>>>                 return new MultiViewEditorElement(Lookup.EMPTY);
>>>>>                 *//GIVEN RUNTIME ERROR
>>>>>                 *
>>>>>                             }
>>>>>                 };
>>>>>
>>>>>                 TopComponent ctc =
>>>>>                 MultiViewFactory.createMultiView(descriptionArray,
>>>>>                 descriptionArray[0]);
>>>>>                 ctc.open();
>>>>>                 ctc.requestActive();
>>>>>
>>>>>                 *//GIVEN RUNTIME ERROR Line give
>>>>>                 *|IllegalArgumentException
>>>>>                 <http://download.oracle.com/javase/7/docs/api/java/lang/IllegalArgumentException.html?is-external=true>
>>>>>                 saying |||CloneableEditorSupport|
>>>>>                 <http://bits.netbeans.org/8.0/javadoc/org-openide-text/org/openide/text/CloneableEditorSupport.html?is-external=true>
>>>>>                 is not present in provided |Lookup|
>>>>>                 <http://bits.netbeans.org/8.0/javadoc/org-openide-util/org/openide/util/Lookup.html?is-external=true>.
>>>>>
>>>>>                 |
>>>>>                 |I search method to create Lookup object with
>>>>>                 ClonableEditorSupport. I don't found suitable
>>>>>                 solution.
>>>>>
>>>>>                 |
>>>>>                 |Please help me.
>>>>>
>>>>>                 |
>>>>>                 |Thanks and Regards. |
>>>>>                 -- 
>>>>>                 Nuwan Sameera.
>>>>>                 Undergraduate,
>>>>>                 Electronic and Telecommunication Engineering,
>>>>>                 University of Moratuwa.
>>>>
>>>>
>>>>
>>>>
>>>>             -- 
>>>>             Nuwan Sameera.
>>>>             Undergraduate,
>>>>             Electronic and Telecommunication Engineering,
>>>>             University of Moratuwa.
>>>
>>>
>>>
>>>
>>>         -- 
>>>         Nuwan Sameera.
>>>         Undergraduate,
>>>         Electronic and Telecommunication Engineering,
>>>         University of Moratuwa.
>>
>>
>>
>>
>>     -- 
>>     Nuwan Sameera.
>>     Undergraduate,
>>     Electronic and Telecommunication Engineering,
>>     University of Moratuwa.
>
>
>
>
> -- 
> Nuwan Sameera.
> Undergraduate,
> Electronic and Telecommunication Engineering,
> University of Moratuwa.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.