diff --git a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/DownloadingOptionsDialog.form b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/DownloadingOptionsDialog.form index 6255628ea536..cb12f61dac8b 100644 --- a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/DownloadingOptionsDialog.form +++ b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/DownloadingOptionsDialog.form @@ -15,7 +15,7 @@ - + @@ -23,68 +23,21 @@ - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -98,7 +51,7 @@ - + @@ -128,6 +81,14 @@ + + + + + + + + diff --git a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/DownloadingOptionsDialog.java b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/DownloadingOptionsDialog.java index 0d24748ffbf4..6478aefeb3a4 100644 --- a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/DownloadingOptionsDialog.java +++ b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/DownloadingOptionsDialog.java @@ -18,12 +18,10 @@ package com.intellij.facet.impl.ui.libraries; import com.intellij.facet.ui.libraries.LibraryInfo; import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.project.ProjectBundle; -import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainer; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.ui.CheckBoxList; import com.intellij.ui.CollectionListModel; -import com.intellij.ui.EnumComboBoxModel; import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; @@ -38,13 +36,13 @@ public class DownloadingOptionsDialog extends DialogWrapper { private JPanel myPanel; private CheckBoxList myFilesList; private TextFieldWithBrowseButton myDirectoryField; - private JTextField myLibraryNameField; - private JComboBox myLevelComboBox; private JCheckBox myDownloadSourcesCheckBox; private JLabel myFilesToDownloadLabel; private JLabel myCopyDownloadedFilesToLabel; private JCheckBox myDownloadJavadocsCheckBox; + private JPanel myNameWrappingPanel; private final LibraryCompositionSettings mySettings; + private final LibraryNameAndLevelPanel myNameAndLevelPanel; protected DownloadingOptionsDialog(Component parent, LibraryCompositionSettings settings) { super(parent, true); @@ -68,9 +66,10 @@ public class DownloadingOptionsDialog extends DialogWrapper { myDownloadSourcesCheckBox.setSelected(settings.isDownloadSources()); myDownloadJavadocsCheckBox.setSelected(settings.isDownloadJavadocs()); - myLibraryNameField.setText(settings.getLibraryName()); - myLevelComboBox.setModel(new EnumComboBoxModel(LibrariesContainer.LibraryLevel.class)); - myLevelComboBox.setSelectedItem(settings.getLibraryLevel()); + + myNameAndLevelPanel = new LibraryNameAndLevelPanel(); + myNameWrappingPanel.add(myNameAndLevelPanel.getPanel()); + myNameAndLevelPanel.reset(settings); init(); } @@ -86,8 +85,7 @@ public class DownloadingOptionsDialog extends DialogWrapper { @Override protected void doOKAction() { - mySettings.setLibraryName(myLibraryNameField.getText()); - mySettings.setLibraryLevel((LibrariesContainer.LibraryLevel)myLevelComboBox.getSelectedItem()); + myNameAndLevelPanel.apply(mySettings); mySettings.setDirectoryForDownloadedLibrariesPath(myDirectoryField.getText()); LibraryInfo[] libraryInfos = mySettings.getLibraryInfos(); for (int i = 0, libraryInfosLength = libraryInfos.length; i < libraryInfosLength; i++) { diff --git a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/EditLibraryDialog.form b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/EditLibraryDialog.form index 8a1edd8da239..c9f9c05a80cb 100644 --- a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/EditLibraryDialog.form +++ b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/EditLibraryDialog.form @@ -1,6 +1,6 @@
- + @@ -16,65 +16,13 @@ - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/EditLibraryDialog.java b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/EditLibraryDialog.java index e25bf7c0f1e1..232b7b4ed56f 100644 --- a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/EditLibraryDialog.java +++ b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/EditLibraryDialog.java @@ -34,13 +34,15 @@ public class EditLibraryDialog extends DialogWrapper { private ApplicationLibraryTable myLibraryTable = new ApplicationLibraryTable(); private Library myLibrary; - private JTextField myTextField1; - private JComboBox myComboBox1; private JPanel myEditorPanel; private JPanel myPanel; + private JPanel myNameAndLevelPanelWrapper; + private final LibraryNameAndLevelPanel myNameAndLevelPanel; + private LibraryCompositionSettings mySettings; - protected EditLibraryDialog(Component parent) { + public EditLibraryDialog(Component parent, LibraryCompositionSettings settings) { super(parent, true); + mySettings = settings; setTitle("Edit Library"); ApplicationManager.getApplication().runWriteAction(new Runnable() { @Override @@ -48,10 +50,17 @@ public class EditLibraryDialog extends DialogWrapper { myLibrary = myLibraryTable.createLibrary("xxx"); } }); + + myNameAndLevelPanel = new LibraryNameAndLevelPanel(); + myNameAndLevelPanel.reset(mySettings); init(); } + public Library getLibrary() { + return myLibrary; + } + @Override protected JComponent createCenterPanel() { @@ -78,7 +87,14 @@ public class EditLibraryDialog extends DialogWrapper { } }, myLibrary).getComponent(); - myEditorPanel.add(editor, BorderLayout.CENTER); + myEditorPanel.add(editor); + myNameAndLevelPanelWrapper.add(myNameAndLevelPanel.getPanel()); return myPanel; } + + @Override + protected void doOKAction() { + myNameAndLevelPanel.apply(mySettings); + super.doOKAction(); + } } diff --git a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryNameAndLevelPanel.form b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryNameAndLevelPanel.form new file mode 100644 index 000000000000..1e6d12ecd07f --- /dev/null +++ b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryNameAndLevelPanel.form @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryNameAndLevelPanel.java b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryNameAndLevelPanel.java new file mode 100644 index 000000000000..0d80837daa72 --- /dev/null +++ b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryNameAndLevelPanel.java @@ -0,0 +1,46 @@ +/* + * Copyright 2000-2010 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.intellij.facet.impl.ui.libraries; + +import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainer; +import com.intellij.ui.EnumComboBoxModel; + +import javax.swing.*; + +/** + * @author Dmitry Avdeev + */ +class LibraryNameAndLevelPanel { + + private JTextField myLibraryNameField; + private JComboBox myLevelComboBox; + private JPanel myPanel; + + void reset(LibraryCompositionSettings settings) { + myLibraryNameField.setText(settings.getLibraryName()); + myLevelComboBox.setModel(new EnumComboBoxModel(LibrariesContainer.LibraryLevel.class)); + myLevelComboBox.setSelectedItem(settings.getLibraryLevel()); + } + + void apply(LibraryCompositionSettings settings) { + settings.setLibraryName(myLibraryNameField.getText()); + settings.setLibraryLevel((LibrariesContainer.LibraryLevel)myLevelComboBox.getSelectedItem()); + } + + public JPanel getPanel() { + return myPanel; + } +} diff --git a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryOptionsPanel.java b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryOptionsPanel.java index 48282ebfe77b..15be376a25c7 100644 --- a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryOptionsPanel.java +++ b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryOptionsPanel.java @@ -18,6 +18,10 @@ package com.intellij.facet.impl.ui.libraries; import com.intellij.ide.IdeBundle; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.roots.OrderRootType; +import com.intellij.openapi.roots.libraries.Library; +import com.intellij.openapi.ui.DialogWrapper; +import com.intellij.openapi.util.Computable; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.Nullable; @@ -56,32 +60,40 @@ public class LibraryOptionsPanel { myConfigureButton.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { - final Point point = myConfigureButton.getLocationOnScreen(); if (myLocateOnDiskButton.isSelected()) { - EditLibraryDialog dialog = new EditLibraryDialog(myConfigureButton) { - @Override - public Point getInitialLocation() { - point.translate(- 50, - getSize().height); - return point; + EditLibraryDialog dialog = new EditLibraryDialog(myConfigureButton, myLibraryCompositionSettings); + if (myLibraryCompositionSettings.getAddedJars().isEmpty()) { + VirtualFile[] files = showFileChooser(); + Library.ModifiableModel modifiableModel = dialog.getLibrary().getModifiableModel(); + for (VirtualFile file : files) { + modifiableModel.addRoot(file, OrderRootType.CLASSES); } - }; - dialog.show(); + modifiableModel.commit(); + } + showDialog(dialog); } else { - new DownloadingOptionsDialog(myConfigureButton, myLibraryCompositionSettings) { - @Override - public Point getInitialLocation() { - point.translate(- 50, - getSize().height); - return point; - } - }.show(); + DownloadingOptionsDialog dialog = new DownloadingOptionsDialog(myConfigureButton, myLibraryCompositionSettings); + showDialog(dialog); } + updateState(); } }); updateState(); } + private void showDialog(final DialogWrapper dialog) { + dialog.setInitialLocationCallback(new Computable() { + @Override + public Point compute() { + Point point = myConfigureButton.getLocationOnScreen(); + point.translate(- 50, - dialog.getSize().height); + return point; + } + }); + dialog.show(); + } private VirtualFile[] showFileChooser() { final FileChooserDescriptor descriptor = new FileChooserDescriptor(false, false, true, false, false, true); @@ -109,7 +121,7 @@ public class LibraryOptionsPanel { if (myDownloadFromMavenButton.isSelected()) { String path = myLibraryCompositionSettings.getDirectoryForDownloadedLibrariesPath().substring(myLibraryCompositionSettings.getBaseDirectoryForDownloadedFiles().length()); String message = MessageFormat.format("{0} jar(s) will be downloaded into {1} directory
" + - "{2} level library {3} will be created", + "{2} library {3} will be created", myLibraryCompositionSettings.getLibraryInfos().length, path, myLibraryCompositionSettings.getLibraryLevel(),