Example usage for com.jgoodies.forms.layout CellConstraints xyw

List of usage examples for com.jgoodies.forms.layout CellConstraints xyw

Introduction

In this page you can find the example usage for com.jgoodies.forms.layout CellConstraints xyw.

Prototype

public CellConstraints xyw(int col, int row, int colSpan) 

Source Link

Document

Sets the column, row, width, and height; uses a height (row span) of 1 and the horizontal and vertical default alignments.

Examples:

 cc.xyw(1, 3, 7); cc.xyw(1, 3, 2); 

Usage

From source file:net.pms.medialibrary.gui.dialogs.ConditionsViewer.java

License:Open Source License

public ConditionsViewer(DOFilter filter, String folderName, Dialog owner) {
    super(owner, true);
    setTitle(String.format(Messages.getString("ML.ConditionsViewer.Title"), folderName));
    setResizable(false);//from w  w  w  . j  ava2s.c o m

    PanelBuilder builder;
    CellConstraints cc = new CellConstraints();

    FormLayout layout = new FormLayout("5px, r:p, 20px, p, 20px, p, 20px, p, 5px", // columns
            "10px, p, p, p, p, p, p, p, p, p, p, " + "p, p, p, p, p, p, p, p, p, p, "
                    + "p, p, p, p, p, p, p, p, p, p, " + "p, p, p, p, p, p, p, p, p, p, 5px, p, 2px, p, p"); // rows
    builder = new PanelBuilder(layout);
    builder.setOpaque(true);

    //add conditions
    int i = 2;
    for (DOCondition c : filter.getConditions()) {
        String coString;
        if (c.getType() == ConditionType.FILE_CONTAINS_TAG) {
            //add the tag name if required
            coString = String.format("'%s' %s", c.getTagName(),
                    Messages.getString("ML.Condition.Operator.Contains." + c.getOperator().toString()));
        } else if (c.getType().toString().contains("_CONTAINS_")) {
            //do a certain mapping for some condition types
            coString = Messages.getString("ML.Condition.Operator.Contains." + c.getOperator().toString());
        } else {
            //normal behavior
            coString = Messages.getString("ML.Condition.Operator." + c.getOperator().toString());
        }

        builder.addLabel(c.getName(), cc.xy(2, i));
        builder.addLabel(FolderHelper.getHelper().getConditionTypeCBItem(c.getType()).getDisplayName(),
                cc.xy(4, i));
        builder.addLabel(coString, cc.xy(6, i));
        String cStr = c.getCondition();
        if (c.getUnit() != ConditionUnit.UNKNOWN) {
            cStr += " " + FolderHelper.getHelper().getConditionUnitCBItem(c.getUnit()).getDisplayName();
        }
        builder.addLabel(cStr, cc.xy(8, i));
        i++;
    }

    //add equation
    JTextField tfEq = new JTextField(filter.getEquation());
    tfEq.setEditable(false);
    builder.add(tfEq, cc.xyw(2, 43, 7));

    //add button
    JButton bOk = new JButton(Messages.getString("ML.ConditionsViewer.bOk"));
    if (bOk.getPreferredSize().width < 60)
        bOk.setPreferredSize(new Dimension(60, bOk.getPreferredSize().height));
    bOk.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            dispose();
        }
    });

    builder.addSeparator("", cc.xyw(1, 45, 9));
    builder.add(bOk, cc.xyw(1, 46, 9, CellConstraints.CENTER, CellConstraints.FILL));

    getContentPane().add(builder.getPanel());
    pack();
}

From source file:net.pms.medialibrary.gui.dialogs.fileeditdialog.FileEditDialog.java

License:Open Source License

/**
 * Initializes the UI components and builds the panel
 *//*from w w  w.  j ava 2s.  c  o m*/
private void build() {
    init();

    //build the panel
    PanelBuilder builder;
    CellConstraints cc = new CellConstraints();

    FormLayout layout = new FormLayout("3px, d, 3px, d, fill:10:grow, d, 30px, d, 3px, d, 3px", // columns
            "3px, fill:10:grow, 3px, p, 3px"); // rows
    builder = new PanelBuilder(layout);
    builder.setOpaque(true);

    builder.add(tpFileEdit, cc.xyw(2, 2, 9));

    if (editMode == EditMode.Linked) {
        builder.add(bPrevious, cc.xy(2, 4));
        builder.add(bNext, cc.xy(4, 4));
        builder.add(bImportWithPlugin, cc.xy(6, 4));
    } else if (editMode == EditMode.Single) {
        builder.add(bImportWithPlugin, cc.xy(6, 4));
    }

    builder.add(bOk, cc.xy(8, 4));
    builder.add(bCancel, cc.xy(10, 4));

    getContentPane().add(builder.getPanel());

    refreshButtonStates();
}

From source file:net.pms.medialibrary.gui.dialogs.fileeditdialog.panels.VideoFileInfoPanel.java

License:Open Source License

@Override
public void build() {
    setLayout(new GridLayout());

    PanelBuilder builder;/*  w w w . j a v  a 2  s  . c  o  m*/
    CellConstraints cc = new CellConstraints();

    FormLayout layout = new FormLayout("3px, d, 5px, fill:20:grow, 3px", // columns
            "5px, d, 5px, fill:20:grow, 3px"); // rows
    builder = new PanelBuilder(layout);
    builder.setOpaque(true);

    //Add title
    JLabel lTitle = new JLabel(fileInfo.getName());
    lTitle.setFont(lTitle.getFont().deriveFont(lTitle.getFont().getStyle(), lTitle.getFont().getSize() + 3));
    builder.add(lTitle, cc.xyw(2, 2, 3));

    // Add cover
    lCoverTransferHandler = new FileCoverTransferHandler();
    lCoverTransferHandler.addCoverChangedListeners(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            try {
                videoCoverImage = new ImageIcon(ImageIO.read(new File(lCoverTransferHandler.getCoverPath())));
                resizeCover();
            } catch (IOException e) {
                log.error("Failed to load cover from " + lCoverTransferHandler.getCoverPath(), e);
            }
        }
    });

    lCover = new JLabel();
    lCover.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    lCover.setTransferHandler(lCoverTransferHandler);
    lCover.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            if (e.getButton() == MouseEvent.BUTTON1) {
                //show full size image in modal dialog on left mouse click
                ImageViewer iv = new ImageViewer(videoCoverImage, fileInfo.getName());
                iv.setModal(true);
                iv.setLocation(GUIHelper.getCenterDialogOnParentLocation(iv.getSize(), lCover));
                iv.setVisible(true);
            } else if (e.getButton() == MouseEvent.BUTTON3) {
                //TODO: show context menu on right mouse click
            }
        }
    });

    File imageFile = new File(fileInfo.getThumbnailPath());
    if (imageFile.isFile()) {
        //show the cover if it exists
        try {
            videoCoverImage = new ImageIcon(ImageIO.read(new File(imageFile.getAbsolutePath())));
            lCoverTransferHandler.setCoverPath(imageFile.getAbsolutePath());
        } catch (IOException e) {
            log.error("Failed to load cover from " + imageFile.getAbsolutePath(), e);
        }
    }
    addComponentListener(new ComponentAdapter() {

        @Override
        public void componentShown(ComponentEvent arg0) {
            resizeCover(lCover.getHeight());
        }

        @Override
        public void componentResized(ComponentEvent e) {
            resizeCover(lCover.getHeight());
        }
    });
    builder.add(lCover, cc.xy(2, 4));

    //Add informations
    builder.add(getInformationsPanel(fileInfo), cc.xy(4, 4));

    add(builder.getPanel());

    resizeCover();
}

From source file:net.pms.medialibrary.gui.dialogs.fileeditdialog.panels.VideoFileInfoPanel.java

License:Open Source License

private Component getInformationsPanel(DOVideoFileInfo fileInfo) {
    PanelBuilder builder;/*from w  w w .  ja  v  a 2s.c  o  m*/
    CellConstraints cc = new CellConstraints();

    FormLayout layout = new FormLayout("3px, r:p, 7px, p, 40px, r:p, 7px, fill:p:grow, 3px", // columns
            "3px, p, 3px, p, 3px, p, 3px, p, 3px, p, 15px, p, 3px, p, 3px, p, 3px, p, 3px, p, 7px, p, 3px, p, 3px"); // rows
    builder = new PanelBuilder(layout);
    builder.setOpaque(true);

    //add file properties
    JComponent cmp = builder.addSeparator(Messages.getString("ML.VideoFileInfoPanel.lFileProperties"),
            cc.xyw(2, 2, 7));
    cmp = (JComponent) cmp.getComponent(0);
    cmp.setFont(cmp.getFont().deriveFont(Font.BOLD));

    builder.add(new JHeader(Messages.getString("ML.Condition.Type.FILE_SIZEBYTE") + ":"), cc.xy(2, 4));
    builder.addLabel(
            (fileInfo.getSize() / (1024 * 1024)) + Messages.getString("ML.Condition.Unit.FILESIZE_MEGABYTE"),
            cc.xy(4, 4));

    builder.add(new JHeader(ConditionType.FILE_DATEINSERTEDDB), cc.xy(6, 4));
    builder.addLabel(new SimpleDateFormat().format(fileInfo.getDateInsertedDb()), cc.xy(8, 4));

    builder.add(new JHeader(ConditionType.FILEPLAYS_DATEPLAYEND), cc.xy(2, 6));
    builder.addLabel(fileInfo.getPlayHistory().size() > 0
            ? new SimpleDateFormat().format(fileInfo.getPlayHistory().get(0))
            : Messages.getString("ML.Condition.NeverPlayed"), cc.xy(4, 6));

    builder.add(new JHeader(ConditionType.FILE_DATELASTUPDATEDDB), cc.xy(6, 6));
    builder.addLabel(new SimpleDateFormat().format(fileInfo.getDateLastUpdatedDb()), cc.xy(8, 6));

    builder.add(new JHeader(ConditionType.FILE_PLAYCOUNT), cc.xy(2, 8));
    builder.addLabel(String.valueOf(fileInfo.getPlayCount()), cc.xy(4, 8));

    builder.add(new JHeader(Messages.getString("ML.VideoFileInfoPanel.lFilePath")), cc.xy(2, 10));
    builder.addLabel(fileInfo.getFilePath(), cc.xyw(4, 10, 5));

    //add video properties      
    cmp = builder.addSeparator(Messages.getString("ML.VideoFileInfoPanel.lVideoProperties"), cc.xyw(2, 12, 7));
    cmp = (JComponent) cmp.getComponent(0);
    cmp.setFont(cmp.getFont().deriveFont(Font.BOLD));

    builder.add(new JHeader(ConditionType.VIDEO_DURATIONSEC), cc.xy(2, 14));
    builder.addLabel(DLNAHelper.formatSecToHHMMSS((int) fileInfo.getDurationSec()), cc.xy(4, 14));

    builder.add(new JHeader(Messages.getString("ML.VideoFileInfoPane.lResolution")), cc.xy(6, 14));
    builder.addLabel(String.format("%sx%s", fileInfo.getWidth(), fileInfo.getHeight()), cc.xy(8, 14));

    builder.add(new JHeader(ConditionType.VIDEO_CODECV), cc.xy(2, 16));
    builder.addLabel(fileInfo.getCodecV(), cc.xy(4, 16));

    builder.add(new JHeader(ConditionType.VIDEO_CONTAINER), cc.xy(6, 16));
    builder.addLabel(fileInfo.getContainer(), cc.xy(8, 16));

    builder.add(new JHeader(ConditionType.VIDEO_BITRATE), cc.xy(2, 18));
    builder.addLabel(String.valueOf(fileInfo.getBitrate() / 1024) + " kbit/s", cc.xy(4, 18));

    builder.add(new JHeader(ConditionType.VIDEO_MIMETYPE), cc.xy(6, 18));
    builder.addLabel(fileInfo.getMimeType(), cc.xy(8, 18));

    builder.add(new JHeader(ConditionType.VIDEO_FRAMERATE), cc.xy(2, 20));
    builder.addLabel(fileInfo.getFrameRate(), cc.xy(4, 20));

    builder.add(new JHeader(ConditionType.VIDEO_CONTAINS_VIDEOAUDIO), cc.xy(2, 22));
    builder.addLabel(fileInfo.getDisplayString("%audio_languages"), cc.xyw(4, 22, 5));

    builder.add(new JHeader(ConditionType.VIDEO_CONTAINS_SUBTITLES), cc.xy(2, 24));
    builder.addLabel(fileInfo.getDisplayString("%subtitle_languages"), cc.xyw(4, 24, 5));

    JScrollPane sp = new JScrollPane(builder.getPanel());
    sp.setBorder(BorderFactory.createEmptyBorder());

    return sp;
}

From source file:net.pms.medialibrary.gui.dialogs.fileeditdialog.panels.VideoFilePropertiesPanel.java

License:Open Source License

public void build() {
    //reset the sizes of all text fields to lay them out correctly when resizing
    //otherwise, scroll bars will show up if the dialog size is being reduced
    taOverview.setSize(new Dimension(10, 10));

    //build the panel
    PanelBuilder builder;//w  w  w . j  a v a 2  s  .com
    CellConstraints cc = new CellConstraints();

    FormLayout layout = new FormLayout(
            "5px, 20:grow, 10px, 20:grow, 10px, 20:grow, 10px, 20:grow, 10px, d, 5px", // columns
            "3px, d, 3px, d, 3px, d, 3px, d, 3px, d, 3px, d, 3px, d, 5px, d, 3px"); // rows
    builder = new PanelBuilder(layout);
    builder.setOpaque(true);

    //row 1
    builder.add(hName, cc.xyw(2, 2, 3));
    builder.add(hOriginalName, cc.xyw(6, 2, 3));
    builder.add(hYear, cc.xy(10, 2));

    //row 2
    builder.add(hSortName, cc.xyw(2, 4, 3));
    builder.add(hDirector, cc.xyw(6, 4, 3));
    builder.add(hImdbId, cc.xy(10, 4));

    //row 3
    builder.add(hHomePage, cc.xyw(2, 6, 3));
    builder.add(hTrailer, cc.xyw(6, 6, 3));
    builder.add(hTmdbId, cc.xy(10, 6));

    //row 4      
    builder.add(hRating, cc.xy(2, 8));
    builder.add(hRatingVoters, cc.xy(4, 8));
    builder.add(hCertificationReason, cc.xyw(6, 8, 3));
    builder.add(hCertification, cc.xy(10, 8));

    //row 5
    builder.add(hTagLine, cc.xyw(2, 10, 7));
    builder.add(hBudget, cc.xy(10, 10));

    //row 6+7
    JPanel pOverviewHeader = new JPanel(new GridLayout());
    pOverviewHeader.setAlignmentY(LEFT_ALIGNMENT);
    pOverviewHeader.add(hOverview);

    JScrollPane spOverview = new JScrollPane(taOverview);
    spOverview.setBorder(new JTextField().getBorder());

    JPanel pOverview = new JPanel(new BorderLayout(0, 1));
    pOverview.add(pOverviewHeader, BorderLayout.NORTH);
    pOverview.add(spOverview, BorderLayout.CENTER);

    builder.add(pOverview, cc.xywh(2, 12, 7, 3));

    builder.add(hRevenue, cc.xy(10, 12));
    builder.add(cbActive, cc.xy(10, 14));

    //row 8
    builder.add(pGenres, cc.xyw(2, 16, 9));

    JPanel p = builder.getPanel();
    JScrollPane sp = new JScrollPane(p);
    sp.setBorder(BorderFactory.createEmptyBorder());

    removeAll();
    add(sp);
}

From source file:net.pms.medialibrary.gui.dialogs.FileEntryPluginDialog.java

License:Open Source License

private void refreshDialog() {
    FormLayout layout = new FormLayout("3px, p, 3px, p:grow , 3px",
            "3px, p, 3px, p, 3px, fill:p:grow, 3px, p, 3px, p, 3px");
    PanelBuilder builder = new PanelBuilder(layout);
    builder.setOpaque(true);/*from   ww w  .java 2s  .  co m*/

    CellConstraints cc = new CellConstraints();

    builder.addLabel(Messages.getString("ML.SpecialFolderDialog.lName"), cc.xy(2, 2));
    builder.add(tfName, cc.xy(4, 2));
    builder.addSeparator("", cc.xyw(2, 4, 3));

    builder.add(getPluginEntry().getPlugin().getConfigurationPanel(), cc.xyw(2, 6, 3));
    builder.addSeparator("", cc.xyw(2, 8, 3));
    builder.add(pButtons, cc.xyw(2, 10, 3));

    getContentPane().removeAll();
    getContentPane().add(builder.getPanel());
    validate();
}

From source file:net.pms.medialibrary.gui.dialogs.FileUpdateWithPluginDialog.java

License:Open Source License

private void build() {
    FormLayout layout = new FormLayout("5px, r:p, 5px, p, 5px, f:p:g, 5px",
            "5px, p, 5px, p, 5px, p, 5px, p, 5px, f:80:g, 5px, p, 5px");
    PanelBuilder builder = new PanelBuilder(layout);
    builder.setOpaque(true);//from w  ww.  j  a v  a 2 s . c o  m

    CellConstraints cc = new CellConstraints();

    builder.addLabel(Messages.getString("ML.FileUpdateWithPluginDialog.lImportBy"), cc.xy(2, 2));
    builder.add(rbName, cc.xy(4, 2));
    builder.add(rbId, cc.xy(6, 2));

    builder.addLabel(Messages.getString("ML.FileUpdateWithPluginDialog.lPlugin"), cc.xy(2, 4));
    builder.add(cbPlugins, cc.xyw(4, 4, 3));

    builder.add(lValueHeader, cc.xy(2, 6));
    builder.add(tfValue, cc.xyw(4, 6, 3));

    builder.addLabel(Messages.getString("ML.FileUpdateWithPluginDialog.lResults"),
            cc.xyw(2, 8, 5, CellConstraints.LEFT, CellConstraints.DEFAULT));

    JPanel pResults = new JPanel(new BorderLayout());
    pResults.setBorder(BorderFactory.createLineBorder(Color.lightGray));
    JPanel pResultsFiller = new JPanel();
    pResultsFiller.setBackground(lResults.getBackground());
    pResults.add(lResults, BorderLayout.NORTH);
    pResults.add(pResultsFiller, BorderLayout.CENTER);
    JScrollPane spResults = new JScrollPane(pResults);
    spResults.setBorder(BorderFactory.createEmptyBorder());
    builder.add(spResults, cc.xyw(2, 10, 5));

    builder.add(pButtons, cc.xyw(2, 12, 5));

    add(builder.getPanel());
}

From source file:net.pms.medialibrary.gui.dialogs.folderdialog.FolderDialog.java

License:Open Source License

private void rebuildPanel() {
    PanelBuilder builder;/*  w  w  w.ja v  a2 s .  co  m*/
    CellConstraints cc = new CellConstraints();

    FormLayout layout = new FormLayout("3px, p, 3px, p, p:grow, p, 3px, p, 3px, p, 3px", // columns
            "10px, p, 10px, fill:p:grow, p, 3px"); // raws
    builder = new PanelBuilder(layout);
    builder.setOpaque(true);

    //Name & Filter Type
    builder.add(lName, cc.xy(2, 2));
    builder.add(tfName, cc.xy(4, 2));
    builder.add(lFolderType, cc.xy(6, 2));
    builder.add(cbFileType, cc.xy(8, 2));
    builder.addSeparator("", cc.xyw(2, 3, 9));
    builder.add(tabs, cc.xyw(2, 4, 9));

    builder.add(pButtons, cc.xyw(2, 5, 9));

    getContentPane().removeAll();
    getContentPane().add(builder.getPanel());
}

From source file:net.pms.medialibrary.gui.dialogs.PluginFolderDialog.java

License:Open Source License

private void refreshDialog() {
    FormLayout layout = new FormLayout("3px, p, 3px, p:grow , 3px",
            "3px, p, 3px, p, 3px, fill:p:grow, 3px, p, 3px, p, 3px");
    PanelBuilder builder = new PanelBuilder(layout);
    builder.setOpaque(true);//from   w w  w  .  j  av  a 2s .  c  o  m

    CellConstraints cc = new CellConstraints();

    builder.addLabel(Messages.getString("ML.SpecialFolderDialog.lName"), cc.xy(2, 2));
    builder.add(tfName, cc.xy(4, 2));
    builder.addSeparator("", cc.xyw(2, 4, 3));

    builder.add(getSpecialFolder().getSpecialFolderImplementation().getInstanceConfigurationPanel(),
            cc.xyw(2, 6, 3));
    builder.addSeparator("", cc.xyw(2, 8, 3));
    builder.add(pButtons, cc.xyw(2, 10, 3));

    getContentPane().removeAll();
    getContentPane().add(builder.getPanel());
    validate();
}

From source file:net.pms.medialibrary.gui.dialogs.ScanFolderDialog.java

License:Open Source License

private void build(String folderPath) {
    FormLayout layout = new FormLayout("5px, p, 5px, fill:p:grow, 5px, p, 5px, p, 5px",
            "p, 2px,  p, 5px,  p, 2px,  p");
    PanelBuilder builder = new PanelBuilder(layout);
    builder.setOpaque(true);/*from  w  ww.  j a v a  2  s  .c om*/

    CellConstraints cc = new CellConstraints();

    // line 1
    builder.addLabel(Messages.getString("ML.ScanFolderDialog.lFolderPath"),
            cc.xy(2, 1, CellConstraints.RIGHT, CellConstraints.DEFAULT));
    tfFolderPath = new JTextField(folderPath);
    tfFolderPath.setMinimumSize(new Dimension(300, tfFolderPath.getPreferredSize().height));
    builder.add(tfFolderPath, cc.xy(4, 1));
    bBrowseFolderPath = new JButton(Messages.getString("ML.ScanFolderDialog.bBrowse"));
    bBrowseFolderPath.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            JFileChooser fc = new JFileChooser(bBrowseFolderPath.getText());
            fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

            if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
                tfFolderPath.setText(fc.getSelectedFile().getAbsolutePath());
            }
        }

    });
    builder.add(bBrowseFolderPath, cc.xy(6, 1));
    cbScanSubFolders = new JCheckBox(Messages.getString("ML.ScanFolderDialog.cbScanSubFolders"));
    cbScanSubFolders.setSelected(true);
    builder.add(cbScanSubFolders, cc.xy(8, 1));

    // line 2
    builder.addLabel(Messages.getString("ML.ScanFolderDialog.lLookFor"),
            cc.xy(2, 3, CellConstraints.RIGHT, CellConstraints.DEFAULT));

    JPanel pFileTypes = new JPanel(new FlowLayout());
    cbScanVideo = new JCheckBox(Messages.getString("ML.ScanFolderDialog.cbScanVideo"), true);
    pFileTypes.add(cbScanVideo);

    cbScanAudio = new JCheckBox(Messages.getString("ML.ScanFolderDialog.cbScanAudio"), true);
    pFileTypes.add(cbScanAudio);

    cbScanPictures = new JCheckBox(Messages.getString("ML.ScanFolderDialog.cbScanPictures"), true);
    pFileTypes.add(cbScanPictures);

    builder.add(pFileTypes, cc.xy(4, 3, CellConstraints.LEFT, CellConstraints.DEFAULT));

    cbUseFileImportPlugins = new JCheckBox(Messages.getString("ML.ScanFolderDialog.cbUsePlugins"));
    cbUseFileImportPlugins.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            if (cbUseFileImportPlugins.isSelected()) {
                pFileImport.setVisible(true);
            } else {
                pFileImport.setVisible(false);
            }
            pack();
        }
    });
    builder.add(cbUseFileImportPlugins, cc.xy(8, 3, CellConstraints.LEFT, CellConstraints.DEFAULT));

    // file import
    pFileImport = new FileImportTemplatePanel(1);
    pFileImport.setVisible(false);
    pFileImport.addRepaintListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            pack();
        }
    });
    builder.add(pFileImport, cc.xyw(2, 5, 7));

    // buttons
    bImport = new JButton(Messages.getString("ML.ScanFolderDialog.bImport"));
    if (bImport.getPreferredSize().width < MIN_BUTTON_WIDTH)
        bImport.setPreferredSize(new Dimension(MIN_BUTTON_WIDTH, bImport.getPreferredSize().height));
    bImport.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            save();

            File selectedFolder = new File(tfFolderPath.getText());
            if (selectedFolder.isDirectory()) {
                setDoImport(true);
                instance.setVisible(false);
            } else {
                JOptionPane.showMessageDialog(null, Messages.getString("ML.ScanFolderDialog.InvalidPathMsg"),
                        Messages.getString("ML.ScanFolderDialog.InvalidPathTitle"),
                        JOptionPane.INFORMATION_MESSAGE);
            }
        }
    });
    bCancel = new JButton(Messages.getString("ML.ScanFolderDialog.bCancel"));
    if (bCancel.getPreferredSize().width < MIN_BUTTON_WIDTH)
        bCancel.setPreferredSize(new Dimension(MIN_BUTTON_WIDTH, bCancel.getPreferredSize().height));
    bCancel.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            setDoImport(false);
            instance.setVisible(false);
        }
    });
    bSave = new JButton(Messages.getString("ML.ScanFolderDialog.bSave"));
    if (bSave.getPreferredSize().width < MIN_BUTTON_WIDTH)
        bSave.setPreferredSize(new Dimension(MIN_BUTTON_WIDTH, bSave.getPreferredSize().height));
    bSave.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            save();
        }
    });

    JPanel bPanel = new JPanel();
    bPanel.setAlignmentX(CENTER_ALIGNMENT);
    bPanel.add(bImport);
    bPanel.add(bSave);
    bPanel.add(bCancel);
    builder.add(bPanel, cc.xyw(2, 7, 7));

    getContentPane().add(builder.getPanel());
    pack();
}