/**
* <p>Copyright: Copyright (c) 2009</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.ui.dialog;
import java.util.Comparator;
import java.util.List;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.dialogs.FilteredItemsSelectionDialog;
import com.hundsun.ares.studio.ui.ARESUI;
/**
* �����˹��ܵĶ���ѡ���
*
* @author mawb
*/
public abstract class ARESFilteredItemsSelectionDialog<T> extends FilteredItemsSelectionDialog {
private static final String DIALOG_SETTINGS= "com.hundsun.ares.studio.ui.dialog.ARESFilteredItemsSelectionDialog"; //$NON-NLS-1$
private List<T> input;
public ARESFilteredItemsSelectionDialog(Shell shell, String title) {
super(shell);
setTitle(title);
}
/* (non-Javadoc)
* @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createExtendedContentArea(org.eclipse.swt.widgets.Composite)
*/
@Override
protected Control createExtendedContentArea(Composite parent) {
return null;
}
/* (non-Javadoc)
* @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createFilter()
*/
@Override
protected ItemsFilter createFilter() {
return new ItemsFilter() {
@Override
public boolean isConsistentItem(Object item) {
return true;
}
@Override
public boolean matchItem(Object item) {
return matches(getElementName(item));
}
};
}
/* (non-Javadoc)
* @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#fillContentProvider(org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.AbstractContentProvider, org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.ItemsFilter, org.eclipse.core.runtime.IProgressMonitor)
*/
@Override
protected void fillContentProvider(AbstractContentProvider contentProvider,
ItemsFilter itemsFilter, IProgressMonitor progressMonitor)
throws CoreException {
if (input != null) {
progressMonitor.beginTask("Searching", input.size()); //$NON-NLS-1$
for (T item : input) {
contentProvider.add(item, itemsFilter);
progressMonitor.worked(1);
}
progressMonitor.done();
}
}
public void setInput(List<T> input){
this.input = input;
}
/* (non-Javadoc)
* @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#getDialogSettings()
*/
@Override
protected IDialogSettings getDialogSettings() {
IDialogSettings settings= ARESUI.getPlugin().getDialogSettings().getSection(DIALOG_SETTINGS);
if (settings == null) {
settings= ARESUI.getPlugin().getDialogSettings().addNewSection(DIALOG_SETTINGS);
}
return settings;
}
/* (non-Javadoc)
* @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#getItemsComparator()
*/
@Override
protected Comparator<T> getItemsComparator() {
return new Comparator<T>() {
public int compare(Object arg0, Object arg1) {
return getElementName(arg0).compareTo(getElementName(arg1));
}
};
}
/* (non-Javadoc)
* @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#validateItem(java.lang.Object)
*/
@Override
protected IStatus validateItem(Object item) {
return Status.OK_STATUS;
}
}