/** * Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved. * Licensed under the terms of the Eclipse Public License (EPL). * Please see the license.txt included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ package com.python.pydev.analysis.actions; import java.util.ArrayList; import java.util.List; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.dialogs.SelectionDialog; import org.python.pydev.core.IPythonNature; import org.python.pydev.core.log.Log; import com.python.pydev.analysis.additionalinfo.AbstractAdditionalTokensInfo; import com.python.pydev.analysis.additionalinfo.IInfo; /** * Creates the selection dialog to be used to select a token. * * @author Fabio */ public class GlobalsDialogFactory { /** * Creates the dialog according to the Eclipse version we have (on 3.2, the old API is used) * @param pythonNatures */ public static SelectionDialog create(Shell shell, List<AbstractAdditionalTokensInfo> additionalInfo, String selectedText) { boolean expectedError = true; try { GlobalsTwoPanelElementSelector2 newDialog = new GlobalsTwoPanelElementSelector2(shell, true, selectedText); //If we were able to instance it, the error is no longer expected! expectedError = false; newDialog.setElements(additionalInfo); return newDialog; } catch (Throwable e) { //That's OK: it's only available for Eclipse 3.3 onwards. if (expectedError) { Log.log(e); } } //If it got here, we were unable to create the new dialog (show the old -- compatible with 3.2) GlobalsTwoPaneElementSelector dialog; dialog = new GlobalsTwoPaneElementSelector(shell); dialog.setMessage("Filter"); if (selectedText != null && selectedText.length() > 0) { dialog.setFilter(selectedText); } List<IInfo> lst = new ArrayList<IInfo>(); for (AbstractAdditionalTokensInfo info : additionalInfo) { lst.addAll(info.getAllTokens()); } dialog.setElements(lst.toArray()); return dialog; } }