//***************************************************************************** // Copyright (c) 1998 INRIA. // http://www.inria.fr/croap/aioli/modules/figue/web/credits.html#COPYRIGHT //***************************************************************************** package figue.bug; import java.applet.Applet; import java.awt.Scrollbar; import java.awt.Container; import java.awt.Dimension; import java.awt.Canvas; import java.awt.Graphics; import java.awt.BorderLayout; import java.awt.Button; public final class Bug2 extends Applet { /** * For code identification with unix what command. * @level internal */ public final static String VERSION_ID = "@(#) $Source: /net/croap/CVSROOT/figue/java/bug/Bug2.java,v $ $revision$ $Date: 1998/11/02 15:54:45 $ Copyright 1998 INRIA."; public void init() { setLayout(new BorderLayout()); add(BorderLayout.NORTH,new Button("Pas Glop Pas Glop")); add(BorderLayout.CENTER,new Gizmo()); validate(); } final class Gizmo extends Container { public Gizmo() { super(); _layedOutFlag = false; _cross = new Cross(); _scrollbar = new Scrollbar(Scrollbar.VERTICAL,0,1,0,1); setLayout(null); add(_cross); add(_scrollbar); setVisible(true); } public void setBounds(int x, int y, int width, int height) { super.setBounds(x,y,width,height); computeLayout(); } public void setBounds(java.awt.Rectangle r) { super.setBounds(r); computeLayout(); } public void setSize(java.awt.Dimension d) { super.setSize(d); computeLayout(); } public void setSize(int width,int height) { super.setSize(width,height); computeLayout(); } public void update(Graphics g) { if ( ! _layedOutFlag ) { computeLayout(); } super.update(g); } private void computeLayout() { final Dimension theAvailableSize = getSize(); _scrollbar.setBounds(theAvailableSize.width - WIDTH, 0, WIDTH, theAvailableSize.height); _cross.setBounds(0, 0, theAvailableSize.width - WIDTH, theAvailableSize.height); _layedOutFlag = true; } public Dimension getPreferredSize() { return getMinimumSize(); } public Dimension getMinimumSize() { return new Dimension(50,50); } private boolean _layedOutFlag; private Scrollbar _scrollbar; private Cross _cross; private final int WIDTH = 13; } final class Cross extends Canvas { public Cross() { super(); } public void paint(Graphics g) { update(g); } public void update(Graphics g) { final Dimension theSize = getSize(); g.drawLine(0,0,theSize.width,theSize.height); g.drawLine(theSize.width,0,0,theSize.height); } } }