package net.sourceforge.squirrel_sql.client.gui.session; import java.util.Collections; import java.util.Comparator; import java.util.Vector; import javax.swing.Action; import net.sourceforge.squirrel_sql.fw.completion.CompletionCandidates; import net.sourceforge.squirrel_sql.fw.completion.ICompletorModel; public class ToolsPopupCompletorModel implements ICompletorModel { Vector<ToolsPopupCompletionInfo> _toolsPopupCompletionInfos = new Vector<ToolsPopupCompletionInfo>(); public CompletionCandidates getCompletionCandidates(String selectionStringBegin) { Vector<ToolsPopupCompletionInfo> ret = new Vector<ToolsPopupCompletionInfo>(); int maxNameLen = 0; for (int i = 0; i < _toolsPopupCompletionInfos.size(); i++) { ToolsPopupCompletionInfo tpci = _toolsPopupCompletionInfos.get(i); if(tpci.getSelectionString().startsWith(selectionStringBegin)) { ret.add(tpci); maxNameLen = Math.max(maxNameLen, tpci.getSelectionString().length()); } } ToolsPopupCompletionInfo[] candidates = ret.toArray(new ToolsPopupCompletionInfo[ret.size()]); for (int i = 0; i < candidates.length; i++) { candidates[i].setMaxCandidateSelectionStringName(maxNameLen); } return new CompletionCandidates(candidates); } public void addAction(String selectionString, Action action) { _toolsPopupCompletionInfos.add(new ToolsPopupCompletionInfo(selectionString, action)); Collections.sort(_toolsPopupCompletionInfos, new ToolsPopupCompletionInfoComparator()); } private static class ToolsPopupCompletionInfoComparator implements Comparator<ToolsPopupCompletionInfo> { /** * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) */ public int compare(ToolsPopupCompletionInfo arg0, ToolsPopupCompletionInfo arg1) { return arg0.getSelectionString().compareTo(arg1.getSelectionString()); } } }