View Javadoc

1   package org.glassbox.gui;
2   
3   import org.glassbox.SwingFactory;
4   
5   import javax.swing.JComponent;
6   import java.awt.LayoutManager;
7   import java.awt.event.ComponentAdapter;
8   import java.awt.event.ComponentEvent;
9   
10  /***
11     A layer which lays out its components using a LayoutManager.
12   */
13  public class LayoutLayer implements LayeredGroup.Layer {
14      protected JComponent _view;
15      protected boolean _resize;
16  
17      protected LayoutLayer(String themeprefix, boolean resize) {
18  	this(null, themeprefix, resize);
19      }
20  
21      protected void setLayout(LayoutManager layout) {
22  	_view.setLayout(layout);
23      }
24  
25      public LayoutLayer(LayoutManager layout, String themeprefix) {
26  	this(layout, themeprefix, false);
27      }
28  
29      public LayoutLayer(LayoutManager layout, String themeprefix, boolean resize) {
30  	_view = SwingFactory.createPanel(themeprefix);
31  	_view.setLayout(layout);
32  	_view.setEnabled(false);
33  	_view.addComponentListener(new ResizeHandler());
34  	_resize = resize;
35      }
36  
37      public JComponent getView() {
38  	return _view;
39      }
40  
41      public void addVisible(Visible view, Object constraints) {
42  	_view.add(view.getView(), constraints);
43  	layout();
44      }
45  
46      public void addVisible(Visible view) {
47  	_view.add(view.getView());
48  	layout();
49      }
50  
51      public void removeVisible(Visible view) {
52  	_view.remove(view.getView());
53  	layout();
54      }
55  
56      public void layout() {
57  	_view.invalidate();
58  	if (_resize)
59  	    _view.setSize(_view.getLayout().preferredLayoutSize(_view));
60  	_view.doLayout();
61      }
62  
63      private class ResizeHandler extends ComponentAdapter {
64  	public void componentResized(ComponentEvent e) {
65  	    layout();
66  	}
67      }
68  }