[Pydev-cvs] org.python.pydev/src_navigator/org/python/pydev/navigator/actions PythonActionProvider
Brought to you by:
fabioz
From: Fabio Z. <fa...@us...> - 2007-07-07 11:53:11
|
Update of /cvsroot/pydev/org.python.pydev/src_navigator/org/python/pydev/navigator/actions In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11168/src_navigator/org/python/pydev/navigator/actions Modified Files: PythonActionProvider.java PyOpenResourceAction.java PyOpenPythonFileAction.java Log Message: Option 'Open With Pydev' does not appear for containers anymore Index: PyOpenPythonFileAction.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src_navigator/org/python/pydev/navigator/actions/PyOpenPythonFileAction.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** PyOpenPythonFileAction.java 26 May 2007 13:30:48 -0000 1.3 --- PyOpenPythonFileAction.java 7 Jul 2007 11:53:08 -0000 1.4 *************** *** 25,28 **** --- 25,33 ---- import org.python.pydev.plugin.PydevPlugin; + /** + * This action will try to open a given file or node in the pydev editor (if a file or node is selected). + * + * If a container is selected, it will expand or collapse it. + */ public class PyOpenPythonFileAction extends Action { *************** *** 36,39 **** --- 41,48 ---- public PyOpenPythonFileAction(IWorkbenchPage page, ISelectionProvider selectionProvider) { + filesSelected = new ArrayList<IFile>(); + nodesSelected = new ArrayList<PythonNode>(); + containersSelected = new ArrayList<Object>(); + this.setText("Open With Pydev"); this.provider = selectionProvider; *************** *** 54,63 **** * @see org.eclipse.jface.action.Action#run() */ ! public void run() { // clear them - filesSelected = new ArrayList<IFile>(); - nodesSelected = new ArrayList<PythonNode>(); - containersSelected = new ArrayList<Object>(); - fillSelections(); --- 63,68 ---- * @see org.eclipse.jface.action.Action#run() */ ! public synchronized void run() { // clear them fillSelections(); *************** *** 68,73 **** PythonNode node = nodesSelected.iterator().next(); ParsedItem actualObject = node.getActualObject(); ! new PyOpenAction().run(new ItemPointer(node.getPythonFile().getActualObject(), NodeUtils ! .getNameTokFromNode(actualObject.astThis.node))); } else if (containersSelected.size() > 0) { --- 73,77 ---- PythonNode node = nodesSelected.iterator().next(); ParsedItem actualObject = node.getActualObject(); ! new PyOpenAction().run(new ItemPointer(node.getPythonFile().getActualObject(), NodeUtils.getNameTokFromNode(actualObject.astThis.node))); } else if (containersSelected.size() > 0) { *************** *** 85,88 **** --- 89,97 ---- } + /** + * Opens the given files with the Pydev editor. + * + * @param filesSelected the files to be opened with the pydev editor. + */ protected void openFiles(List<IFile> filesSelected) { for (IFile f : filesSelected) { *************** *** 91,95 **** } ! private void fillSelections() { ISelection selection = provider.getSelection(); if (!selection.isEmpty()) { --- 100,113 ---- } ! /** ! * This method will get the given selection and fill the related attributes to match the selection correctly ! * (files, nodes and containers). ! */ ! @SuppressWarnings("unchecked") ! private synchronized void fillSelections() { ! filesSelected.clear(); ! nodesSelected.clear(); ! containersSelected.clear(); ! ISelection selection = provider.getSelection(); if (!selection.isEmpty()) { *************** *** 119,121 **** --- 137,150 ---- } + /** + * @return whether the current selection enables this action (not considering selected containers). + */ + public boolean isEnabledForSelectionWithoutContainers() { + fillSelections(); + if(filesSelected.size() > 0 || nodesSelected.size() > 0){ + return true; + } + return false; + } + } Index: PythonActionProvider.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src_navigator/org/python/pydev/navigator/actions/PythonActionProvider.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** PythonActionProvider.java 26 May 2007 13:30:48 -0000 1.3 --- PythonActionProvider.java 7 Jul 2007 11:53:08 -0000 1.4 *************** *** 87,91 **** */ public void fillContextMenu(IMenuManager menu) { ! if(openPythonAction.isEnabled()){ menu.appendToGroup(ICommonMenuConstants.GROUP_OPEN, openPythonAction); } --- 87,91 ---- */ public void fillContextMenu(IMenuManager menu) { ! if(openPythonAction.isEnabledForSelectionWithoutContainers()){ menu.appendToGroup(ICommonMenuConstants.GROUP_OPEN, openPythonAction); } Index: PyOpenResourceAction.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src_navigator/org/python/pydev/navigator/actions/PyOpenResourceAction.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** PyOpenResourceAction.java 26 May 2007 13:30:48 -0000 1.1 --- PyOpenResourceAction.java 7 Jul 2007 11:53:08 -0000 1.2 *************** *** 10,13 **** --- 10,17 ---- import org.python.pydev.core.log.Log; + /** + * This open action extends the action that tries to open files with the Pydev Editor, just changing the implementation + * to try to open the files with the 'correct' editor in the ide. + */ public class PyOpenResourceAction extends PyOpenPythonFileAction{ *************** *** 20,23 **** --- 24,31 ---- } + /** + * Overridden to open the given files with the match provided by the platform. + */ + @Override protected void openFiles(List<IFile> filesSelected) { for (IFile f : filesSelected) { |