Package org.netbeans.modules.php.drupaldevel.ui

Source Code of org.netbeans.modules.php.drupaldevel.ui.DrupalToolsTopComponent

/*
* To change this template, choose Tools | Templates and open the template in
* the editor.
*/
package org.netbeans.modules.php.drupaldevel.ui;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.net.URL;
import java.net.URLEncoder;
import javax.swing.JOptionPane;
import javax.swing.text.JTextComponent;
import org.openide.windows.TopComponent;
import org.netbeans.api.settings.ConvertAsProperties;
import org.openide.awt.ActionID;
import org.openide.awt.ActionReference;
import org.openide.util.*;
import org.netbeans.api.editor.EditorRegistry;
import org.netbeans.modules.php.drupaldevel.DrupalDevelPreferences;
import org.netbeans.modules.php.drupaldevel.Util;
import org.netbeans.modules.php.drupaldevel.ui.apitree.*;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import org.netbeans.api.project.Project;
import org.netbeans.lib.editor.codetemplates.api.CodeTemplate;
import org.netbeans.lib.editor.codetemplates.api.CodeTemplateManager;
import org.netbeans.modules.php.drupaldevel.DrupalEditorUtilities;
import org.netbeans.modules.php.drupaldevel.drush.ui.DrushTopComponent;
import org.netbeans.modules.php.drupaldevel.libraryParser;
import org.openide.awt.HtmlBrowser;
import org.netbeans.modules.php.drupaldevel.ui.searchbar.autocomplete.*;
import org.openide.windows.WindowManager;

/**
* Top component which displays something.
*/
@ConvertAsProperties(dtd = "-//org.netbeans.modules.php.drupaldevel.ui//DrupalTools//EN",
autostore = false)
@TopComponent.Description(preferredID = "DrupalToolsTopComponent",
iconBase = "org/netbeans/modules/php/drupaldevel/drupal.png",
persistenceType = TopComponent.PERSISTENCE_ALWAYS)
@TopComponent.Registration(mode = "navigator", openAtStartup = false)
@ActionID(category = "Window", id = "org.netbeans.modules.php.drupaldevel.ui.DrupalToolsTopComponent")
@ActionReference(path = "Menu/Window/Drupal" /*
* , position = 333
*/)
@TopComponent.OpenActionRegistration(displayName = "#CTL_DrupalToolsAction",
preferredID = "DrupalToolsTopComponent")
public final class DrupalToolsTopComponent extends TopComponent {

    private Lookup.Result result = null;
    private String activeDrupalPath = "";
    private String activeDrupalVersion = "";
    private Project activeProject;
    private JTextComponent activeEditor;
    private PropertyChangeListener propListener;
    private ApiTreeEventListener apiTreeListener;
    private AutoCompleteEventListener acListener;

    public DrupalToolsTopComponent() {
        initComponents();
        setName(NbBundle.getMessage(DrupalToolsTopComponent.class, "CTL_DrupalToolsTopComponent"));
        setToolTipText(NbBundle.getMessage(DrupalToolsTopComponent.class, "HINT_DrupalToolsTopComponent"));
        setActiveVersion();

        propListener = new PropertyChangeListener() {

            public void propertyChange(PropertyChangeEvent evt) {
                JTextComponent jtc = EditorRegistry.lastFocusedComponent();
                if (jtc != null) {
                    activeEditor = jtc;
                    Project proj = Util.getActiveProject();
                    if (proj != null) {
                        setActiveVersion(proj);
                    }

                }
            }
        };


        Project proj = Util.getActiveProject();
        if (proj != null) {
            setActiveVersion(proj);
        }

        apiTreeListener = new ApiTreeEventListener() {

            @Override
            public void itemSelected(ApiTreeEvent evt) {
                ApiTreeItem item = evt.getItem();
                if (evt.getAction().equals(ApiTreeEvent.EVENT_INSERT)) {
                    TemplateParser tp = new TemplateParser(item.getFile());

                    insertCodeToEditor(tp.getTag("template"));
                } else if (evt.getAction().equals(ApiTreeEvent.EVENT_HELP)) {
                    String fName = item.getSearch();

                    if (fName.length() > 0) {
                        try {

                            HtmlBrowser.URLDisplayer.getDefault().showURL(new URL(fName));
                        } catch (Exception eee) {

                            return;//nothing much to do
                        }
                    }

                } else if (evt.getAction().equals(ApiTreeEvent.EVENT_LOOKUP)) {
                    DrushTopComponent tc = Util.drushWindow;
                    if (tc == null) {
                        tc = (DrushTopComponent) WindowManager.getDefault().findTopComponent("DrushTopComponent");
                        tc.open();
                        tc.requestActive();

                    }
                    tc.setActiveProject(activeProject);
                    tc.executeDrush("nb-hook " + item.getName());

                }
            }
        };

    }

    private void insertCodeToEditor(String text) {
        this.activeEditor.requestFocus();
        CodeTemplateManager tempManager = CodeTemplateManager.get(this.activeEditor.getDocument());
        text = libraryParser.parseVariables(text, this.activeEditor);
        text = libraryParser.getReplacement(text, "${set_cursor}", "\\$\\{cursor\\}");
        CodeTemplate ct = tempManager.createTemporary(text);

        ct.insert(this.activeEditor);
    }

    private void setActiveVersion(Project proj) {
        String version = DrupalDevelPreferences.getDefaultDrupalVersion();
       
        String path = null;
        if (proj != null && proj != activeProject) {
            activeProject = proj;
            version = DrupalDevelPreferences.getDrupalVersion(proj);
           
            path = DrupalDevelPreferences.getLibraryPath(proj);
           
            setWindowPathItems(path, version);
            this.setDisplayName("Drupal " + version);

        } else {
            version = DrupalDevelPreferences.getDefaultDrupalVersion();
            path = DrupalDevelPreferences.getDefaultLibraryPath();
            setWindowPathItems(path, version);
            this.setDisplayName("Drupal " + version);           
            if (this.activeDrupalPath.equals("")) {
                apiTree1.setEnabled(false);

            }
        }
    }

    private void setActiveVersion() {
        setActiveVersion(Util.getActiveProject());
    }

    private void setWindowPathItems(String path, String version) {
        this.activeDrupalPath = path;
        apiTree1.setEnabled(true);
        this.activeDrupalVersion = version;

        if (path.equals("")) {
            apiTree1.loadPath(DrupalDevelPreferences.libraryInstallPath() + "/code/" + version);
        } else {
            apiTree1.loadPath(DrupalDevelPreferences.libraryInstallPath() + "/code/" + version, path + "/code/" + version);
        }
    }

    @Override
    public void componentOpened() {
        EditorRegistry.addPropertyChangeListener(propListener);
        apiTree1.addApiItemSelection(apiTreeListener);
        //autoComplete1.addAutoCompleteListener(acListener);
        setActiveVersion();
    }

    @Override
    public void componentClosed() {
        EditorRegistry.removePropertyChangeListener(propListener);
        apiTree1.removeApiItemSelection(apiTreeListener);
        //autoComplete1.removeAutoCompleteListener(acListener);
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        apiTree1 = new org.netbeans.modules.php.drupaldevel.ui.apitree.ApitTreeUI();

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(apiTree1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(apiTree1, javax.swing.GroupLayout.DEFAULT_SIZE, 359, Short.MAX_VALUE)
        );
    }// </editor-fold>//GEN-END:initComponents
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private org.netbeans.modules.php.drupaldevel.ui.apitree.ApitTreeUI apiTree1;
    // End of variables declaration//GEN-END:variables

    void writeProperties(java.util.Properties p) {
        // better to version settings since initial version as advocated at
        // http://wiki.apidesign.org/wiki/PropertyFiles
        p.setProperty("version", "1.0");
        // TODO store your settings
    }

    void readProperties(java.util.Properties p) {
        String version = p.getProperty("version");
        // TODO read your settings according to their version
    }
}
TOP

Related Classes of org.netbeans.modules.php.drupaldevel.ui.DrupalToolsTopComponent

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.