"Add Framework Support" UI

This commit is contained in:
Dmitry Avdeev
2010-08-11 14:04:08 +04:00
parent 5f1314dc30
commit e1e8c1fa6f
4 changed files with 40 additions and 19 deletions
@@ -40,7 +40,15 @@ public class AddFrameworkSupportDialog extends DialogWrapper {
public String compute() {
return contentRootPath;
}
});
}) {
@Override
protected void onFrameworkStateChanged() {
setOKActionEnabled(isOKActionEnabled());
}
};
setOKActionEnabled(isOKActionEnabled());
Disposer.register(myDisposable, myAddSupportPanel);
init();
}
@@ -61,8 +69,13 @@ public class AddFrameworkSupportDialog extends DialogWrapper {
return roots.length != 0 && FrameworkSupportUtil.hasProviders(module);
}
@Override
public boolean isOKActionEnabled() {
return myAddSupportPanel.hasSelectedFrameworks();
}
protected void doOKAction() {
if (myAddSupportPanel.haveSelectedFrameworks()) {
if (myAddSupportPanel.hasSelectedFrameworks()) {
if (!myAddSupportPanel.downloadLibraries()) {
int answer = Messages.showYesNoDialog(myAddSupportPanel.getMainPanel(),
ProjectBundle.message("warning.message.some.required.libraries.wasn.t.downloaded"),
@@ -96,4 +109,9 @@ public class AddFrameworkSupportDialog extends DialogWrapper {
protected JComponent createCenterPanel() {
return myAddSupportPanel.getMainPanel();
}
@Override
public JComponent getPreferredFocusedComponent() {
return myAddSupportPanel.getFrameworksTree();
}
}
@@ -31,7 +31,9 @@
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<border type="empty">
<size top="3" left="0" bottom="0" right="0"/>
</border>
<children/>
</grid>
</children>
@@ -48,6 +48,7 @@ import com.intellij.ui.SeparatorFactory;
import com.intellij.util.graph.CachingSemiGraph;
import com.intellij.util.graph.DFSTBuilder;
import com.intellij.util.graph.GraphGenerator;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -64,7 +65,6 @@ import java.util.List;
*/
public class AddSupportForFrameworksPanel implements Disposable {
private static final Logger LOG = Logger.getInstance("#com.intellij.ide.util.newProjectWizard.AddSupportForFrameworksStep");
@NonNls private static final String UNCHECKED_CARD = "unchecked";
@NonNls private static final String EMPTY_CARD = "empty";
private JPanel myMainPanel;
private JPanel myFrameworksPanel;
@@ -78,7 +78,6 @@ public class AddSupportForFrameworksPanel implements Disposable {
private final FrameworksTree myFrameworksTree;
private final Set<String> myInitializedOptionsPanelIds = new HashSet<String>();
private FrameworkSupportNode myLastSelectedNode;
private final JLabel myTickCheckboxLabel;
public AddSupportForFrameworksPanel(final List<FrameworkSupportProvider> providers, final @NotNull LibrariesContainer librariesContainer,
@Nullable ModuleBuilder builder, Computable<String> baseDirForLibrariesGetter) {
@@ -100,6 +99,7 @@ public class AddSupportForFrameworksPanel implements Disposable {
updateOptionsPanel();
frameworkSupportNode.getConfigurable().onFrameworkSelectionChanged(node.isChecked());
myModel.onFrameworkSelectionChanged(frameworkSupportNode);
onFrameworkStateChanged();
}
};
myFrameworksTree.addTreeSelectionListener(new TreeSelectionListener() {
@@ -107,17 +107,19 @@ public class AddSupportForFrameworksPanel implements Disposable {
onSelectionChanged();
}
});
splitter.setFirstComponent(ScrollPaneFactory.createScrollPane(myFrameworksTree));
myOptionsPanel = new JPanel(new CardLayout());
myOptionsPanel.add(EMPTY_CARD, new JPanel());
final JPanel uncheckedLabelPanel = new JPanel(new BorderLayout());
myTickCheckboxLabel = new JLabel("Tick checkbox");
uncheckedLabelPanel.add(BorderLayout.NORTH, myTickCheckboxLabel);
myOptionsPanel.add(UNCHECKED_CARD, uncheckedLabelPanel);
splitter.setSecondComponent(myOptionsPanel);
myFrameworksPanel.add(splitter, BorderLayout.CENTER);
myFrameworksTree.setSelectionRow(0);
}
protected void onFrameworkStateChanged() {}
private void onSelectionChanged() {
if (!myFrameworksTree.isProcessingMouseEventOnCheckbox()) {
updateOptionsPanel();
@@ -154,14 +156,9 @@ public class AddSupportForFrameworksPanel implements Disposable {
private void updateOptionsPanel() {
final FrameworkSupportNode node = getSelectedNode();
if (node != null) {
if (node.isChecked()) {
initializeOptionsPanel(node);
showCard(node.getProvider().getId());
}
else {
myTickCheckboxLabel.setText("Select check box to add '" + node.getTitle() + "' support");
showCard(UNCHECKED_CARD);
}
initializeOptionsPanel(node);
showCard(node.getProvider().getId());
UIUtil.setEnabled(myOptionsPanel, node.isChecked(), true);
}
else {
showCard(EMPTY_CARD);
@@ -314,7 +311,11 @@ public class AddSupportForFrameworksPanel implements Disposable {
return myMainPanel;
}
public boolean haveSelectedFrameworks() {
public FrameworksTree getFrameworksTree() {
return myFrameworksTree;
}
public boolean hasSelectedFrameworks() {
return !getFrameworkNodes(true).isEmpty();
}
@@ -481,7 +481,7 @@ composing.library.name.label=&Name:
composing.library.download.missing.jars.to=&Download missing files to:
composing.liibrary.new.library.label=The following library will be created
composing.library.from.repository.label=&from {0}
dialog.title.add.frameworks.support=Frameworks Support
dialog.title.add.frameworks.support=Add Frameworks Support
warning.message.some.required.libraries.wasn.t.downloaded=Some required library wasn't downloaded. Do you want to proceed without it?
save.as.library.checkbox=&Move copy to {0} level