public final IdeFrameImpl allocateFrame(final Project project) { LOG.assertTrue(!myProject2Frame.containsKey(project)); final IdeFrameImpl frame; if (myProject2Frame.containsKey(null)) { frame = myProject2Frame.get(null); myProject2Frame.remove(null); myProject2Frame.put(project, frame); frame.setProject(project); } else { frame = new IdeFrameImpl( (ApplicationInfoEx) ApplicationInfo.getInstance(), ActionManagerEx.getInstanceEx(), UISettings.getInstance(), DataManager.getInstance(), ApplicationManager.getApplication()); final Rectangle bounds = ProjectFrameBounds.getInstance(project).getBounds(); if (bounds != null) { frame.setBounds(bounds); } else if (myFrameBounds != null) { frame.setBounds(myFrameBounds); } frame.setExtendedState(myFrameExtendedState); frame.setProject(project); myProject2Frame.put(project, frame); frame.setVisible(true); } frame.addWindowListener(myActivationListener); myEventDispatcher.getMulticaster().frameCreated(frame); return frame; }