Package com.mucommander.ui.dialog.customization

Source Code of com.mucommander.ui.dialog.customization.CustomizeDialog

/*
* 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.customization;

import com.mucommander.text.Translator;
import com.mucommander.ui.dialog.FocusDialog;
import com.mucommander.ui.layout.XBoxPanel;

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

/**
* Dialog which let users customize UI element.
*
* @author Arik Hadas.
*/
public abstract class CustomizeDialog extends FocusDialog implements ActionListener {
 
  public static final Dimension PREFERRED_SIZE = new Dimension(700, 500);
 
  /** Apply button. */
    private JButton     applyButton;
  /** OK button. */
    private JButton     okButton;
    /** Cancel button. */
    private JButton     cancelButton;

  public CustomizeDialog(Frame parent, String title) {
        super(parent, title, parent);
        initUI();
    }

    public CustomizeDialog(Dialog parent, String title) {
        super(parent, title, parent);
        initUI();
    }
 
    private void initUI() {
      XBoxPanel buttonsPanel;
      JPanel    tempPanel;
      Container contentPane;
     
      // Get content-pane and set its layout.
        contentPane = getContentPane();
        contentPane.setLayout(new BorderLayout());
       
        // Add customization panel
        contentPane.add(createCustomizationPanel(), BorderLayout.CENTER);
     
      // Buttons panel.
        buttonsPanel = new XBoxPanel();
        buttonsPanel.add(applyButton = new JButton(Translator.get("apply")));
        buttonsPanel.addSpace(20);
        buttonsPanel.add(okButton     = new JButton(Translator.get("ok")));
        buttonsPanel.add(cancelButton = new JButton(Translator.get("cancel")));
       
        // Disable "commit buttons".
        applyButton.setEnabled(false);
        okButton.setEnabled(false);
       
        // Buttons listening.
        applyButton.addActionListener(this);
        okButton.addActionListener(this);
        cancelButton.addActionListener(this);
       
        // Aligns the button panel to the right.
        tempPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
        tempPanel.add(buttonsPanel);
        contentPane.add(tempPanel, BorderLayout.SOUTH);
       
        // Selects OK when enter is pressed
        getRootPane().setDefaultButton(cancelButton);
       
        // Set preferred size
        setPreferredSize(PREFERRED_SIZE);
    }

    //////////////////////
    // Abstract methods //
    //////////////////////

    protected abstract JPanel createCustomizationPanel();

    protected abstract void commit();
   
    protected abstract void componentChanged();
   
    // - Listener code ----------------------------------------------------------
    // --------------------------------------------------------------------------
    /**
     * Reacts to buttons being pushed.
     */
    public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();

        // Commit changes
        if (source == okButton || source == applyButton)
            commit();

        // Disable OK & Apply buttons
        if (source == applyButton)
          setCommitButtonsEnabled(false);
       
        // Dispose dialog
        if (source == okButton || source == cancelButton)
            dispose();
    }
   
    protected void setCommitButtonsEnabled(boolean enabled) {
      applyButton.setEnabled(enabled);
      okButton.setEnabled(enabled);
     
      // if commit buttons are enabled then set the "okButton" as default button,
      // otherwise set the "cancelButton" as default button.
      getRootPane().setDefaultButton(enabled ? okButton : cancelButton);
    }
}
TOP

Related Classes of com.mucommander.ui.dialog.customization.CustomizeDialog

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.