com.archivas.clienttools.arcmover.gui.settings.DefaultNamespaceSettingsForm.java Source code

Java tutorial

Introduction

Here is the source code for com.archivas.clienttools.arcmover.gui.settings.DefaultNamespaceSettingsForm.java

Source

// Copyright 2007 Hitachi Data Systems
// All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may
// not use this file except in compliance with the License. You may obtain
// a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations
// under the License.

package com.archivas.clienttools.arcmover.gui.settings;

import java.awt.Font;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

import com.archivas.clienttools.arcmover.gui.JobDialog;
import com.archivas.clienttools.arcutils.utils.UidGidUtil;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;

public class DefaultNamespaceSettingsForm extends JPanel {
    protected JPanel defaultNamespaceTab;
    protected JCheckBox uidCheckbox;
    protected JTextField uidTextField;
    protected JCheckBox gidCheckbox;
    protected JCheckBox fileModeCheckbox;
    protected JCheckBox dirModeCheckbox;
    protected JTextField gidTextField;
    protected JPanel contentPane;
    protected PermissionsForm objectPermissionsForm;
    protected PermissionsForm dirPermissionsForm;

    private JobDialog jobDialog;

    public DefaultNamespaceSettingsForm(JobDialog jobDialog, String uid, String gid, int filePerms, int dirPerms) {
        this.jobDialog = jobDialog;
        objectPermissionsForm.setJobDialog(jobDialog);
        dirPermissionsForm.setJobDialog(jobDialog);

        uidCheckbox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                enableUIDFields(e.getStateChange() == ItemEvent.SELECTED);
                fieldChanged();
            }
        });
        gidCheckbox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                enableGIDFields(e.getStateChange() == ItemEvent.SELECTED);
                fieldChanged();
            }
        });
        fileModeCheckbox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                enableFilePerms(e.getStateChange() == ItemEvent.SELECTED);
                fieldChanged();
            }
        });
        dirModeCheckbox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                enableDirPerms(e.getStateChange() == ItemEvent.SELECTED);
                fieldChanged();
            }
        });

        DocumentListener docListener = new DocumentListener() {
            public void insertUpdate(DocumentEvent e) {
                fieldChanged();
            }

            public void removeUpdate(DocumentEvent e) {
                fieldChanged();
            }

            public void changedUpdate(DocumentEvent e) {
                fieldChanged();
            }

        };
        uidTextField.getDocument().addDocumentListener(docListener);
        gidTextField.getDocument().addDocumentListener(docListener);

        setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
        add(contentPane);
        add(Box.createHorizontalGlue());

        initFields(uid, gid, filePerms, dirPerms);
    }

    private void fieldChanged() {
        if (jobDialog != null) {
            jobDialog.fieldChanged();
        }
    }

    public void enablePanel(boolean enabled) {
        uidCheckbox.setEnabled(enabled);
        uidTextField.setEnabled(enabled && uidCheckbox.isSelected());
        gidCheckbox.setEnabled(enabled);
        gidTextField.setEnabled(enabled && gidCheckbox.isSelected());
        fileModeCheckbox.setEnabled(enabled);
        enableFilePerms(enabled && fileModeCheckbox.isSelected());
        dirModeCheckbox.setEnabled(enabled);
        enableDirPerms(enabled && dirModeCheckbox.isSelected());
    }

    private void enableUIDFields(boolean enabled) {
        uidTextField.setEnabled(enabled);
        if (!enabled) {
            uidTextField.setText("");
        }
    }

    private void enableGIDFields(boolean enabled) {
        gidTextField.setEnabled(enabled);
        if (!enabled) {
            gidTextField.setText("");
        }
    }

    private void enableFilePerms(boolean enabled) {
        objectPermissionsForm.setEnabled(enabled);
    }

    private void enableDirPerms(boolean enabled) {
        dirPermissionsForm.setEnabled(enabled);
    }

    public void initFields(String uid, String gid, int filePerms, int dirPerms) {

        uidTextField.setText(uid);
        uidTextField.setEnabled(uid.trim().length() > 0);
        uidCheckbox.setSelected(uid.trim().length() > 0);

        gidTextField.setText(gid);
        gidTextField.setEnabled(gid.length() > 0);
        gidCheckbox.setSelected(gid.length() > 0);

        objectPermissionsForm.setPermissionsValue(filePerms > -1 ? filePerms : 0);
        objectPermissionsForm.setEnabled(filePerms > -1);
        fileModeCheckbox.setSelected(filePerms > -1);

        dirPermissionsForm.setPermissionsValue(dirPerms > -1 ? dirPerms : 0);
        dirPermissionsForm.setEnabled(dirPerms > -1);
        dirModeCheckbox.setSelected(dirPerms > -1);
    }

    public boolean hasUid() {
        boolean retval = false;
        if (uidCheckbox != null) {
            retval = uidCheckbox.isSelected();
        }
        return retval;
    }

    public Long getUid() throws NumberFormatException {
        return UidGidUtil.validateId(uidTextField.getText());
    }

    public boolean hasGid() {
        boolean retval = false;
        if (gidCheckbox != null) {
            retval = gidCheckbox.isSelected();
        }
        return retval;
    }

    public Long getGid() throws NumberFormatException {
        return UidGidUtil.validateId(gidTextField.getText());
    }

    public boolean hasFileMode() {
        boolean retval = false;
        if (fileModeCheckbox != null) {
            retval = fileModeCheckbox.isSelected();
        }
        return retval;
    }

    public int getFileMode() throws NumberFormatException {
        return objectPermissionsForm.getPermissionsValue();
    }

    public boolean hasDirMode() {
        boolean retval = false;
        if (dirModeCheckbox != null) {
            retval = dirModeCheckbox.isSelected();
        }
        return retval;
    }

    public int getDirMode() throws NumberFormatException {
        return dirPermissionsForm.getPermissionsValue();
    }

    {
        // GUI initializer generated by IntelliJ IDEA GUI Designer
        // >>> IMPORTANT!! <<<
        // DO NOT EDIT OR ADD ANY CODE HERE!
        $$$setupUI$$$();
    }

    /**
     * Method generated by IntelliJ IDEA GUI Designer >>> IMPORTANT!! <<< DO NOT edit this method OR
     * call it in your code!
     *
     * @noinspection ALL
     */
    private void $$$setupUI$$$() {
        contentPane = new JPanel();
        contentPane.setLayout(new FormLayout("fill:d:grow", "center:d:grow"));
        defaultNamespaceTab = new JPanel();
        defaultNamespaceTab.setLayout(new FormLayout(
                "fill:4dlu:noGrow,fill:max(d;4px):noGrow,left:max(d;4px):noGrow,fill:max(d;4px):grow,fill:d:noGrow",
                "center:4dlu:noGrow,center:max(d;4px):noGrow,top:15px:noGrow,center:max(d;4px):noGrow,top:5dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:max(m;4px):grow,top:4dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow"));
        CellConstraints cc = new CellConstraints();
        contentPane.add(defaultNamespaceTab, cc.xy(1, 1, CellConstraints.DEFAULT, CellConstraints.TOP));
        final JLabel label1 = new JLabel();
        label1.setFont(new Font(label1.getFont().getName(), Font.BOLD, 14));
        label1.setText("POSIX Ownership and Permissions");
        defaultNamespaceTab.add(label1, cc.xyw(2, 2, 3));
        uidCheckbox = new JCheckBox();
        uidCheckbox.setText("UID");
        uidCheckbox.setToolTipText("Enable setting UID");
        defaultNamespaceTab.add(uidCheckbox, cc.xy(2, 6));
        uidTextField = new JTextField();
        uidTextField.setEnabled(false);
        uidTextField.setToolTipText("Number to set for UID");
        defaultNamespaceTab.add(uidTextField, cc.xy(4, 6, CellConstraints.FILL, CellConstraints.DEFAULT));
        gidCheckbox = new JCheckBox();
        gidCheckbox.setText("GID");
        gidCheckbox.setToolTipText("Enable setting GID");
        defaultNamespaceTab.add(gidCheckbox, cc.xy(2, 8));
        fileModeCheckbox = new JCheckBox();
        fileModeCheckbox.setText("Object permissions");
        fileModeCheckbox.setToolTipText("Enable setting object permissions");
        defaultNamespaceTab.add(fileModeCheckbox, cc.xy(2, 10, CellConstraints.DEFAULT, CellConstraints.TOP));
        dirModeCheckbox = new JCheckBox();
        dirModeCheckbox.setText("Directory permissions");
        dirModeCheckbox.setToolTipText("Enable setting directory permissions");
        defaultNamespaceTab.add(dirModeCheckbox, cc.xy(2, 12, CellConstraints.DEFAULT, CellConstraints.TOP));
        gidTextField = new JTextField();
        gidTextField.setEnabled(false);
        gidTextField.setToolTipText("Number to set for GID");
        defaultNamespaceTab.add(gidTextField, cc.xy(4, 8, CellConstraints.FILL, CellConstraints.DEFAULT));
        final JLabel label2 = new JLabel();
        label2.setFont(new Font(label2.getFont().getName(), label2.getFont().getStyle(), 12));
        label2.setText("These settings apply only to the HCP default namespace and HCAP 2.x.");
        defaultNamespaceTab.add(label2, cc.xyw(2, 3, 3));
        objectPermissionsForm = new PermissionsForm();
        defaultNamespaceTab.add(objectPermissionsForm.$$$getRootComponent$$$(),
                cc.xy(4, 10, CellConstraints.FILL, CellConstraints.FILL));
        dirPermissionsForm = new PermissionsForm();
        defaultNamespaceTab.add(dirPermissionsForm.$$$getRootComponent$$$(),
                cc.xy(4, 12, CellConstraints.FILL, CellConstraints.FILL));
    }

    /**
     * @noinspection ALL
     */
    public JComponent $$$getRootComponent$$$() {
        return contentPane;
    }
}