package org.opentrafficsim.swing.gui; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.FlowLayout; import javax.swing.JFileChooser; import javax.swing.JPanel; /** * Small helper class that adds some components to a JFileChooser, the contents of which can be used to retrieve user settings * for output. *

* Copyright (c) 2013-2020 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
* BSD-style license. See OpenTrafficSim License. *

* @version $Revision$, $LastChangedDate$, by $Author$, initial version 14 okt. 2018
* @author Alexander Verbraeck * @author Peter Knoppers * @author Wouter Schakel */ public class JFileChooserWithSettings extends JFileChooser { /** */ private static final long serialVersionUID = 20181014L; /** * Constructor that adds components to the left of the 'Save' and 'Cancel' button. * @param components Component...; Components... components to add */ public JFileChooserWithSettings(final Component... components) { JPanel saveCancelPanel = (JPanel) ((JPanel) this.getComponent(3)).getComponent(3); // insert leftVsRight panel in original place of saveCancelPanel JPanel leftVsRightPanel = new JPanel(); leftVsRightPanel.setLayout(new FlowLayout(FlowLayout.RIGHT, 0, 0)); saveCancelPanel.getParent().add(leftVsRightPanel); // saveCancelPanel goes in there to the right leftVsRightPanel.add(saveCancelPanel); // to the left a panel that places it's contents to the south JPanel allignSouthPanel = new JPanel(); allignSouthPanel.setPreferredSize(new Dimension(300, 50)); leftVsRightPanel.add(allignSouthPanel, 0); // in that left area to the south, a panel for the setting components right to left JPanel settingsPanel = new JPanel(); allignSouthPanel.setLayout(new BorderLayout()); allignSouthPanel.add(settingsPanel, BorderLayout.SOUTH); settingsPanel.setLayout(new FlowLayout(FlowLayout.RIGHT)); // add components in that final panel int index = 0; for (Component component : components) { settingsPanel.add(component, index); index++; } } /** {@inheritDoc} */ @Override public String toString() { return "JFileChooserWithSettings []"; } }