Package org.apache.cayenne.modeler.editor.datanode

Source Code of org.apache.cayenne.modeler.editor.datanode.PasswordEncoderView$PasswordLocationRenderer

/*****************************************************************
*   Licensed to the Apache Software Foundation (ASF) under one
*  or more contributor license agreements.  See the NOTICE file
*  distributed with this work for additional information
*  regarding copyright ownership.  The ASF licenses this file
*  to you 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 org.apache.cayenne.modeler.editor.datanode;

import java.awt.BorderLayout;
import java.awt.Component;
import java.util.Map;
import java.util.TreeMap;

import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextField;

import org.apache.cayenne.configuration.PasswordEncoding;
import org.apache.cayenne.conn.DataSourceInfo;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.util.JTextFieldUndoable;

import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;

public class PasswordEncoderView extends JPanel {

    protected JComboBox passwordEncoder;
    protected JComboBox passwordLocation;
    protected JTextField passwordKey;
    protected JTextField passwordSource;
    protected JLabel passwordSourceLabel;

    private static final String PASSWORD_CLASSPATH = "Classpath Search (File System)";
    private static final String PASSWORD_EXECUTABLE = "Executable Program";
    private static final String PASSWORD_MODEL = "Cayenne Model";
    private static final String PASSWORD_URL = "URL (file:, http:, etc)";

    private static final Object[] PASSWORD_LOCATIONS = new Object[] {
            DataSourceInfo.PASSWORD_LOCATION_MODEL,
            DataSourceInfo.PASSWORD_LOCATION_CLASSPATH,
            DataSourceInfo.PASSWORD_LOCATION_EXECUTABLE,
            DataSourceInfo.PASSWORD_LOCATION_URL
    };

    private static final Map<String, String> passwordSourceLabels = new TreeMap<String, String>();

    static {
        passwordSourceLabels.put(DataSourceInfo.PASSWORD_LOCATION_MODEL, PASSWORD_MODEL);
        passwordSourceLabels.put(
                DataSourceInfo.PASSWORD_LOCATION_CLASSPATH,
                PASSWORD_CLASSPATH);
        passwordSourceLabels.put(
                DataSourceInfo.PASSWORD_LOCATION_EXECUTABLE,
                PASSWORD_EXECUTABLE);
        passwordSourceLabels.put(DataSourceInfo.PASSWORD_LOCATION_URL, PASSWORD_URL);
    }

    final class PasswordLocationRenderer extends DefaultListCellRenderer {

        public Component getListCellRendererComponent(
                JList list,
                Object object,
                int arg2,
                boolean arg3,
                boolean arg4) {
            if (object != null)
                object = passwordSourceLabels.get(object);
            else
                object = PASSWORD_MODEL;

            return super.getListCellRendererComponent(list, object, arg2, arg3, arg4);
        }
    }

    public PasswordEncoderView() {

        this.passwordEncoder = Application.getWidgetFactory().createUndoableComboBox();
        this.passwordLocation = Application.getWidgetFactory().createUndoableComboBox();
        this.passwordSource = new JTextFieldUndoable();
        this.passwordKey = new JTextFieldUndoable();

        // init combo box choices
        passwordEncoder.setModel(new DefaultComboBoxModel(
                PasswordEncoding.standardEncoders));
        passwordEncoder.setEditable(true);

        passwordLocation = Application.getWidgetFactory().createUndoableComboBox();
        passwordLocation.setRenderer(new PasswordLocationRenderer());

        DefaultComboBoxModel passwordLocationModel = new DefaultComboBoxModel(
                PASSWORD_LOCATIONS);

        passwordLocation.setModel(passwordLocationModel);

        CellConstraints cc = new CellConstraints();

        FormLayout layout = new FormLayout(
                "right:80dlu, 3dlu, fill:50dlu, 3dlu, fill:74dlu, 3dlu, fill:70dlu", // Columns
                "p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p"); // Rows

        PanelBuilder builder = new PanelBuilder(layout);
        builder.setDefaultDialogBorder();

        builder.addSeparator("Encoder", cc.xywh(1, 1, 7, 1));

        builder.addLabel("Password Encoder:", cc.xy(1, 11));
        builder.add(passwordEncoder, cc.xywh(3, 11, 5, 1));

        builder.addLabel("Password Encoder Key:", cc.xy(1, 13));
        builder.add(passwordKey, cc.xywh(3, 13, 5, 1));

        builder.addLabel("Note: Cayenne supplied encoders do not use a key.", cc.xywh(
                3,
                15,
                5,
                1));

        builder.addLabel("Password Location:", cc.xy(1, 17));
        builder.add(passwordLocation, cc.xywh(3, 17, 5, 1));

        passwordSourceLabel = builder.addLabel("Password Source:", cc.xy(1, 19));
        builder.add(passwordSource, cc.xywh(3, 19, 5, 1));

        this.setLayout(new BorderLayout());
        this.add(builder.getPanel(), BorderLayout.CENTER);

    }

    /**
     * @return the passwordEncoder
     */
    public JComboBox getPasswordEncoder() {
        return passwordEncoder;
    }

    /**
     * @return the passwordLocation
     */
    public JComboBox getPasswordLocation() {
        return passwordLocation;
    }

    /**
     * @return the passwordKey
     */
    public JTextField getPasswordKey() {
        return passwordKey;
    }

    /**
     * @return the passwordSource
     */
    public JTextField getPasswordSource() {
        return passwordSource;
    }

    /**
     * @return the passwordLocationLabel
     */
    public JLabel getPasswordSourceLabel() {
        return passwordSourceLabel;
    }

}
TOP

Related Classes of org.apache.cayenne.modeler.editor.datanode.PasswordEncoderView$PasswordLocationRenderer

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.