@Override public void hideComponents(boolean hide) { this.hideComponents = hide; if (componentsInHiearchy == null) return; for (Renderable r : componentsInHiearchy) { Node node = (Node) r; node.setIsVisible(!hide); if (r instanceof RenderableComplex) { ((RenderableComplex) r).hideComponents = hide; } } // The following statements are related to bounds. if (bounds == null) return; if (hide) { saveOldBounds(); copyBoundsToComponents(); } else { recoverOldBounds(); // Make sure a complex container has enough size Renderable container = this.container; Rectangle childBounds = this.bounds; while (container instanceof RenderableComplex) { Rectangle cBounds = container.getBounds(); if (!cBounds.contains(childBounds)) { ((RenderableComplex) container).layout(); } childBounds = container.getBounds(); container = container.getContainer(); } } }
/** Override the super class method to handle components if they have been hidden. */ @Override public void move(int dx, int dy) { super.move(dx, dy); if (hideComponents && isResizing()) { // Want to make all components to have the same sizing as the current components copyBoundsToComponents(); } }
@Override protected void initBounds(Graphics g) { super.initBounds(g); ensureTextInBounds(false); if (hideComponents) copyBoundsToComponents(); }