Package com.mucommander.ui.dialog.bookmark

Source Code of com.mucommander.ui.dialog.bookmark.AddBookmarkDialog

/*
* This file is part of muCommander, http://www.mucommander.com
* Copyright (C) 2002-2012 Maxence Bernard
*
* muCommander is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* muCommander 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 Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

package com.mucommander.ui.dialog.bookmark;

import com.mucommander.bookmark.Bookmark;
import com.mucommander.bookmark.BookmarkManager;
import com.mucommander.commons.file.AbstractFile;
import com.mucommander.text.Translator;
import com.mucommander.ui.action.ActionProperties;
import com.mucommander.ui.action.impl.AddBookmarkAction;
import com.mucommander.ui.dialog.DialogToolkit;
import com.mucommander.ui.dialog.FocusDialog;
import com.mucommander.ui.layout.XAlignedComponentPanel;
import com.mucommander.ui.layout.YBoxPanel;
import com.mucommander.ui.main.MainFrame;

import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


/**
* This dialog allows the user to add a bookmark and enter a name for it. User can also
* choose to store login and password information in the bookmark's URL if the bookmark
* contains login/password information.
*
* @author Maxence Bernard
*/
public class AddBookmarkDialog extends FocusDialog implements ActionListener, DocumentListener {

    private JTextField nameField;
    private JTextField locationField;

    private JButton addButton;
    private JButton cancelButton;

    // Dialog's width has to be at least 320
    private final static Dimension MINIMUM_DIALOG_DIMENSION = new Dimension(320,0)

    // Dialog's width has to be at most 400
    private final static Dimension MAXIMUM_DIALOG_DIMENSION = new Dimension(400,10000)


    public AddBookmarkDialog(MainFrame mainFrame) {
        super(mainFrame, ActionProperties.getActionLabel(AddBookmarkAction.Descriptor.ACTION_ID), mainFrame);

        Container contentPane = getContentPane();
        YBoxPanel mainPanel = new YBoxPanel(5);

        AbstractFile currentFolder = mainFrame.getActivePanel().getCurrentFolder();

        // Text fields panel
        XAlignedComponentPanel compPanel = new XAlignedComponentPanel();

        // Add name field, editable
        this.nameField = new JTextField(currentFolder.getName());
        nameField.setEditable(true);
        // Monitors text changes to disable 'Add' button if name field is empty
        nameField.getDocument().addDocumentListener(this);
        compPanel.addRow(Translator.get("name")+":", nameField, 10);
   
        // Add URL field, non editable
        this.locationField = new JTextField(currentFolder.getCanonicalPath());
        compPanel.addRow(Translator.get("location")+":", locationField, 10);

        mainPanel.add(compPanel);

        contentPane.add(mainPanel, BorderLayout.NORTH);
       
        addButton = new JButton(Translator.get("add_bookmark_dialog.add"));
        cancelButton = new JButton(Translator.get("cancel"));
        contentPane.add(DialogToolkit.createOKCancelPanel(addButton, cancelButton, getRootPane(), this), BorderLayout.SOUTH);

        // Select text in name field and transfer focus to it for immediate user change
        nameField.selectAll();
        setInitialFocusComponent(nameField);

        // Packs dialog
        setMinimumSize(MINIMUM_DIALOG_DIMENSION);
        setMaximumSize(MAXIMUM_DIALOG_DIMENSION);
 
        showDialog();
    }

 
    /**
     * Checks if bookmark name is empty (or white space), and enable/disable 'Add' button
     * accordingly, in order to prevent user from adding a bookmark with an empty name.
     */
    private void checkEmptyName() {
        if(nameField.getText().trim().equals("")) {
            if(addButton.isEnabled())
                addButton.setEnabled(false);
        }
        else {
            if(!addButton.isEnabled())
                addButton.setEnabled(true);
        }
    }
 
 
    ///////////////////////////
    // ActionListener method //
    ///////////////////////////
 
    public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();
   
        if (source==addButton)  {
            // Starts by disposing the dialog
            dispose();

            // Add bookmark and write bookmarks file to disk
            BookmarkManager.addBookmark(new Bookmark(nameField.getText(), locationField.getText()));
            try {BookmarkManager.writeBookmarks(false);}
            // We should probably pop an error dialog here.
            catch(Exception e2) {}
        }
        else if (source==cancelButton)  {
            dispose();     
        }
    }


    //////////////////////////////
    // DocumentListener methods //
    //////////////////////////////
 
    public void changedUpdate(DocumentEvent e) {
        checkEmptyName();
    }
 
 
    public void insertUpdate(DocumentEvent e) {
        checkEmptyName();
    }
 
 
    public void removeUpdate(DocumentEvent e) {
        checkEmptyName();
    }
}
TOP

Related Classes of com.mucommander.ui.dialog.bookmark.AddBookmarkDialog

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.