1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

2005-01-26 Alain Magloire

Part of implementing PR 83112
	* src/org/eclipse/cdt/internal/ui/editor/CContentOutlinePage.java
	Changes in the interface of the Core Model
	* refactor/org/eclipse/cdt/internal/corext/refactoring/rename/RenameElementProcessor.java
	* refactor/org/eclipse/cdt/internal/ui/refactoring/actions/RenameRefactoringAction.java
This commit is contained in:
Alain Magloire 2005-01-27 03:41:50 +00:00
parent a03bc42e1a
commit e6868902c5
4 changed files with 66 additions and 12 deletions

View file

@ -1,3 +1,10 @@
2005-01-26 Alain Magloire
Part of implementing PR 83112
* src/org/eclipse/cdt/internal/ui/editor/CContentOutlinePage.java
Changes in the interface of the Core Model
* refactor/org/eclipse/cdt/internal/corext/refactoring/rename/RenameElementProcessor.java
* refactor/org/eclipse/cdt/internal/ui/refactoring/actions/RenameRefactoringAction.java
2005-01-26 Alain Magloire 2005-01-26 Alain Magloire
Part of implementing PR 83112 Part of implementing PR 83112
* src/org/eclipse/cdt/internal/ui/cview/CView.java * src/org/eclipse/cdt/internal/ui/cview/CView.java

View file

@ -33,6 +33,7 @@ import org.eclipse.cdt.core.model.IMethodDeclaration;
import org.eclipse.cdt.core.model.INamespace; import org.eclipse.cdt.core.model.INamespace;
import org.eclipse.cdt.core.model.IParent; import org.eclipse.cdt.core.model.IParent;
import org.eclipse.cdt.core.model.ISourceManipulation; import org.eclipse.cdt.core.model.ISourceManipulation;
import org.eclipse.cdt.core.model.ISourceRange;
import org.eclipse.cdt.core.model.ISourceReference; import org.eclipse.cdt.core.model.ISourceReference;
import org.eclipse.cdt.core.model.IStructure; import org.eclipse.cdt.core.model.IStructure;
import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.core.model.ITranslationUnit;
@ -148,13 +149,20 @@ public class RenameElementProcessor extends RenameProcessor implements IReferenc
} }
private int getCurrentElementNameStartPos() { private int getCurrentElementNameStartPos() {
if(fCElement == null) if (fCElement == null)
return 0; return 0;
String name = fCElement.getElementName(); try {
if (name.indexOf(QUALIFIER) != -1){ String name = fCElement.getElementName();
return (((CElement)fCElement).getIdStartPos() + name.lastIndexOf(QUALIFIER) + 2); ISourceReference sourceRef = (ISourceReference)fCElement;
ISourceRange range = sourceRef.getSourceRange();
if (name.indexOf(QUALIFIER) != -1) {
return range.getIdStartPos() + name.lastIndexOf(QUALIFIER) + 2;
}
return range.getIdStartPos();
} catch (CModelException e) {
//
} }
return ((CElement)fCElement).getIdStartPos(); return 0;
} }
private String getElementQualifiedName(ICElement element) throws CModelException{ private String getElementQualifiedName(ICElement element) throws CModelException{

View file

@ -11,9 +11,11 @@
package org.eclipse.cdt.internal.ui.refactoring.actions; package org.eclipse.cdt.internal.ui.refactoring.actions;
import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ISourceRange;
import org.eclipse.cdt.core.model.ISourceReference;
import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.internal.core.model.CElement;
import org.eclipse.cdt.internal.corext.refactoring.RenameRefactoring; import org.eclipse.cdt.internal.corext.refactoring.RenameRefactoring;
import org.eclipse.cdt.internal.ui.actions.SelectionConverter; import org.eclipse.cdt.internal.ui.actions.SelectionConverter;
import org.eclipse.cdt.internal.ui.editor.CEditor; import org.eclipse.cdt.internal.ui.editor.CEditor;
@ -68,10 +70,17 @@ public class RenameRefactoringAction extends SelectionDispatchAction {
setEnabled(false); setEnabled(false);
return; return;
} }
if (element instanceof ISourceReference) {
if( (((CElement)element).getIdStartPos() != textSelection.getOffset()) try {
|| (((CElement)element).getIdLength() != textSelection.getLength())) { ISourceReference sourceRef = (ISourceReference)element;
enable = false; ISourceRange range = sourceRef.getSourceRange();
if( (range.getIdStartPos() != textSelection.getOffset())
|| (range.getIdLength() != textSelection.getLength())) {
enable = false;
}
} catch (CModelException e) {
//
}
} }
setEnabled(enable); setEnabled(enable);
} }

View file

@ -14,6 +14,12 @@ import org.eclipse.cdt.internal.ui.CPluginImages;
import org.eclipse.cdt.internal.ui.ICHelpContextIds; import org.eclipse.cdt.internal.ui.ICHelpContextIds;
import org.eclipse.cdt.internal.ui.actions.AbstractToggleLinkingAction; import org.eclipse.cdt.internal.ui.actions.AbstractToggleLinkingAction;
import org.eclipse.cdt.internal.ui.actions.ActionMessages; import org.eclipse.cdt.internal.ui.actions.ActionMessages;
import org.eclipse.cdt.internal.ui.cview.SelectionTransferDragAdapter;
import org.eclipse.cdt.internal.ui.cview.SelectionTransferDropAdapter;
import org.eclipse.cdt.internal.ui.dnd.CDTViewerDragAdapter;
import org.eclipse.cdt.internal.ui.dnd.DelegatingDropAdapter;
import org.eclipse.cdt.internal.ui.dnd.TransferDragSourceListener;
import org.eclipse.cdt.internal.ui.dnd.TransferDropTargetListener;
import org.eclipse.cdt.internal.ui.search.actions.SelectionSearchGroup; import org.eclipse.cdt.internal.ui.search.actions.SelectionSearchGroup;
import org.eclipse.cdt.internal.ui.util.ProblemTreeViewer; import org.eclipse.cdt.internal.ui.util.ProblemTreeViewer;
import org.eclipse.cdt.internal.ui.viewsupport.DecoratingCLabelProvider; import org.eclipse.cdt.internal.ui.viewsupport.DecoratingCLabelProvider;
@ -41,6 +47,8 @@ import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT; import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.Menu;
@ -53,6 +61,7 @@ import org.eclipse.ui.part.IPageSite;
import org.eclipse.ui.part.Page; import org.eclipse.ui.part.Page;
import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds; import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds;
import org.eclipse.ui.views.contentoutline.IContentOutlinePage; import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
import org.eclipse.ui.views.navigator.LocalSelectionTransfer;
public class CContentOutlinePage extends Page implements IContentOutlinePage, ISelectionChangedListener { public class CContentOutlinePage extends Page implements IContentOutlinePage, ISelectionChangedListener {
private CEditor fEditor; private CEditor fEditor;
@ -237,6 +246,8 @@ public class CContentOutlinePage extends Page implements IContentOutlinePage, IS
treeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS); treeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
treeViewer.addSelectionChangedListener(this); treeViewer.addSelectionChangedListener(this);
initDragAndDrop();
MenuManager manager= new MenuManager(fContextMenuId); MenuManager manager= new MenuManager(fContextMenuId);
manager.setRemoveAllWhenShown(true); manager.setRemoveAllWhenShown(true);
manager.addMenuListener(new IMenuListener() { manager.addMenuListener(new IMenuListener() {
@ -431,4 +442,23 @@ public class CContentOutlinePage extends Page implements IContentOutlinePage, IS
contentUpdated(); contentUpdated();
} }
private void initDragAndDrop() {
int ops= DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
Transfer[] transfers= new Transfer[] {
LocalSelectionTransfer.getInstance()
};
// Drop Adapter
TransferDropTargetListener[] dropListeners= new TransferDropTargetListener[] {
new SelectionTransferDropAdapter(treeViewer)
};
treeViewer.addDropSupport(ops | DND.DROP_DEFAULT, transfers, new DelegatingDropAdapter(dropListeners));
// Drag Adapter
TransferDragSourceListener[] dragListeners= new TransferDragSourceListener[] {
new SelectionTransferDragAdapter(treeViewer)
};
treeViewer.addDragSupport(ops, transfers, new CDTViewerDragAdapter(treeViewer, dragListeners));
}
} }