com.intellij.application.options.SaveSchemeDialog.java Source code

Java tutorial

Introduction

Here is the source code for com.intellij.application.options.SaveSchemeDialog.java

Source

/*
 * Copyright 2000-2015 JetBrains s.r.o.
 *
 * 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.
 */

/**
 * @author Yura Cangea
 */
package com.intellij.application.options;

import com.intellij.CommonBundle;
import com.intellij.openapi.application.ApplicationBundle;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.ui.Messages;
import com.intellij.util.text.UniqueNameGenerator;
import com.intellij.util.ui.JBUI;
import org.jetbrains.annotations.NotNull;

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

public class SaveSchemeDialog extends DialogWrapper {
    private final JTextField mySchemeName = new JTextField();
    private final List<String> myExistingNames;

    public SaveSchemeDialog(@NotNull Component parent, String title, @NotNull List<String> existingNames,
            @NotNull String selectedName) {
        super(parent, false);
        myExistingNames = existingNames;
        setTitle(title);
        mySchemeName.setText(UniqueNameGenerator.generateUniqueName(selectedName + " copy", existingNames));
        init();
    }

    public String getSchemeName() {
        return mySchemeName.getText();
    }

    @Override
    protected JComponent createNorthPanel() {
        JPanel panel = new JPanel(new GridBagLayout());
        GridBagConstraints gc = new GridBagConstraints();
        gc.gridx = 0;
        gc.gridy = 0;
        gc.weightx = 0;
        gc.insets = new Insets(5, 0, 5, 5);
        panel.add(new JLabel(ApplicationBundle.message("label.name")), gc);

        gc = new GridBagConstraints();
        gc.gridx = 1;
        gc.gridy = 0;
        gc.weightx = 1;
        gc.fill = GridBagConstraints.HORIZONTAL;
        gc.gridwidth = 2;
        gc.insets = new Insets(0, 0, 5, 0);
        panel.add(mySchemeName, gc);

        panel.setPreferredSize(JBUI.size(220, 40));
        return panel;
    }

    @Override
    protected void doOKAction() {
        if (getSchemeName().trim().isEmpty()) {
            Messages.showMessageDialog(getContentPane(), ApplicationBundle.message("error.scheme.must.have.a.name"),
                    CommonBundle.getErrorTitle(), Messages.getErrorIcon());
            return;
        } else if ("default".equals(getSchemeName())) {
            Messages.showMessageDialog(getContentPane(), ApplicationBundle.message("error.illegal.scheme.name"),
                    CommonBundle.getErrorTitle(), Messages.getErrorIcon());
            return;
        } else if (myExistingNames.contains(getSchemeName())) {
            Messages.showMessageDialog(getContentPane(), ApplicationBundle.message(
                    "error.a.scheme.with.this.name.already.exists.or.was.deleted.without.applying.the.changes"),
                    CommonBundle.getErrorTitle(), Messages.getErrorIcon());
            return;
        }
        super.doOKAction();
    }

    @Override
    protected JComponent createCenterPanel() {
        return null;
    }

    @Override
    public JComponent getPreferredFocusedComponent() {
        return mySchemeName;
    }
}