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.