# This patch file was generated by NetBeans IDE # Following Index: paths are relative to: D:\projects\nb.new # This patch can be applied using context Tools: Patch action on respective folder. # It uses platform neutral UTF-8 encoding and \n newlines. # Above lines and this line are ignored by the patching process. Index: openide/windows/apichanges.xml *** D:\projects\nb.new\openide\windows\apichanges.xml Base (1.16) --- D:\projects\nb.new\openide\windows\apichanges.xml Locally Modified (Based On 1.16) *************** *** 24,29 **** --- 24,45 ---- + + + Added a method to check the TopComponent type - editor/view + + + + + + Added method WindowManager.isOpenedEditorTopComponent(TopComponent) + for checking of the TopComponent type - editor or view. The method returns true if the given TopComponent is opened and is docked into an editor-type Mode. + It is safe to call this method outside the event dispatch thread. + + + + + Added methods for opening TopComponent at specified position Index: openide/windows/src/org/openide/windows/WindowManager.java *** D:\projects\nb.new\openide\windows\src\org\openide\windows\WindowManager.java Base (1.16) --- D:\projects\nb.new\openide\windows\src\org\openide\windows\WindowManager.java Locally Modified (Based On 1.16) *************** *** 546,551 **** --- 546,566 ---- } /** + *

Check whether the given TopComponent is opened and docked into an 'editor' Mode. + * It is safe to call this method outside the event dispatch thread.

+ *

Please note that some TopComponents may be docked into 'editor' modes as well as + * 'view' modes, see method isTopComponentAllowedToMoveAnywhere().

+ * + * @param tc TopComponent to check. + * @return True if the TopComponent is opened and the Mode it is docked + * is of 'editor' kind (i.e. holds editor windows). + * @since 6.16 + */ + public boolean isOpenedEditorTopComponent( TopComponent tc ) { + return false; + } + + /** *

Check whether the given Mode holds editor windows.

*

Please note that some TopComponents may be docked into 'editor' modes as well as * 'view' modes, see method isTopComponentAllowedToMoveAnywhere().

Index: openide/windows/manifest.mf *** D:\projects\nb.new\openide\windows\manifest.mf Base (1.15) --- D:\projects\nb.new\openide\windows\manifest.mf Locally Modified (Based On 1.15) *************** *** 1,5 **** Manifest-Version: 1.0 OpenIDE-Module: org.openide.windows ! OpenIDE-Module-Specification-Version: 6.15 OpenIDE-Module-Localizing-Bundle: org/openide/windows/Bundle.properties --- 1,5 ---- Manifest-Version: 1.0 OpenIDE-Module: org.openide.windows ! OpenIDE-Module-Specification-Version: 6.16 OpenIDE-Module-Localizing-Bundle: org/openide/windows/Bundle.properties Index: core/windows/test/unit/src/org/netbeans/core/windows/TopComponentTypeTest.java *** D:\projects\nb.new\core\windows\test\unit\src\org\netbeans\core\windows\TopComponentTypeTest.java Base (1.3) --- D:\projects\nb.new\core\windows\test\unit\src\org\netbeans\core\windows\TopComponentTypeTest.java Locally Modified (Based On 1.3) *************** *** 85,129 **** assertFalse( WindowManagerImpl.getInstance().isEditorTopComponent( tc ) ); } ! public void testIsEditorTopComponentIsSafeOutsideAWTWhenOpened () throws Exception { ! final TopComponent tc = new TopComponent (); ! Mode mode = WindowManagerImpl.getInstance().createMode( "editorMode", Constants.MODE_KIND_EDITOR, Constants.MODE_STATE_JOINED, false, new SplitConstraint[0] ); ! Mode otherEditorMode = WindowManagerImpl.getInstance().createMode( "otherEditorMode", Constants.MODE_KIND_EDITOR, Constants.MODE_STATE_JOINED, false, new SplitConstraint[0] ); Logger logger = Logger.getLogger( WindowManagerImpl.class.getName() ); final MyHandler handler = new MyHandler(); logger.addHandler( handler ); ! assertTrue( WindowManagerImpl.getInstance().isEditorMode( mode ) ); ! assertTrue( WindowManagerImpl.getInstance().isEditorMode( otherEditorMode ) ); ! mode.dockInto( tc ); Task t = RequestProcessor.getDefault().post( new Runnable() { public void run() { assertFalse( SwingUtilities.isEventDispatchThread() ); ! WindowManagerImpl.getInstance().isEditorTopComponent( tc ); } }); t.waitFinished(); ! assertNotNull( handler.latestLogRecord ); ! assertTrue( handler.latestLogRecord.getThrown() instanceof IllegalStateException ); ! assertEquals( Level.WARNING, handler.latestLogRecord.getLevel() ); ! tc.open(); ! assertTrue( tc.isOpened() ); ! handler.latestLogRecord = null; ! final boolean[] res = new boolean[1]; t = RequestProcessor.getDefault().post( new Runnable() { public void run() { assertFalse( SwingUtilities.isEventDispatchThread() ); ! res[0] = WindowManagerImpl.getInstance().isEditorTopComponent( tc ); } }); t.waitFinished(); assertNull( handler.latestLogRecord ); } --- 85,134 ---- assertFalse( WindowManagerImpl.getInstance().isEditorTopComponent( tc ) ); } ! public void testIsOpenedEditorTopComponent() throws Exception { ! final TopComponent editorTc = new TopComponent (); ! final TopComponent viewTc = new TopComponent (); ! Mode editorMode = WindowManagerImpl.getInstance().createMode( "editorMode", Constants.MODE_KIND_EDITOR, Constants.MODE_STATE_JOINED, false, new SplitConstraint[0] ); ! Mode viewMode = WindowManagerImpl.getInstance().createMode( "viewMode", Constants.MODE_KIND_VIEW, Constants.MODE_STATE_JOINED, false, new SplitConstraint[0] ); Logger logger = Logger.getLogger( WindowManagerImpl.class.getName() ); final MyHandler handler = new MyHandler(); logger.addHandler( handler ); ! assertTrue( WindowManagerImpl.getInstance().isEditorMode( editorMode ) ); ! assertFalse( WindowManagerImpl.getInstance().isEditorMode( viewMode ) ); ! editorMode.dockInto( editorTc ); ! viewMode.dockInto( viewTc ); + final boolean[] res = new boolean[2]; Task t = RequestProcessor.getDefault().post( new Runnable() { public void run() { assertFalse( SwingUtilities.isEventDispatchThread() ); ! res[0] = WindowManagerImpl.getInstance().isOpenedEditorTopComponent( editorTc ); ! res[1] = WindowManagerImpl.getInstance().isOpenedEditorTopComponent( viewTc ); } }); t.waitFinished(); ! assertNull( handler.latestLogRecord ); ! assertFalse( res[0] ); ! assertFalse( res[1] ); ! editorTc.open(); ! viewTc.open(); ! assertTrue( editorTc.isOpened() ); ! assertTrue( viewTc.isOpened() ); ! t = RequestProcessor.getDefault().post( new Runnable() { public void run() { assertFalse( SwingUtilities.isEventDispatchThread() ); ! res[0] = WindowManagerImpl.getInstance().isOpenedEditorTopComponent( editorTc ); ! res[1] = WindowManagerImpl.getInstance().isOpenedEditorTopComponent( viewTc ); } }); t.waitFinished(); assertNull( handler.latestLogRecord ); + assertTrue( res[0] ); + assertFalse( res[1] ); } private class MyHandler extends Handler { Index: core/windows/src/org/netbeans/core/windows/WindowManagerImpl.java *** D:\projects\nb.new\core\windows\src\org\netbeans\core\windows\WindowManagerImpl.java Base (1.62) --- D:\projects\nb.new\core\windows\src\org\netbeans\core\windows\WindowManagerImpl.java Locally Modified (Based On 1.62) *************** *** 1190,1209 **** @Override public boolean isEditorTopComponent( TopComponent tc ) { - //check opened TopComponents first to avoid AWT assertion if possible for( Iterator it = getModes().iterator(); it.hasNext(); ) { ModeImpl mode = (ModeImpl)it.next(); ! if( mode.getOpenedTopComponents().contains( tc ) ) { return mode.getKind() == Constants.MODE_KIND_EDITOR; } } ! //now look also in closed and docked TopComponents for( Iterator it = getModes().iterator(); it.hasNext(); ) { ModeImpl mode = (ModeImpl)it.next(); ! if( mode.containsTopComponent( tc ) ) { return mode.getKind() == Constants.MODE_KIND_EDITOR; } } --- 1190,1213 ---- @Override public boolean isEditorTopComponent( TopComponent tc ) { for( Iterator it = getModes().iterator(); it.hasNext(); ) { ModeImpl mode = (ModeImpl)it.next(); ! if( mode.containsTopComponent( tc ) ) { return mode.getKind() == Constants.MODE_KIND_EDITOR; } } ! //unknown TopComponent ! return false; ! } ! ! @Override ! public boolean isOpenedEditorTopComponent( TopComponent tc ) { for( Iterator it = getModes().iterator(); it.hasNext(); ) { ModeImpl mode = (ModeImpl)it.next(); ! if( mode.getOpenedTopComponents().contains( tc ) ) { return mode.getKind() == Constants.MODE_KIND_EDITOR; } }