@Override public ActionCallback show() { LOG.assertTrue( EventQueue.isDispatchThread(), "Access is allowed from event dispatch thread only"); if (myTypeAheadCallback != null) { IdeFocusManager.getInstance(myProject).typeAheadUntil(myTypeAheadCallback); } LOG.assertTrue( EventQueue.isDispatchThread(), "Access is allowed from event dispatch thread only"); final ActionCallback result = new ActionCallback(); final AnCancelAction anCancelAction = new AnCancelAction(); final JRootPane rootPane = getRootPane(); anCancelAction.registerCustomShortcutSet( new CustomShortcutSet(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0)), rootPane); myDisposeActions.add( new Runnable() { @Override public void run() { anCancelAction.unregisterCustomShortcutSet(rootPane); } }); if (!myCanBeParent && myWindowManager != null) { myWindowManager.doNotSuggestAsParent(myDialog.getWindow()); } final CommandProcessorEx commandProcessor = ApplicationManager.getApplication() != null ? (CommandProcessorEx) CommandProcessor.getInstance() : null; final boolean appStarted = commandProcessor != null; if (myDialog.isModal() && !isProgressDialog()) { if (appStarted) { commandProcessor.enterModal(); LaterInvocator.enterModal(myDialog); } } if (appStarted) { hidePopupsIfNeeded(); } try { myDialog.show(); } finally { if (myDialog.isModal() && !isProgressDialog()) { if (appStarted) { commandProcessor.leaveModal(); LaterInvocator.leaveModal(myDialog); } } myDialog.getFocusManager().doWhenFocusSettlesDown(result.createSetDoneRunnable()); } return result; }
private void createDialog( @Nullable Window owner, boolean canBeParent, @NotNull DialogWrapper.IdeModalityType ideModalityType) { if (isHeadless()) { myDialog = new HeadlessDialog(); return; } myDialog = new MyDialog( owner, myWrapper, myProject, myWindowFocusedCallback, myTypeAheadDone, myTypeAheadCallback); myDialog.setModalityType(ideModalityType.toAwtModality()); myCanBeParent = canBeParent; }
public DialogWrapperPeerImpl( @NotNull final DialogWrapper wrapper, final Window owner, final boolean canBeParent, final DialogWrapper.IdeModalityType ideModalityType) { myWrapper = wrapper; myWindowManager = null; Application application = ApplicationManager.getApplication(); if (application != null && application.hasComponent(WindowManager.class)) { myWindowManager = (WindowManagerEx) WindowManager.getInstance(); } createDialog(owner, canBeParent); if (!isHeadless()) { Dialog.ModalityType modalityType = DialogWrapper.IdeModalityType.IDE.toAwtModality(); if (Registry.is("ide.perProjectModality")) { modalityType = ideModalityType.toAwtModality(); } myDialog.setModalityType(modalityType); } }
@Override @SuppressWarnings("SSBasedInspection") protected void dispose() { LOG.assertTrue( EventQueue.isDispatchThread(), "Access is allowed from event dispatch thread only"); for (Runnable runnable : myDisposeActions) { runnable.run(); } myDisposeActions.clear(); final JRootPane root = myDialog.getRootPane(); Runnable disposer = new Runnable() { @Override public void run() { myDialog.dispose(); myProject = null; SwingUtilities.invokeLater( new Runnable() { @Override public void run() { if (myDialog != null && root != null) { myDialog.remove(root); } } }); } }; if (EventQueue.isDispatchThread()) { disposer.run(); } else { SwingUtilities.invokeLater(disposer); } }
@Override public void setUndecorated(boolean undecorated) { myDialog.setUndecorated(undecorated); }
@Override public void setLocation(@NotNull Point p) { myDialog.setLocation(p); }
@Override public void setResizable(boolean resizable) { myDialog.setResizable(resizable); }
@Override public void setTitle(String title) { myDialog.setTitle(title); }
@Override public boolean isShowing() { return myDialog.isShowing(); }
@Override public boolean isModal() { return myDialog.isModal(); }
@Override @Nullable public Container getContentPane() { return getRootPane() != null ? myDialog.getContentPane() : null; }
@Override public void toBack() { myDialog.toBack(); }
@Override public void toFront() { myDialog.toFront(); }
@Override public void addKeyListener(KeyListener listener) { myDialog.addKeyListener(listener); }
@Override public void addMouseListener(MouseMotionListener listener) { myDialog.addMouseMotionListener(listener); }
@Override public Dimension getPreferredSize() { return myDialog.getPreferredSize(); }
@Override public void setModal(boolean modal) { myDialog.setModal(modal); }
/** @see javax.swing.JDialog#validate */ @Override public void validate() { myDialog.validate(); }
@Override public boolean isVisible() { return myDialog.isVisible(); }
/** @see javax.swing.JDialog#repaint */ @Override public void repaint() { myDialog.repaint(); }
@Override public void setSize(int width, int height) { myDialog.setSize(width, height); }
@Override public Window getOwner() { return myDialog.getOwner(); }
@Override public void isResizable() { myDialog.isResizable(); }
@Override public Window getWindow() { return myDialog.getWindow(); }
@NotNull @Override public Point getLocation() { return myDialog.getLocation(); }
@Override public JRootPane getRootPane() { return myDialog.getRootPane(); }
@Override public void setLocation(int x, int y) { myDialog.setLocation(x, y); }
@Override public String getTitle() { return myDialog.getTitle(); }
@Override public FocusTrackback getFocusTrackback() { return myDialog.getFocusTrackback(); }
/** @see java.awt.Window#pack */ @Override public void pack() { myDialog.pack(); }