From e846e27bc910843fdac0a300bd5c37bc2e1a6a01 Mon Sep 17 00:00:00 2001 From: Emanuel Graf Date: Tue, 6 Jul 2010 11:33:00 +0000 Subject: [PATCH] Bug 318658: Implement method: Add Select/Deselect All buttons https://bugs.eclipse.org/bugs/show_bug.cgi?id=318658 --- .../ImplementMethodInputPage.java | 52 ++++++++++++++++++- .../refactoring/implementmethod/Messages.java | 2 + .../implementmethod/messages.properties | 2 + 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/ImplementMethodInputPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/ImplementMethodInputPage.java index 7624cf989e7..9cf86af109f 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/ImplementMethodInputPage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/ImplementMethodInputPage.java @@ -16,7 +16,12 @@ import org.eclipse.jface.viewers.ICheckStateListener; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.ltk.ui.refactoring.UserInputWizardPage; import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.FillLayout; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.dialogs.ContainerCheckedTreeViewer; @@ -55,18 +60,63 @@ public class ImplementMethodInputPage extends UserInputWizardPage{ setMessage(Messages.ImplementMethodInputPage_Header); Composite comp = new Composite(parent, SWT.NONE ); - comp.setLayout(new FillLayout()); + comp.setLayout(new GridLayout(2, false)); createTree(comp); + createFieldManagementButtonsComposite(comp); setControl(comp); checkPage(); } + + private Composite createFieldManagementButtonsComposite(Composite comp) { + Composite btComp = new Composite(comp, SWT.NONE); + FillLayout layout = new FillLayout(SWT.VERTICAL); + layout.spacing = 4; + btComp.setLayout(layout); + + GridData gd = new GridData(); + gd.verticalAlignment = SWT.TOP; + btComp.setLayoutData(gd); + + final Button selectAll = new Button(btComp, SWT.PUSH); + selectAll.setText(Messages.ImplementMethodInputPage_SelectAll); + selectAll.addSelectionListener(new SelectionAdapter(){ + @Override + public void widgetSelected(SelectionEvent e) { + Object[] items = data.getElements(null); + for (Object treeItem : items) { + MethodToImplementConfig method = (MethodToImplementConfig)treeItem; + method.setChecked(true); + tree.setChecked(treeItem, true); + } + checkPage(); + } + }); + + final Button deselectAll = new Button(btComp, SWT.PUSH); + deselectAll.setText(Messages.ImplementMethodInputPage_DeselectAll); + deselectAll.addSelectionListener(new SelectionAdapter(){ + @Override + public void widgetSelected(SelectionEvent e) { + Object[] items = data.getElements(null); + for (Object treeItem : items) { + MethodToImplementConfig method = (MethodToImplementConfig)treeItem; + method.setChecked(false); + tree.setChecked(treeItem, false); + } + checkPage(); + } + }); + + return btComp; + } private void createTree(Composite comp) { tree = new ContainerCheckedTreeViewer(comp); tree.setContentProvider(data); tree.setAutoExpandLevel(2); tree.setInput(""); //$NON-NLS-1$ + tree.getTree().setLayoutData(new GridData(GridData.FILL_BOTH)); tree.addCheckStateListener(new ICheckStateListener() { diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/Messages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/Messages.java index c248aaeb5fa..5f84d78d888 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/Messages.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/Messages.java @@ -25,6 +25,8 @@ public final class Messages extends NLS { public static String ParameterNamesInputPage_CompleteMissingMails; public static String PreviewGenerationNotPossible; public static String ImplementMethodInputPage_PageTitle; + public static String ImplementMethodInputPage_SelectAll; + public static String ImplementMethodInputPage_DeselectAll; public static String ImplementMethodRefactoringPage_GeneratingPreview; public static String ImplementMethodRefactoring_NoMethodSelected; public static String ImplementMethodRefactoring_MethodHasImpl; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/messages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/messages.properties index 021232adb76..bf22220895b 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/messages.properties +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/implementmethod/messages.properties @@ -14,6 +14,8 @@ ParameterNamesInputPage_Title=Implement Method ImplementMethodInputPage_Header=Select Methods to implement: ParameterNamesInputPage_CompleteMissingMails=Please complete the missing variable names: ImplementMethodInputPage_PageTitle=Implement Method +ImplementMethodInputPage_SelectAll=Select All +ImplementMethodInputPage_DeselectAll=Deselect All ImplementMethodRefactoring_MethodDefinition=Method Definition ImplementMethodRefactoringPage_GeneratingPreview=Generating preview... ImplementMethodRefactoring_NoMethodSelected=No method declaration selected