Package org.nbgit.options

Source Code of org.nbgit.options.GitExtProperties

/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common
* Development and Distribution License("CDDL") (collectively, the
* "License"). You may not use this file except in compliance with the
* License. You can obtain a copy of the License at
* http://www.netbeans.org/cddl-gplv2.html
* or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
* specific language governing permissions and limitations under the
* License.  When distributing the software, include this License Header
* Notice in each file and include the License file at
* nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun in the GPL Version 2 section of the License file that
* accompanied this code. If applicable, add the following below the
* License Header, with the fields enclosed by brackets [] replaced by
* your own identifying information:
* "Portions Copyrighted [year] [name of copyright owner]"
*
* Contributor(s):
*
* The Original Software is NetBeans. The Initial Developer of the Original
* Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
* Microsystems, Inc. All Rights Reserved.
* Portions Copyright 2008 Alexander Coles (Ikonoklastik Productions).
*
* If you wish your version of this file to be governed by only the CDDL
* or only the GPL Version 2, indicate your decision by adding
* "[Contributor] elects to include this software in this distribution
* under the [CDDL or GPL Version 2] license." If you do not indicate a
* single choice of license, a recipient has the option to distribute
* your version of this file under either the CDDL, the GPL Version 2 or
* to extend the choice of license to its licensees as provided above.
* However, if you add GPL Version 2 code and therefore, elected the GPL
* Version 2 license, then the option applies only if the new code is
* made subject to such option by the copyright holder.
*/
package org.nbgit.options;

import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Properties;
import java.util.Vector;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.Document;
import org.nbgit.Git;
import org.nbgit.GitModuleConfig;
import org.nbgit.GitProgressSupport;
import org.nbgit.ui.properties.GitPropertiesNode;
import org.openide.util.RequestProcessor;

public class GitExtProperties implements ActionListener, DocumentListener {

    private PropertiesPanel panel;
    private File root;
    private PropertiesTable propTable;
    private GitProgressSupport support;
    private File loadedValueFile;
    private Font fontTextArea;

    /** Creates a new instance of GitExtProperties */
    public GitExtProperties(PropertiesPanel panel, PropertiesTable propTable, File root) {
        this.panel = panel;
        this.propTable = propTable;
        this.root = root;
        panel.getTxtAreaValue().getDocument().addDocumentListener(this);
        ((JTextField) panel.getComboName().getEditor().getEditorComponent()).getDocument().addDocumentListener(this);
        propTable.getTable().addMouseListener(new TableMouseListener());
        panel.getBtnAdd().addActionListener(this);
        panel.getBtnRemove().addActionListener(this);
        panel.getComboName().setEditable(true);
        panel.getBtnAdd().setEnabled(false);
        initPropertyNameCbx();
        refreshProperties();
    }

    public PropertiesPanel getPropertiesPanel() {
        return panel;
    }

    public void setPropertiesPanel(PropertiesPanel panel) {
        this.panel = panel;
    }

    public File getRoot() {
        return root;
    }

    public void setRoot(File root) {
        this.root = root;
    }

    public void actionPerformed(ActionEvent event) {
        Object source = event.getSource();

        if (source.equals(panel.getBtnAdd())) {
            addProperty();
        }
        if (source.equals(panel.getBtnRemove())) {
            removeProperties();
        }
    }

    protected void initPropertyNameCbx() {
        List<String> lstName = new ArrayList<String>(8);

        ComboBoxModel comboModel = new DefaultComboBoxModel(new Vector<String>(lstName));
        panel.getComboName().setModel(comboModel);
        panel.getComboName().getEditor().setItem(""); // NOI18N
    }

    protected String getPropertyValue() {
        return panel.getTxtAreaValue().getText();
    }

    protected String getPropertyName() {
        Object selectedItem = panel.getComboName().getSelectedObjects()[0];
        if (selectedItem != null) {
            return panel.getComboName().getEditor().getItem().toString().trim();
        } else {
            return selectedItem.toString().trim();
        }
    }

    protected void refreshProperties() {
        RequestProcessor rp = Git.getInstance().getRequestProcessor();
        try {
            support = new GitProgressSupport() {

                protected void perform() {
                    /*
                    Properties props = GitModuleConfig.getDefault().getProperties(root, "extensions"); // NOI18N
                    GitPropertiesNode[] gitProps = new GitPropertiesNode[props.size()];
                    int i = 0;

                    for (Enumeration e = props.propertyNames(); e.hasMoreElements();) {
                    String name = (String) e.nextElement();
                    String tmp = props.getProperty(name);
                    String value = tmp != null ? tmp : ""; // NOI18N
                    gitProps[i] = new GitPropertiesNode(name, value);
                    i++;
                    }
                    propTable.setNodes(gitProps);
                     */
                }
            };
            support.start(rp, null, org.openide.util.NbBundle.getMessage(GitExtProperties.class, "LBL_Properties_Progress")); // NOI18N
        } finally {
            support = null;
        }
    }

    private boolean addProperty(String name, String value) {
        GitPropertiesNode[] gitPropertiesNode = propTable.getNodes();
        for (int i = 0; i < gitPropertiesNode.length; i++) {
            String gitPropertyName = gitPropertiesNode[propTable.getModelIndex(i)].getName();
            if (gitPropertyName.equals(name)) {
                gitPropertiesNode[propTable.getModelIndex(i)].setValue(value);
                propTable.setNodes(gitPropertiesNode);
                return true;
            }
        }
        GitPropertiesNode[] gitProps = new GitPropertiesNode[gitPropertiesNode.length + 1];
        for (int i = 0; i < gitPropertiesNode.length; i++) {
            gitProps[i] = gitPropertiesNode[i];
        }
        gitProps[gitPropertiesNode.length] = new GitPropertiesNode(name, value);
        propTable.setNodes(gitProps);
        return true;
    }

    public void addProperty() {
        if (addProperty(getPropertyName(), getPropertyValue())) {
            panel.getComboName().getEditor().setItem(""); // NOI18N
            panel.getTxtAreaValue().setText(""); // NOI18N
        }
    }

    public void setProperties() {
        RequestProcessor rp = Git.getInstance().getRequestProcessor();
        try {
            support = new GitProgressSupport() {

                protected void perform() {
                    /*
                    GitModuleConfig.getDefault().clearProperties(root, "extensions"); // NOI18N
                    GitPropertiesNode[] gitPropertiesNodes = propTable.getNodes();
                    for (int i = 0; i < gitPropertiesNodes.length; i++) {
                    String gitPropertyName = gitPropertiesNodes[propTable.getModelIndex(i)].getName();
                    String gitPropertyValue = gitPropertiesNodes[propTable.getModelIndex(i)].getValue();
                    GitModuleConfig.getDefault().setProperty(root, "extensions", gitPropertyName, gitPropertyValue, true); // NOI18N
                    }
                     */
                }
            };
            support.start(rp, null, org.openide.util.NbBundle.getMessage(GitExtProperties.class, "LBL_Properties_Progress")); // NOI18N
        } finally {
            support = null;
        }
    }

    public void removeProperties() {
        final int[] rows = propTable.getSelectedItems();
        // No rows selected
        if (rows.length == 0) {
            return;
        }
        GitPropertiesNode[] gitPropertiesNodes = propTable.getNodes();
        GitPropertiesNode[] gitProps = new GitPropertiesNode[gitPropertiesNodes.length - rows.length];
        int j = 0;
        int k = 0;
        for (int i = 0; i < gitPropertiesNodes.length; i++) {
            if (i != rows[j]) {
                gitProps[k++] = gitPropertiesNodes[i];
            } else if (j < rows.length - 1) {
                j++;
            }
        }
        propTable.setNodes(gitProps);
    }

    public void insertUpdate(DocumentEvent event) {
        validateUserInput(event);
    }

    public void removeUpdate(DocumentEvent event) {
        validateUserInput(event);
    }

    public void changedUpdate(DocumentEvent event) {
        validateUserInput(event);
    }

    private void validateUserInput(DocumentEvent event) {

        Document doc = event.getDocument();
        String name = panel.getComboName().getEditor().getItem().toString().trim();
        String value = panel.getTxtAreaValue().getText().trim();

        if (name.length() == 0 || name.indexOf(" ") > 0) // NOI18N
        {
            panel.getBtnAdd().setEnabled(false);
        } else {
            panel.getBtnAdd().setEnabled(true);
        }
    }

    public class TableMouseListener extends MouseAdapter {

        @Override
        public void mouseClicked(MouseEvent event) {
            //super.mouseClicked(arg0);
            if (event.getClickCount() == 2) {
                int[] rows = propTable.getSelectedItems();
                GitPropertiesNode[] gitPropertiesNodes = propTable.getNodes();
                if (gitPropertiesNodes == null) {
                    return;
                }
                final String gitPropertyName = gitPropertiesNodes[propTable.getModelIndex(rows[0])].getName();
                final String gitPropertyValue = gitPropertiesNodes[propTable.getModelIndex(rows[0])].getValue();
                EventQueue.invokeLater(new Runnable() {

                    public void run() {
                        panel.getComboName().getEditor().setItem(gitPropertyName);
                        panel.getTxtAreaValue().setText(gitPropertyValue);
                    }
                });
            }
        }
    }
}
TOP

Related Classes of org.nbgit.options.GitExtProperties

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.