Java Code Examples for javax.swing.SwingUtilities#isDescendingFrom()

The following examples show how to use javax.swing.SwingUtilities#isDescendingFrom() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ProgressPanel.java    From wpcleaner with Apache License 2.0 6 votes vote down vote up
@Override
public void setVisible(boolean visible) {
  boolean oldVisible = isVisible();
  super.setVisible(visible);
  JRootPane rootPane = SwingUtilities.getRootPane(this);
  if ((rootPane != null) && (isVisible() != oldVisible)) {
    if (isVisible()) {
      Component focusOwner = KeyboardFocusManager.
          getCurrentKeyboardFocusManager().getPermanentFocusOwner();
      if ((focusOwner != null) &&
          SwingUtilities.isDescendingFrom(focusOwner, rootPane)) {
        recentFocusOwner = focusOwner;
      }
      rootPane.getLayeredPane().setVisible(false);
      requestFocusInWindow();
    } else {
      rootPane.getLayeredPane().setVisible(true);
      if (recentFocusOwner != null) {
        recentFocusOwner.requestFocusInWindow();
      }
      recentFocusOwner = null;
    }
  }
}
 
Example 2
Source File: PopupPanel.java    From rapidminer-studio with GNU Affero General Public License v3.0 6 votes vote down vote up
/**
 * Checks if the focus is still on this component or its child components.
 */
private boolean isFocusInside(Object newFocusedComp) {
	if (newFocusedComp instanceof Popup) {
		return true;
	}
	if (newFocusedComp instanceof Component && !SwingUtilities.isDescendingFrom((Component) newFocusedComp, this)) {
		// Check if focus is on other window
		if (containingWindow == null) {
			return false;
		}

		Window focusedWindow = KeyboardFocusManager.getCurrentKeyboardFocusManager().getActiveWindow();

		// if focus is on other window in owner chain, return false
		Window parent = containingWindow;
		do {
			if (parent == focusedWindow) {
				return false;
			} else {
				parent = parent.getOwner();
			}
		} while (parent != null);
	}
	return true;
}
 
Example 3
Source File: PanningManager.java    From rapidminer-studio with GNU Affero General Public License v3.0 6 votes vote down vote up
@Override
public void eventDispatched(AWTEvent e) {
	if (e instanceof MouseEvent) {
		MouseEvent me = (MouseEvent) e;
		if (!SwingUtilities.isDescendingFrom(me.getComponent(), target)) {
			return;
		}
		if (me.getID() == MouseEvent.MOUSE_RELEASED) {
			// stop when mouse released
			mouseOnScreenPoint = null;
			if (timer.isRunning()) {
				timer.stop();
			}
		} else if (me.getID() == MouseEvent.MOUSE_DRAGGED && me.getComponent() == target) {
			mouseOnScreenPoint = me.getLocationOnScreen();
		} else if (me.getID() == MouseEvent.MOUSE_PRESSED && me.getComponent() == target) {
			mouseOnScreenPoint = me.getLocationOnScreen();
			timer.start();
		}
	}
}
 
Example 4
Source File: CloneableEditor.java    From netbeans with Apache License 2.0 6 votes vote down vote up
/** Transfer the focus to the editor pane.
 */
@Deprecated
@Override
public boolean requestFocusInWindow() {
    super.requestFocusInWindow();

    if (pane != null) {
        if ((customComponent != null) && !SwingUtilities.isDescendingFrom(pane, customComponent)) {
            return customComponent.requestFocusInWindow();
        } else {
            return pane.requestFocusInWindow();
        }
    }

    return false;
}
 
Example 5
Source File: WindowUtilities.java    From ghidra with Apache License 2.0 6 votes vote down vote up
private static Dialog findYoungestChildDialogOfParentDialog(Dialog parentDialog,
		List<Dialog> openModalDialogs) {

	if (parentDialog == null) {
		return null;
	}

	for (Dialog potentialChildDialog : openModalDialogs) {
		if (parentDialog == potentialChildDialog) {
			continue;
		}
		if (SwingUtilities.isDescendingFrom(potentialChildDialog, parentDialog)) {
			return findYoungestChildDialogOfParentDialog(potentialChildDialog,
				openModalDialogs);
		}
	}
	return parentDialog;
}
 
Example 6
Source File: I18nPanel.java    From netbeans with Apache License 2.0 5 votes vote down vote up
/** Overrides superclass method to set default button. */
@Override
public void addNotify() {
    super.addNotify();
    
    if (withButtons) {
        if (SwingUtilities.isDescendingFrom(replaceButton, this)) {
            getRootPane().setDefaultButton(replaceButton);
        }
    }
}
 
Example 7
Source File: ResultView.java    From netbeans with Apache License 2.0 5 votes vote down vote up
public boolean isFocused() {
    ResultViewPanel rvp = getCurrentResultViewPanel();
    if (rvp != null) {
        Component owner = FocusManager.getCurrentManager().getFocusOwner();
        return owner != null && SwingUtilities.isDescendingFrom(owner, rvp);
    } else {
        return false;
    }
}
 
Example 8
Source File: CloneableEditor.java    From netbeans with Apache License 2.0 5 votes vote down vote up
/** Transfer the focus to the editor pane.
 */
@Deprecated
@Override
public void requestFocus() {
    super.requestFocus();

    if (pane != null) {
        if ((customComponent != null) && !SwingUtilities.isDescendingFrom(pane, customComponent)) {
            customComponent.requestFocus();
        } else {
            pane.requestFocus();
        }
    }
}
 
Example 9
Source File: IntervalManagerDialog.java    From nmonvisualizer with Apache License 2.0 5 votes vote down vote up
@Override
public void propertyChange(PropertyChangeEvent evt) {
    if (evt.getNewValue() != null) {
        // absolute parent => tabs
        // if any of the data entry forms are selected, unselect the interval table
        if (SwingUtilities.isDescendingFrom((java.awt.Component) evt.getNewValue(), absolute.getParent())) {
            intervals.getTable().clearSelection();
            systemTimes.getTable().clearSelection();
        }
        else if (intervals.getTable() == evt.getNewValue()) {
            systemTimes.getTable().clearSelection();
        }
    }
}
 
Example 10
Source File: EditorOnlyDisplayer.java    From netbeans with Apache License 2.0 5 votes vote down vote up
private boolean switchCurrentEditor() {
    final TopComponent tc = TopComponent.getRegistry().getActivated();
    if( null == tc || !TopComponentTracker.getDefault().isEditorTopComponent( tc ) )
        return false;

    final WindowManagerImpl wmi = WindowManagerImpl.getInstance();
    final JFrame mainWnd = ( JFrame ) wmi.getMainWindow();
    if( SwingUtilities.isDescendingFrom( tc, mainWnd.getContentPane() ) )
        return true;
    JPanel panel = new JPanel( new BorderLayout() );
    panel.add( tc, BorderLayout.CENTER  );
    try {
        mainWnd.setContentPane( panel );
    } catch( IndexOutOfBoundsException e ) {
        Logger.getLogger(EditorOnlyDisplayer.class.getName()).log(Level.INFO, "Error while switching current editor.", e);
        //#245541 - something is broken in the component hierarchy, let's try restoring to the default mode
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                cancel(false);
            }
        });
    }
    mainWnd.invalidate();
    mainWnd.revalidate();
    mainWnd.repaint();
    SwingUtilities.invokeLater( new Runnable() {
        @Override
        public void run() {
            tc.requestFocusInWindow();
        }
    });
    return true;
}
 
Example 11
Source File: DebugRepaintManager.java    From netbeans with Apache License 2.0 5 votes vote down vote up
@Override
public void addDirtyRegion(JComponent c, int x, int y, int w, int h) {
    for (JComponent dc : logComponents) {
        if (SwingUtilities.isDescendingFrom(dc, c)) {
            String boundsMsg = ViewUtils.toString(new Rectangle(x, y, w, h));
            ViewHierarchyImpl.REPAINT_LOG.log(Level.FINER,
                    "Component-REPAINT: " + boundsMsg + // NOI18N
                    " c:" + ViewUtils.toString(c), // NOI18N
                    new Exception("Component-Repaint of " + boundsMsg + " cause:")); // NOI18N
            break;
        }
    }

    super.addDirtyRegion(c, x, y, w, h);
}
 
Example 12
Source File: EditorRegistryWatcher.java    From netbeans with Apache License 2.0 5 votes vote down vote up
public void notifyActiveTopComponentChanged(Component activeTopComponent) {
    if (activeTopComponent != null) {
        JTextComponent activeTextComponent = activeTextComponentRef.get();
        if (activeTextComponent != null) {
            if (!SwingUtilities.isDescendingFrom(activeTextComponent, activeTopComponent)) {
                // A top component was focused that does not contain focused text component
                // so notify that there's in fact no active text component
                if (LOG.isLoggable(Level.FINE)) {
                    LOG.fine("EditorRegistryWatcher: TopComponent without active JTextComponent\n");
                }
                updateActiveActionInPresenters(null);
            }
        }
    }
}
 
Example 13
Source File: NavigatorController.java    From netbeans with Apache License 2.0 5 votes vote down vote up
public void actionPerformed (ActionEvent evt) {
    Component focusOwner = FocusManager.getCurrentManager().getFocusOwner();
    // move focus away only from navigator AWT children,
    // but not combo box to preserve its ESC functionality
    if (lastActivatedRef == null ||
        focusOwner == null ||
        !SwingUtilities.isDescendingFrom(focusOwner, navigatorTC.getTopComponent()) ||
        focusOwner instanceof JComboBox) {
        return;
    }
    TopComponent prevFocusedTc = lastActivatedRef.get();
    if (prevFocusedTc != null) {
        prevFocusedTc.requestActive();
    }
}
 
Example 14
Source File: StatusLineFactories.java    From netbeans with Apache License 2.0 5 votes vote down vote up
static void refreshStatusLine() {
    LOG.fine("StatusLineFactories.refreshStatusLine()\n");
    List<? extends JTextComponent> componentList = EditorRegistry.componentList();
    for (JTextComponent component : componentList) {
        boolean underMainWindow = (SwingUtilities.isDescendingFrom(component,
                WindowManager.getDefault().getMainWindow()));
        EditorUI editorUI = Utilities.getEditorUI(component);
        if (LOG.isLoggable(Level.FINE)) {
            String componentDesc = component.toString();
            Document doc = component.getDocument();
            Object streamDesc;
            if (doc != null && ((streamDesc = doc.getProperty(Document.StreamDescriptionProperty)) != null)) {
                componentDesc = streamDesc.toString();
            }
            LOG.fine("  underMainWindow=" + underMainWindow + // NOI18N
                    ", text-component: " + componentDesc + "\n");
        }
        if (editorUI != null) {
            StatusBar statusBar = editorUI.getStatusBar();
            statusBar.setVisible(!underMainWindow);
            boolean shouldUpdateGlobal = underMainWindow && component.isShowing();
            if (shouldUpdateGlobal) {
                statusBar.updateGlobal();
                LOG.fine("  end of refreshStatusLine() - found main window component\n\n"); // NOI18N
                return; // First non-docked one found and updated -> quit
            }
        }
    }
    clearStatusLine();
    LOG.fine("  end of refreshStatusLine() - no components - status line cleared\n\n"); // NOI18N
}
 
Example 15
Source File: BasicCalendarPaneUI.java    From microba with BSD 3-Clause "New" or "Revised" License 5 votes vote down vote up
public void focusLost(FocusEvent e) {
	boolean isFocusableComponent = focusableComponents.contains(e
			.getSource());
	boolean isNonEmptyOpposite = e.getOppositeComponent() != null;
	if (isFocusableComponent
			&& isNonEmptyOpposite
			&& !SwingUtilities.isDescendingFrom(e
					.getOppositeComponent(), peer)) {
		peer.commitOrRevert();
	}
}
 
Example 16
Source File: AbstractComponentVisibility.java    From pumpernickel with MIT License 5 votes vote down vote up
public static boolean isInsideActiveWindow(Component comp) {
	Window activeWindow = KeyboardFocusManager
			.getCurrentKeyboardFocusManager().getActiveWindow();
	if (activeWindow == null)
		return false;
	return activeWindow == comp
			|| SwingUtilities.isDescendingFrom(comp, activeWindow);
}
 
Example 17
Source File: WandoraBackgroundPaint.java    From wandora with GNU General Public License v3.0 5 votes vote down vote up
public void paint( BackgroundComponent background, PaintableComponent paintable, Graphics g ){
    if( SwingUtilities.isDescendingFrom( background.getComponent(), content )){
        /* If we are painting an non-transparent component we paint our custom background image, otherwise
         * we just let it shine through */
        if( paintable.getTransparency() == Transparency.SOLID ){
            Point point = new Point( 0, 0 );
            point = SwingUtilities.convertPoint( paintable.getComponent(), point, content );
            BufferedImage image = getImage();
            if( image != null ){
                int w = paintable.getComponent().getWidth();
                int h = paintable.getComponent().getHeight();
                g.drawImage( image, 0, 0, w, h, point.x, point.y, point.x + w, point.y + h, null );
            }
        }

        /* and now we paint the original content of the component */
        Graphics2D g2 = (Graphics2D)g.create();

        //g2.setComposite( alpha );

        paintable.paintBackground( g2 );
        paintable.paintForeground( g );
        paintable.paintBorder( g2 );

        g2.dispose();

        paintable.paintChildren( g );

    }
}
 
Example 18
Source File: FlatBorder.java    From FlatLaf with Apache License 2.0 5 votes vote down vote up
protected boolean isFocused( Component c ) {
	if( c instanceof JScrollPane ) {
		JViewport viewport = ((JScrollPane)c).getViewport();
		Component view = (viewport != null) ? viewport.getView() : null;
		if( view != null ) {
			if( FlatUIUtils.isPermanentFocusOwner( view ) )
				return true;

			if( (view instanceof JTable && ((JTable)view).isEditing()) ||
				(view instanceof JTree && ((JTree)view).isEditing()) )
			{
				Component focusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
				if( focusOwner != null )
					return SwingUtilities.isDescendingFrom( focusOwner, view );
			}
		}
		return false;
	} else if( c instanceof JComboBox && ((JComboBox<?>)c).isEditable() ) {
		Component editorComponent = ((JComboBox<?>)c).getEditor().getEditorComponent();
		return (editorComponent != null) ? FlatUIUtils.isPermanentFocusOwner( editorComponent ) : false;
	} else if( c instanceof JSpinner ) {
		if( FlatUIUtils.isPermanentFocusOwner( c ) )
			return true;

		JComponent editor = ((JSpinner)c).getEditor();
		if( editor instanceof JSpinner.DefaultEditor ) {
			JTextField textField = ((JSpinner.DefaultEditor)editor).getTextField();
			if( textField != null )
				return FlatUIUtils.isPermanentFocusOwner( textField );
		}
		return false;
	} else
		return FlatUIUtils.isPermanentFocusOwner( c );
}
 
Example 19
Source File: Central.java    From netbeans with Apache License 2.0 4 votes vote down vote up
/** */
public void activateModeTopComponent(ModeImpl mode, TopComponent tc) {
    if(!getModeOpenedTopComponents(mode).contains(tc)) {
        return;
    }
    
    ModeImpl oldActiveMode = getActiveMode();
    //#45650 -some API users call the activation all over again all the time on one item.
    // improve performance for such cases.
    if (oldActiveMode != null && oldActiveMode.equals(mode)) {
        if (tc != null && tc.equals(model.getModeSelectedTopComponent(mode))) {
            // #82385, #139319 do repeat activation if focus is not
            // owned by tc to be activated
            Component fOwn = KeyboardFocusManager.getCurrentKeyboardFocusManager().
                    getFocusOwner();
            if (fOwn != null && SwingUtilities.isDescendingFrom(fOwn, tc)) {
                //#70173 - activation request came probably from a sliding
                //window in 'hover' mode, so let's hide it
                slideOutSlidingWindows( mode );
                return;
            }
        }
    }
    model.setActiveMode(mode);
    model.setModeSelectedTopComponent(mode, tc);
    
    if(isVisible()) {
        viewRequestor.scheduleRequest(new ViewRequest(mode, 
            View.CHANGE_TOPCOMPONENT_ACTIVATED, null, tc));

        //restore floating windows if iconified
        if( mode.getState() == Constants.MODE_STATE_SEPARATED ) {
            Frame frame = (Frame) SwingUtilities.getAncestorOfClass(Frame.class, tc);
            if( null != frame && frame != WindowManagerImpl.getInstance().getMainWindow()
                    && (frame.getExtendedState() & Frame.ICONIFIED) > 0 ) {
                frame.setExtendedState(frame.getExtendedState() - Frame.ICONIFIED );
            }
        }
    }
    
    // Notify registry.
    WindowManagerImpl.notifyRegistryTopComponentActivated(tc);
    
    if(oldActiveMode != mode) {
        WindowManagerImpl.getInstance().doFirePropertyChange(
            WindowManagerImpl.PROP_ACTIVE_MODE, oldActiveMode, mode);
    }
}
 
Example 20
Source File: BasicOutlookBarUI.java    From CodenameOne with GNU General Public License v2.0 4 votes vote down vote up
public void layoutContainer(Container parent) {
  int selectedIndex = tabPane.getSelectedIndex();
  Component visibleComponent = getVisibleComponent();
  
  if (selectedIndex < 0) {
    if (visibleComponent != null) {
      // The last tab was removed, so remove the component
      setVisibleComponent(null);
    }
  } else {
    Component selectedComponent = tabPane.getComponentAt(selectedIndex);
    boolean shouldChangeFocus = false;

    // In order to allow programs to use a single component
    // as the display for multiple tabs, we will not change
    // the visible compnent if the currently selected tab
    // has a null component. This is a bit dicey, as we don't
    // explicitly state we support this in the spec, but since
    // programs are now depending on this, we're making it work.
    //
    if (selectedComponent != null) {
      if (selectedComponent != visibleComponent && visibleComponent != null) {
        // get the current focus owner
        Component currentFocusOwner = KeyboardFocusManager
          .getCurrentKeyboardFocusManager().getFocusOwner();
        // check if currentFocusOwner is a descendant of visibleComponent
        if (currentFocusOwner != null
          && SwingUtilities.isDescendingFrom(currentFocusOwner,
            visibleComponent)) {
          shouldChangeFocus = true;
        }
      }
      setVisibleComponent(selectedComponent);

      // make sure only the selected component is visible
      Component[] components = parent.getComponents();
      for (int i = 0; i < components.length; i++) {
        if (!(components[i] instanceof UIResource)
          && components[i].isVisible()
          && components[i] != selectedComponent) {
          components[i].setVisible(false);
          setConstraint(components[i], "*");
        }
      }
      
      if (BasicOutlookBarUI.this.nextVisibleComponent != null) {
        BasicOutlookBarUI.this.nextVisibleComponent.setVisible(true);
      }
    }

    super.layoutContainer(parent);

    if (shouldChangeFocus) {
      if (!requestFocusForVisibleComponent0()) {
        tabPane.requestFocus();
      }
    }
  }
}