All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.anwiba.commons.swing.filechooser.FileChooserDialog Maven / Gradle / Ivy

/*
 * #%L
 * anwiba commons swing
 * %%
 * Copyright (C) 2007 - 2016 Andreas Bartels
 * %%
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation, either version 2.1 of the
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Lesser Public License for more details.
 * 
 * You should have received a copy of the GNU General Lesser Public
 * License along with this program.  If not, see
 * .
 * #L%
 */
package net.anwiba.commons.swing.filechooser;

import net.anwiba.commons.swing.preference.IWindowPreferences;
import net.anwiba.commons.swing.preference.WindowPrefereneceUpdatingListener;
import net.anwiba.commons.swing.utilities.ContainerUtilities;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dialog;
import java.awt.Frame;
import java.awt.HeadlessException;
import java.awt.Window;

import javax.accessibility.AccessibleContext;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JRootPane;
import javax.swing.UIManager;

public final class FileChooserDialog extends JFileChooser {

  private static final long serialVersionUID = 1L;
  private final IWindowPreferences windowPreferences;

  public FileChooserDialog(final IWindowPreferences windowPreferences) {
    this.windowPreferences = windowPreferences;
  }

  @Override
  protected JDialog createDialog(final Component parent) throws HeadlessException {
    final String title = getUI().getDialogTitle(this);
    putClientProperty(AccessibleContext.ACCESSIBLE_DESCRIPTION_PROPERTY, title);
    final JDialog dialog;
    final Window window = ContainerUtilities.getParentWindow(parent);
    if (window instanceof Frame) {
      dialog = new JDialog((Frame) window, title, true);
    } else {
      dialog = new JDialog((Dialog) window, title, true);
    }
    dialog.setComponentOrientation(getComponentOrientation());
    final Container contentPane = dialog.getContentPane();
    contentPane.setLayout(new BorderLayout());
    contentPane.add(this, BorderLayout.CENTER);
    if (JDialog.isDefaultLookAndFeelDecorated()) {
      final boolean supportsWindowDecorations = UIManager.getLookAndFeel().getSupportsWindowDecorations();
      if (supportsWindowDecorations) {
        dialog.getRootPane().setWindowDecorationStyle(JRootPane.FILE_CHOOSER_DIALOG);
      }
    }
    final WindowPrefereneceUpdatingListener updater =
        new WindowPrefereneceUpdatingListener(dialog, this.windowPreferences);
    if (this.windowPreferences.getBounds() == null) {
      dialog.pack();
      dialog.setLocationRelativeTo(parent);
      dialog.addComponentListener(updater);
      dialog.addWindowListener(updater);
      return dialog;
    }
    dialog.setBounds(this.windowPreferences.getBounds());
    dialog.addComponentListener(updater);
    dialog.addWindowListener(updater);
    return dialog;
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy