// ********************************************************************** // // <copyright> // // BBN Technologies // 10 Moulton Street // Cambridge, MA 02138 // (617) 873-8000 // // Copyright (C) BBNT Solutions LLC. All rights reserved. // // </copyright> // ********************************************************************** // // $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/gui/DockMapPanel.java,v $ // $RCSfile: DockMapPanel.java,v $ // $Revision: 1.4 $ // $Date: 2004/10/14 18:05:48 $ // $Author: dietrick $ // // ********************************************************************** package com.bbn.openmap.gui; import java.awt.BorderLayout; import java.awt.Component; import java.awt.LayoutManager; import javax.swing.JComponent; import com.bbn.openmap.MapBean; import com.bbn.openmap.PropertyHandler; import com.bbn.openmap.gui.dock.BasicDockPanel; import com.bbn.openmap.gui.dock.DockConstraint; import com.bbn.openmap.gui.dock.DockPanel; /** * The DockMapPanel is a MapPanel that uses a DockPanel for its * layout. * <P> * Like BasicMapPanel, the Panel creates a MapBean for its center * area. It creates a MapHandler to use to hold all of its OpenMap * components, and uses the PropertyHandler given to it in its * constructor to create and configure all of the application * components. The best way to add components to the MapPanel is to * get the MapHandler from it and add the component to that. The * DockMapPanel also adds itself to its MapHandler */ public class DockMapPanel extends BasicMapPanel implements DockPanel { protected BasicDockPanel dockPanel; /** * Create a MapPanel that creates its own PropertyHandler, which * will then search the classpath, config directory and user home * directory for the openmap.properties file to configure * components for the MapPanel. */ public DockMapPanel() { this(false); } /** * Create a MapPanel with the option of delaying the search for * properties until the <code>create()</code> call is made. * * @param delayCreation true to let the MapPanel know that the * artful programmer will call <code>create()</code> */ public DockMapPanel(boolean delayCreation) { this(null, delayCreation); } /** * Create a MapPanel that configures itself with the properties * contained in the PropertyHandler provided. If the * PropertyHandler is null, a new one will be created. */ public DockMapPanel(PropertyHandler propertyHandler) { this(propertyHandler, false); } /** * Create a MapPanel that configures itself with properties * contained in the PropertyHandler provided, and with the option * of delaying the search for properties until the * <code>create()</code> call is made. * * @param delayCreation true to let the MapPanel know that the * artful programmer will call <code>create()</code> */ public DockMapPanel(PropertyHandler propertyHandler, boolean delayCreation) { super(propertyHandler, delayCreation); } //From BasicMapPanel: ///////////////////// protected final LayoutManager createLayoutManager() { return new BorderLayout(); } protected final void addMapBeanToPanel(MapBean map) { setBackgroundComponent(map); } protected void createComponents() { dockPanel = new BasicDockPanel(); super.add(dockPanel, BorderLayout.CENTER); super.createComponents(); } /** * Add a child to the MapPanel. */ protected void addMapPanelChild(MapPanelChild mpc) { //For now, just dock it somewhere... really we need to //determine constraints for it some how (maybe by asking it // for them? //mps.getPreferredLocation() //Debug.output("Adding MapPanelChild: " + mpc); dockPanel.add((JComponent) mpc); dockPanel.dockSomewhere((JComponent) mpc); } //From DockablePanel: ///////////////////// public JComponent getBackgroundComponent() { return dockPanel.getBackgroundComponent(); } public void setBackgroundComponent(JComponent back) { dockPanel.setBackgroundComponent(back); } public void setConstraint(JComponent child, DockConstraint c) { dockPanel.setConstraint(child, c); } public DockConstraint getConstraint(JComponent child) { return dockPanel.getConstraint(child); } public void removeConstraint(JComponent child) { dockPanel.removeConstraint(child); } public void setPreferredHeight(JComponent child, int i) { dockPanel.setPreferredHeight(child, i); } public void setPreferredWidth(JComponent child, int i) { dockPanel.setPreferredWidth(child, i); } public void setCanOcclude(JComponent child, boolean b) { dockPanel.setCanOcclude(child, b); } public void setCanTransparent(JComponent child, boolean b) { dockPanel.setCanTransparent(child, b); } public void setCanResize(JComponent child, boolean b) { dockPanel.setCanResize(child, b); } public void setCanTab(JComponent child, boolean b) { dockPanel.setCanTab(child, b); } public void setTabName(JComponent child, String tabName) { dockPanel.setTabName(child, tabName); } public void setCanExternalFrame(JComponent child, boolean b) { dockPanel.setCanExternalFrame(child, b); } public void setCanInternalFrame(JComponent child, boolean b) { dockPanel.setCanInternalFrame(child, b); } public void setCanClose(JComponent child, boolean b) { dockPanel.setCanClose(child, b); } public void setCanDockNorth(JComponent child, boolean b) { dockPanel.setCanDockNorth(child, b); } public void setCanDockSouth(JComponent child, boolean b) { dockPanel.setCanDockSouth(child, b); } public void setCanDockEast(JComponent child, boolean b) { dockPanel.setCanDockEast(child, b); } public void setCanDockWest(JComponent child, boolean b) { dockPanel.setCanDockWest(child, b); } public void dockNorth(JComponent child) { dockPanel.dockNorth(child); } public void dockNorth(JComponent child, int idx) { dockPanel.dockNorth(child, idx); } public void dockSouth(JComponent child) { dockPanel.dockSouth(child); } public void dockSouth(JComponent child, int idx) { dockPanel.dockSouth(child, idx); } public void dockEast(JComponent child) { dockPanel.dockEast(child); } public void dockEast(JComponent child, int idx) { dockPanel.dockEast(child, idx); } public void dockWest(JComponent child) { dockPanel.dockWest(child); } public void dockWest(JComponent child, int idx) { dockPanel.dockWest(child, idx); } public void dockSomewhere(JComponent child) { dockPanel.dockSomewhere(child); } public void dock(JComponent outter, JComponent inner) { dockPanel.dock(outter, inner); } public void dock(JComponent outter, JComponent inner, int idx) { dockPanel.dock(outter, inner, idx); } public void internalFrame(JComponent child) { dockPanel.internalFrame(child); } public void externalFrame(JComponent child) { dockPanel.externalFrame(child); } //Overwrite from Component: /////////////////////////// /** * We need to handle adding the component specially. */ public Component add(Component comp) { return dockPanel.add(comp); } /** * We need to handle adding the component specially. */ public void add(Component comp, Object constraints) { dockPanel.add(comp, constraints); } /** * We need to handle removing the component specially. */ public void remove(Component comp) { dockPanel.remove(comp); } /** * We need to handle removing all components specially. */ public void removeAll() { dockPanel.removeAll(); } }