All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jetbrains.python.refactoring.classes.extractSuperclass.PyExtractSuperclassViewSwingImpl Maven / Gradle / Ivy

Go to download

A packaging of the IntelliJ Community Edition python-community library. This is release number 1 of trunk branch 142.

The newest version!
/*
 * Copyright 2000-2014 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.
 */
package com.jetbrains.python.refactoring.classes.extractSuperclass;

import com.intellij.openapi.fileChooser.FileChooserDescriptor;
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.ui.TextComponentAccessor;
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
import com.intellij.refactoring.RefactoringBundle;
import com.jetbrains.python.psi.PyClass;
import com.jetbrains.python.refactoring.classes.membersManager.vp.MembersBasedViewSwingImpl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

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

/**
 * @author Ilya.Kazakevich
 */
class PyExtractSuperclassViewSwingImpl
  extends MembersBasedViewSwingImpl
  implements PyExtractSuperclassView {

  private static final String FILE_OR_DIRECTORY = RefactoringBundle.message("extract.superclass.elements.header");
  @NotNull
  private final JTextArea myExtractedSuperNameField = new JTextArea();
  @NotNull
  private final FileChooserDescriptor myFileChooserDescriptor;
  @NotNull
  private final TextFieldWithBrowseButton myTargetDirField;

  PyExtractSuperclassViewSwingImpl(@NotNull final PyClass classUnderRefactoring,
                                   @NotNull final Project project,
                                   @NotNull final PyExtractSuperclassPresenter presenter) {
    super(project, presenter, RefactoringBundle.message("extract.superclass.from"), true);
    setTitle(PyExtractSuperclassHandler.REFACTORING_NAME);


    final Box box = Box.createVerticalBox();

    JPanel panel = new JPanel(new BorderLayout());
    panel.add(new JLabel(RefactoringBundle.message("extract.superclass.from")), BorderLayout.NORTH);
    final JTextField sourceClassField = new JTextField();
    sourceClassField.setEditable(false);
    sourceClassField.setText(classUnderRefactoring.getName());
    panel.add(sourceClassField, BorderLayout.CENTER);
    box.add(panel);

    box.add(Box.createVerticalStrut(10));

    final JLabel superNameLabel = new JLabel();
    superNameLabel.setText(RefactoringBundle.message("superclass.name"));

    panel = new JPanel(new BorderLayout());
    panel.add(superNameLabel, BorderLayout.NORTH);
    panel.add(myExtractedSuperNameField, BorderLayout.CENTER);
    box.add(panel);
    box.add(Box.createVerticalStrut(5));

    myFileChooserDescriptor = FileChooserDescriptorFactory.createSingleFileOrFolderDescriptor();


    myFileChooserDescriptor.setRoots(ProjectRootManager.getInstance(project).getContentRoots());
    myFileChooserDescriptor.withTreeRootVisible(true);
    myTargetDirField = new TextFieldWithBrowseButton();
    myTargetDirField
      .addBrowseFolderListener(FILE_OR_DIRECTORY, null, project, myFileChooserDescriptor, TextComponentAccessor.TEXT_FIELD_WHOLE_TEXT);

    panel = new JPanel(new BorderLayout());
    final JLabel dirLabel = new JLabel();
    dirLabel.setText(FILE_OR_DIRECTORY); //u18n

    panel.add(dirLabel, BorderLayout.NORTH);
    panel.add(myTargetDirField, BorderLayout.CENTER);
    box.add(panel);

    box.add(Box.createVerticalStrut(10));


    myTopPanel.add(box, BorderLayout.CENTER);
    myCenterPanel.add(myPyMemberSelectionPanel, BorderLayout.CENTER);
    setPreviewResults(false);
  }

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

  @Override
  public void configure(@NotNull final PyExtractSuperclassInitializationInfo configInfo) {
    super.configure(configInfo);
    myFileChooserDescriptor.setRoots(configInfo.getRoots());
    myTargetDirField.setText(configInfo.getDefaultFilePath());
  }

  @NotNull
  @Override
  public String getModuleFile() {
    return myTargetDirField.getText();
  }

  @NotNull
  @Override
  public String getSuperClassName() {
    return myExtractedSuperNameField.getText();
  }

  @Nullable
  @Override
  protected String getHelpId() {
    return "refactoring.extract.superclass.dialog";
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy