diff options
author | Anton Tanasenko | 2014-09-15 21:02:14 +0000 |
---|---|---|
committer | Anton Tanasenko | 2014-09-15 21:02:14 +0000 |
commit | 945074588a36c4a967c4af26d4f87d0c9cbff136 (patch) | |
tree | 07ca391b981141d7ccfe624d01a3b8efac9c2f6d /org.eclipse.m2e.core.ui | |
parent | e27e54f824d395d4a0995cacfae0c90ff48c8627 (diff) | |
download | m2e-core-945074588a36c4a967c4af26d4f87d0c9cbff136.tar.gz m2e-core-945074588a36c4a967c4af26d4f87d0c9cbff136.tar.xz m2e-core-945074588a36c4a967c4af26d4f87d0c9cbff136.zip |
444084 Fix performance of NestedProjectsComposite checkBox selections
Followup for menus as well as MavenImportWizard
Change-Id: Ib5910efc31d0166ff191526ca9c3c143adf24378
Signed-off-by: Anton Tanasenko <atg.sleepless@gmail.com>
Diffstat (limited to 'org.eclipse.m2e.core.ui')
2 files changed, 16 insertions, 7 deletions
diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/components/NestedProjectsComposite.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/components/NestedProjectsComposite.java index e7b4b6e5..c52eea4d 100644 --- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/components/NestedProjectsComposite.java +++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/components/NestedProjectsComposite.java @@ -452,14 +452,14 @@ public class NestedProjectsComposite extends Composite implements IMenuListener private final Action selectTree = new Action(Messages.UpdateDepenciesDialog_selectTree) { public void run() { - codebaseViewer.setSubtreeChecked(getSelection(), true); + setSubtreeChecked(getSelection(), true); updateSelectedProjects(); } }; private final Action deselectTree = new Action(Messages.UpdateDepenciesDialog_deselectTree) { public void run() { - codebaseViewer.setSubtreeChecked(getSelection(), false); + setSubtreeChecked(getSelection(), false); updateSelectedProjects(); } }; @@ -495,9 +495,7 @@ public class NestedProjectsComposite extends Composite implements IMenuListener projects = getMavenCodebases(); codebaseViewer.setInput(projects); codebaseViewer.expandAll(); - for(IProject project : projects) { - codebaseViewer.setSubtreeChecked(project, false); - } + codebaseViewer.setCheckedElements(new Object[0]); updateSelectedProjects(); } diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenImportWizardPage.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenImportWizardPage.java index aa619039..3588d116 100644 --- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenImportWizardPage.java +++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenImportWizardPage.java @@ -561,12 +561,23 @@ public class MavenImportWizardPage extends AbstractMavenWizardPage { workingSetName.setEnabled(enabled); } + private void setSubtreeChecked(Object obj, boolean checked) { + // CheckBoxTreeViewer#setSubtreeChecked is severely inefficient + projectTreeViewer.setChecked(obj, checked); + Object[] children = ((ITreeContentProvider) projectTreeViewer.getContentProvider()).getChildren(obj); + if(children != null) { + for(Object child : children) { + setSubtreeChecked(child, checked); + } + } + } + void setAllChecked(boolean state) { @SuppressWarnings("unchecked") List<MavenProjectInfo> input = (List<MavenProjectInfo>) projectTreeViewer.getInput(); if(input != null) { for(MavenProjectInfo mavenProjectInfo : input) { - projectTreeViewer.setSubtreeChecked(mavenProjectInfo, state); + setSubtreeChecked(mavenProjectInfo, state); } updateCheckedState(); } @@ -736,7 +747,7 @@ public class MavenImportWizardPage extends AbstractMavenWizardPage { void setProjectSubtreeChecked(boolean checked) { ITreeSelection selection = (ITreeSelection) projectTreeViewer.getSelection(); - projectTreeViewer.setSubtreeChecked(selection.getFirstElement(), checked); + setSubtreeChecked(selection.getFirstElement(), checked); updateCheckedState(); setPageComplete(); } |