Java tutorial
// 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; } }