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:
parent
eeacf01782
commit
b1825eeb75
1 changed files with 31 additions and 16 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue