1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

change constructor to accept IBaseLabelProvider so TableViewer can use ITableLabelProvider

fix bug in SetChecked() (never worked)
This commit is contained in:
Chris Wiebe 2004-08-13 20:56:00 +00:00
parent eeacf01782
commit b1825eeb75

View file

@ -11,20 +11,20 @@
package org.eclipse.cdt.internal.ui.wizards.dialogfields; package org.eclipse.cdt.internal.ui.wizards.dialogfields;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.List; import java.util.List;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Table;
import org.eclipse.jface.util.Assert; import org.eclipse.jface.util.Assert;
import org.eclipse.jface.viewers.CheckStateChangedEvent; import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.CheckboxTableViewer; import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.jface.viewers.ICheckStateListener; import org.eclipse.jface.viewers.ICheckStateListener;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Table;
/** /**
* A list with checkboxes and a button bar. Typical buttons are 'Check All' and 'Uncheck All'. * A list with checkboxes and a button bar. Typical buttons are 'Check All' and 'Uncheck All'.
@ -38,7 +38,7 @@ public class CheckedListDialogField extends ListDialogField {
private List fCheckElements; private List fCheckElements;
public CheckedListDialogField(IListAdapter adapter, String[] customButtonLabels, ILabelProvider lprovider) { public CheckedListDialogField(IListAdapter adapter, String[] customButtonLabels, IBaseLabelProvider lprovider) {
super(adapter, customButtonLabels, lprovider); super(adapter, customButtonLabels, lprovider);
fCheckElements= new ArrayList(); fCheckElements= new ArrayList();
@ -118,6 +118,13 @@ public class CheckedListDialogField extends ListDialogField {
return new ArrayList(fCheckElements); return new ArrayList(fCheckElements);
} }
/**
* Returns the number of checked elements.
*/
public int getCheckedSize() {
return fCheckElements.size();
}
/** /**
* Returns true if the element is checked. * Returns true if the element is checked.
*/ */
@ -128,7 +135,7 @@ public class CheckedListDialogField extends ListDialogField {
/** /**
* Sets the checked elements. * Sets the checked elements.
*/ */
public void setCheckedElements(List list) { public void setCheckedElements(Collection list) {
fCheckElements= new ArrayList(list); fCheckElements= new ArrayList(list);
if (fTable != null) { if (fTable != null) {
((CheckboxTableViewer)fTable).setCheckedElements(list.toArray()); ((CheckboxTableViewer)fTable).setCheckedElements(list.toArray());
@ -148,9 +155,13 @@ public class CheckedListDialogField extends ListDialogField {
* Sets the checked state of an element. No dialog changed listener is informed. * Sets the checked state of an element. No dialog changed listener is informed.
*/ */
public void setCheckedWithoutUpdate(Object object, boolean state) { public void setCheckedWithoutUpdate(Object object, boolean state) {
if (state) {
if (!fCheckElements.contains(object)) { if (!fCheckElements.contains(object)) {
fCheckElements.add(object); fCheckElements.add(object);
} }
} else {
fCheckElements.remove(object);
}
if (fTable != null) { if (fTable != null) {
((CheckboxTableViewer)fTable).setChecked(object, state); ((CheckboxTableViewer)fTable).setChecked(object, state);
} }
@ -172,7 +183,7 @@ public class CheckedListDialogField extends ListDialogField {
} }
protected void doCheckStateChanged(CheckStateChangedEvent e) { private void doCheckStateChanged(CheckStateChangedEvent e) {
if (e.getChecked()) { if (e.getChecked()) {
fCheckElements.add(e.getElement()); fCheckElements.add(e.getElement());
} else { } else {
@ -181,6 +192,15 @@ public class CheckedListDialogField extends ListDialogField {
checkStateChanged(); checkStateChanged();
} }
/* (non-Javadoc)
* @see org.eclipse.jdt.internal.ui.wizards.dialogfields.ListDialogField#replaceElement(java.lang.Object, java.lang.Object)
*/
public void replaceElement(Object oldElement, Object newElement) throws IllegalArgumentException {
boolean wasChecked= isChecked(oldElement);
super.replaceElement(oldElement, newElement);
setChecked(newElement, wasChecked);
}
// ------ enable / disable management // ------ enable / disable management
/* /*
@ -208,9 +228,4 @@ public class CheckedListDialogField extends ListDialogField {
} }
return true; return true;
} }
} }