1. 打开对话框
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
public class OpenProject extends AbstractHandler {
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
try {
ArrayList<ArrayList<String>> result = DMModel.getDMCbyName("Project").listData();
if(result!=null){
List<LazyDTO> list = new ArrayList<LazyDTO>();
for(int i=0;i<result.size();i++){
list.add(new LazyDTO(result.get(i).get(0)));
}
FilteredSelectionDialog fsd = new FilteredSelectionDialog(HandlerUtil.getActiveShell(event),"打开项目");
fsd.setListLabelProvider(new FilteredSelectionListLabelProvider());
fsd.setInput(list);
fsd.open();
LazyDTO selection = (LazyDTO)fsd.getFirstResult();
if(selection!=null)
Apqp.getDefault().setWorkingProject(new Project(selection));
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
2. 对话框
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
package com.sg.hyperobject.ui.parts.selector;
import java.util.Comparator;
import java.util.Iterator;
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.sg.hyperobject.Activator;
import com.sg.hyperobject.datamanager.dt.LazyDTO;
public class FilteredSelectionDialog extends
FilteredItemsSelectionDialog {
private List<LazyDTO> input;
public FilteredSelectionDialog(Shell shell, String titles) {
super(shell);
setTitle(titles);
}
@Override
protected Control createExtendedContentArea(Composite parent) {
return null;
}
@Override
protected ItemsFilter createFilter() {
return new ItemsFilter() {
public boolean matchItem(Object item) {
return matches(getElementName(item));
}
public boolean isConsistentItem(Object item) {
return true;
}
};
}
@Override
protected void fillContentProvider(AbstractContentProvider contentProvider,
ItemsFilter itemsFilter, IProgressMonitor progressMonitor)
throws CoreException {
progressMonitor.beginTask("Searching", input.size()); //$NON-NLS-1$
for (Iterator<LazyDTO> iter = input.iterator(); iter.hasNext();) {
contentProvider.add(iter.next(), itemsFilter);
progressMonitor.worked(1);
}
progressMonitor.done();
}
public void setInput(List<LazyDTO> input){
this.input = input;
}
private static final String DIALOG_SETTINGS = "FilteredDTOItemsSelectionDialogSettings";
@Override
protected IDialogSettings getDialogSettings() {
IDialogSettings settings = Activator.getDefault().getDialogSettings()
.getSection(DIALOG_SETTINGS);
if (settings == null) {
settings = Activator.getDefault().getDialogSettings()
.addNewSection(DIALOG_SETTINGS);
}
return settings;
}
@Override
public String getElementName(Object item) {
return item==null?"":((LazyDTO)item).getStyleString().getString();
}
@Override
protected Comparator getItemsComparator() {
return new Comparator() {
public int compare(Object arg0, Object arg1) {
return getElementName(arg0).compareTo(getElementName(arg1));
}
};
}
@Override
protected IStatus validateItem(Object item) {
return Status.OK_STATUS;
}
}