Package org.clarent.ivyidea.intellij.facet.ui

Source Code of org.clarent.ivyidea.intellij.facet.ui.PropertiesSettingsTab

/*
* Copyright 2010 Guy Mahieu
*
* 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 org.clarent.ivyidea.intellij.facet.ui;

import com.intellij.facet.Facet;
import com.intellij.facet.ui.FacetEditorContext;
import com.intellij.facet.ui.FacetEditorTab;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.ui.UserActivityListener;
import com.intellij.ui.UserActivityWatcher;
import org.clarent.ivyidea.config.ui.orderedfilelist.OrderedFileList;
import org.clarent.ivyidea.config.ui.propertieseditor.PropertiesEditor;
import org.clarent.ivyidea.intellij.facet.config.IvyIdeaFacetConfiguration;
import org.jetbrains.annotations.Nls;

import javax.swing.*;
import java.awt.*;

/**
* @author Guy Mahieu
*/
public class PropertiesSettingsTab extends FacetEditorTab  {
    private JPanel pnlRoot;
    private JPanel pnlPropertiesFiles;
    private JPanel pnlAdditionalProperties;
    private JLabel lblAdditionalPropertiesDescription;
    private JLabel lblAdditionalProperties;

    private final FacetEditorContext editorContext;
    private OrderedFileList orderedFileList;
    private PropertiesEditor additionalPropertiesEditor;
    private boolean alreadyOpenedBefore;
    private boolean modified;

    public PropertiesSettingsTab(FacetEditorContext editorContext) {
        this.editorContext = editorContext;

        /* No additional properties support yet in this release */
        pnlAdditionalProperties.setVisible(false);
        lblAdditionalProperties.setVisible(false);
        lblAdditionalPropertiesDescription.setVisible(false);       
        /* -- */

        wireActivityWatcher();       
    }

    private void wireActivityWatcher() {
        UserActivityWatcher watcher = new UserActivityWatcher();
        watcher.addUserActivityListener(new UserActivityListener() {
            public void stateChanged() {
                modified = true;
            }
        });
        watcher.register(pnlRoot);
    }

    @Nls
    public String getDisplayName() {
        return "Properties (optional)";
    }

    public JComponent createComponent() {
        return pnlRoot;
    }

    public boolean isModified() {
        return modified || orderedFileList.isModified();
    }

    public boolean isAlreadyOpenedBefore() {
        return alreadyOpenedBefore;
    }

    public java.util.List<String> getFileNames() {
        return orderedFileList.getFileNames();
    }

    public void apply() throws ConfigurationException {
        final Facet facet = editorContext.getFacet();
        if (facet != null) {
            IvyIdeaFacetConfiguration configuration = (IvyIdeaFacetConfiguration) facet.getConfiguration();
            configuration.getPropertiesSettings().setPropertyFiles(orderedFileList.getFileNames());
        }       
    }

    @Override
    public void onTabEntering() {
        super.onTabEntering();
        alreadyOpenedBefore = true;
    }

    public void reset() {
        final Facet facet = editorContext.getFacet();
        if (facet != null) {
            IvyIdeaFacetConfiguration configuration = (IvyIdeaFacetConfiguration) facet.getConfiguration();
            orderedFileList.setFileNames(configuration.getPropertiesSettings().getPropertyFiles());
        }       
    }

    public void disposeUIResources() {
    }

    private void createUIComponents() {
        pnlPropertiesFiles = new JPanel(new BorderLayout());
        orderedFileList = new OrderedFileList(editorContext.getProject());
        pnlPropertiesFiles.add(orderedFileList.getRootPanel(), BorderLayout.CENTER);

        pnlAdditionalProperties = new JPanel(new BorderLayout());
        additionalPropertiesEditor = new PropertiesEditor();
        pnlAdditionalProperties.add(additionalPropertiesEditor.getRootPanel(), BorderLayout.CENTER);
    }
}
TOP

Related Classes of org.clarent.ivyidea.intellij.facet.ui.PropertiesSettingsTab

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.